diff options
| author | Makoto Onuki <omakoto@google.com> | 2019-11-01 22:08:50 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-11-01 22:08:50 +0000 |
| commit | d5d07c8d0c36ae070501aa285866dd02cb347f37 (patch) | |
| tree | c6cbe2fa012f9c6348f944e30ffb8d77b219dfeb /core/java/android | |
| parent | cdc4a55cd1461474aacc6fc3a9b80e74d122a7ba (diff) | |
| parent | 152742f27a52f352c0cab736e6279f5115e27d6b (diff) | |
Merge "Undo the jobscheduler / device idle initialization with callbacks"
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/os/BatteryStats.java | 48 | ||||
| -rw-r--r-- | core/java/android/os/PowerManager.java | 22 |
2 files changed, 19 insertions, 51 deletions
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index fa09cf0bb4e3..3ae1fe63f6cc 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -21,6 +21,7 @@ import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP; import android.annotation.IntDef; import android.annotation.UnsupportedAppUsage; import android.app.ActivityManager; +import android.app.job.JobParameters; import android.content.Context; import android.content.pm.ApplicationInfo; import android.server.ServerProtoEnums; @@ -44,7 +45,6 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.location.gnssmetrics.GnssMetrics; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatteryStatsHelper; -import com.android.internal.util.Preconditions; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -58,7 +58,6 @@ import java.util.Formatter; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.function.Function; /** * A class providing access to battery usage statistics, including information on @@ -419,40 +418,6 @@ public abstract class BatteryStats implements Parcelable { }; /** - * "Job stop reason codes" from the job scheduler subsystem, which we can't refer to from this - * class, so we initialize it from the job scheduler side at runtime using - * {@link #setJobStopReasons}. - */ - private static int[] sJobStopReasonCodes = {0}; - - /** - * A function that converts the "job stop reason codes" to their names. - * - * Similarly to {@link #sJobStopReasonCodes} it's initialized by the job scheduler subsystem - * using {@link #setJobStopReasons}. - */ - private static Function<Integer, String> sJobStopReasonNameConverter = (x) -> "unknown"; - - /** - * Set by the job scheduler subsystem to "push" job stop reasons, and a function that returns - * the "name" of each code. We do it this way to remove a build time dependency from this - * class to the job scheduler framework code. - * - * Note the passed array will be used as-is, without copying. The caller must not change - * the array it passed to it. - * - * @hide - */ - public static void setJobStopReasons(int[] reasonCodes, - Function<Integer, String> jobStopReasonNameConverter) { - Preconditions.checkArgument(reasonCodes.length > 0); - Preconditions.checkArgument(jobStopReasonNameConverter != null); - - sJobStopReasonCodes = reasonCodes; - sJobStopReasonNameConverter = jobStopReasonNameConverter; - } - - /** * State for keeping track of counting information. */ public static abstract class Counter { @@ -4339,15 +4304,16 @@ public abstract class BatteryStats implements Parcelable { } } - final Object[] jobCompletionArgs = new Object[sJobStopReasonCodes.length + 1]; + final int[] jobStopReasonCodes = JobParameters.getJobStopReasonCodes(); + final Object[] jobCompletionArgs = new Object[jobStopReasonCodes.length + 1]; final ArrayMap<String, SparseIntArray> completions = u.getJobCompletionStats(); for (int ic=completions.size()-1; ic>=0; ic--) { SparseIntArray types = completions.valueAt(ic); if (types != null) { jobCompletionArgs[0] = "\"" + completions.keyAt(ic) + "\""; - for (int i = 0; i < sJobStopReasonCodes.length; i++) { - jobCompletionArgs[i + 1] = types.get(sJobStopReasonCodes[i], 0); + for (int i = 0; i < jobStopReasonCodes.length; i++) { + jobCompletionArgs[i + 1] = types.get(jobStopReasonCodes[i], 0); } dumpLine(pw, uid, category, JOB_COMPLETION_DATA, jobCompletionArgs); @@ -5967,7 +5933,7 @@ public abstract class BatteryStats implements Parcelable { pw.print(":"); for (int it=0; it<types.size(); it++) { pw.print(" "); - pw.print(sJobStopReasonNameConverter.apply(types.keyAt(it))); + pw.print(JobParameters.getReasonCodeDescription(types.keyAt(it))); pw.print("("); pw.print(types.valueAt(it)); pw.print("x)"); @@ -7565,7 +7531,7 @@ public abstract class BatteryStats implements Parcelable { proto.write(UidProto.JobCompletion.NAME, completions.keyAt(ic)); - for (int r : sJobStopReasonCodes) { + for (int r : JobParameters.getJobStopReasonCodes()) { long rToken = proto.start(UidProto.JobCompletion.REASON_COUNT); proto.write(UidProto.JobCompletion.ReasonCount.NAME, r); proto.write(UidProto.JobCompletion.ReasonCount.COUNT, types.get(r, 0)); diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java index 794d62e8fd6c..dd1f8c31ebb1 100644 --- a/core/java/android/os/PowerManager.java +++ b/core/java/android/os/PowerManager.java @@ -37,7 +37,6 @@ import com.android.internal.util.Preconditions; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.concurrent.Executor; -import java.util.function.Function; /** * This class gives you control of the power state of the device. @@ -828,13 +827,13 @@ public final class PowerManager { @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) final Handler mHandler; + /** We lazily initialize it.*/ + private DeviceIdleManager mDeviceIdleManager; + IThermalService mThermalService; private final ArrayMap<OnThermalStatusChangedListener, IThermalStatusListener> mListenerMap = new ArrayMap<>(); - private static Function<String, Boolean> sIsIgnoringBatteryOptimizationsCallback = - (packageName) -> false; - /** * {@hide} */ @@ -844,6 +843,14 @@ public final class PowerManager { mHandler = handler; } + private DeviceIdleManager getDeviceIdleManager() { + if (mDeviceIdleManager == null) { + // No need for synchronization; getSystemService() will return the same object anyway. + mDeviceIdleManager = mContext.getSystemService(DeviceIdleManager.class); + } + return mDeviceIdleManager; + } + /** * Gets the minimum supported screen brightness setting. * The screen may be allowed to become dimmer than this value but @@ -1662,12 +1669,7 @@ public final class PowerManager { * {@link android.provider.Settings#ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS}. */ public boolean isIgnoringBatteryOptimizations(String packageName) { - return sIsIgnoringBatteryOptimizationsCallback.apply(packageName); - } - - /** @hide */ - public static void setIsIgnoringBatteryOptimizationsCallback(Function<String, Boolean> f) { - sIsIgnoringBatteryOptimizationsCallback = f; + return getDeviceIdleManager().isApplicationWhitelisted(packageName); } /** |
