diff options
| author | 2018-01-18 23:10:54 +0000 | |
|---|---|---|
| committer | 2018-01-18 23:10:54 +0000 | |
| commit | 5cc9f721ce36d278df4b0f3fe0a685ba221e9360 (patch) | |
| tree | 26fc80021e7520436f3f060c69b9853d161f5041 | |
| parent | 8f09d6ee8fe335ff026d77ea7e61d8d02efb19af (diff) | |
| parent | 12391f22dfe4697d55555ba94d0c5c1155dd546e (diff) | |
Merge "Revert "Add setting/experiment for small battery devices to have""
5 files changed, 35 insertions, 197 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 396c897c7047..956e8f624b17 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -9861,15 +9861,6 @@ public final class Settings { public static final String FORCED_APP_STANDBY_ENABLED = "forced_app_standby_enabled"; /** - * Whether or not to enable Forced App Standby on small battery devices. - * Type: int (0 for false, 1 for true) - * Default: 0 - * @hide - */ - public static final String FORCED_APP_STANDBY_FOR_SMALL_BATTERY_ENABLED - = "forced_app_standby_for_small_battery_enabled"; - - /** * Whether or not Network Watchlist feature is enabled. * Type: int (0 for false, 1 for true) * Default: 0 diff --git a/core/proto/android/server/forceappstandbytracker.proto b/core/proto/android/server/forceappstandbytracker.proto index c9f7d52ae83f..8753bf768321 100644 --- a/core/proto/android/server/forceappstandbytracker.proto +++ b/core/proto/android/server/forceappstandbytracker.proto @@ -41,13 +41,4 @@ message ForceAppStandbyTrackerProto { // Packages that are disallowed OP_RUN_ANY_IN_BACKGROUND. repeated RunAnyInBackgroundRestrictedPackages run_any_in_background_restricted_packages = 5; - - // Whether device is a small battery device - optional bool is_small_battery_device = 6; - - // Whether force app standby for small battery device setting is enabled - optional bool force_all_apps_standby_for_small_battery = 7; - - // Whether device is charging - optional bool is_charging = 8; } diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java index c2ae7760c80e..8da7cedd7ea1 100644 --- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java +++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java @@ -213,7 +213,6 @@ public class SettingsBackupTest { Settings.Global.FANCY_IME_ANIMATIONS, Settings.Global.FORCE_ALLOW_ON_EXTERNAL, Settings.Global.FORCED_APP_STANDBY_ENABLED, - Settings.Global.FORCED_APP_STANDBY_FOR_SMALL_BATTERY_ENABLED, Settings.Global.FSTRIM_MANDATORY_INTERVAL, Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST, Settings.Global.GLOBAL_HTTP_PROXY_HOST, diff --git a/services/core/java/com/android/server/ForceAppStandbyTracker.java b/services/core/java/com/android/server/ForceAppStandbyTracker.java index 45516115b629..a75a3675f7f9 100644 --- a/services/core/java/com/android/server/ForceAppStandbyTracker.java +++ b/services/core/java/com/android/server/ForceAppStandbyTracker.java @@ -26,8 +26,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObserver; -import android.net.Uri; -import android.os.BatteryManager; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -91,9 +89,6 @@ public class ForceAppStandbyTracker { private final MyHandler mHandler; - @VisibleForTesting - FeatureFlagsObserver mFlagsObserver; - /** * Pair of (uid (not user-id), packageName) with OP_RUN_ANY_IN_BACKGROUND *not* allowed. */ @@ -119,32 +114,13 @@ public class ForceAppStandbyTracker { boolean mStarted; @GuardedBy("mLock") - boolean mIsCharging; + boolean mForceAllAppsStandby; // True if device is in extreme battery saver mode @GuardedBy("mLock") - boolean mBatterySaverEnabled; + boolean mForcedAppStandbyEnabled; // True if the forced app standby feature is enabled - /** - * True if the forced app standby is currently enabled - */ - @GuardedBy("mLock") - boolean mForceAllAppsStandby; - - /** - * True if the forced app standby for small battery devices feature is enabled in settings - */ - @GuardedBy("mLock") - boolean mForceAllAppStandbyForSmallBattery; - - /** - * True if the forced app standby feature is enabled in settings - */ - @GuardedBy("mLock") - boolean mForcedAppStandbyEnabled; - - @VisibleForTesting - class FeatureFlagsObserver extends ContentObserver { - FeatureFlagsObserver() { + private class FeatureFlagObserver extends ContentObserver { + FeatureFlagObserver() { super(null); } @@ -152,9 +128,6 @@ public class ForceAppStandbyTracker { mContext.getContentResolver().registerContentObserver( Settings.Global.getUriFor(Settings.Global.FORCED_APP_STANDBY_ENABLED), false, this); - - mContext.getContentResolver().registerContentObserver(Settings.Global.getUriFor( - Settings.Global.FORCED_APP_STANDBY_FOR_SMALL_BATTERY_ENABLED), false, this); } boolean isForcedAppStandbyEnabled() { @@ -162,43 +135,20 @@ public class ForceAppStandbyTracker { Settings.Global.FORCED_APP_STANDBY_ENABLED, 1) == 1; } - boolean isForcedAppStandbyForSmallBatteryEnabled() { - return Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.FORCED_APP_STANDBY_FOR_SMALL_BATTERY_ENABLED, 0) == 1; - } - @Override - public void onChange(boolean selfChange, Uri uri) { - if (Settings.Global.getUriFor(Settings.Global.FORCED_APP_STANDBY_ENABLED).equals(uri)) { - final boolean enabled = isForcedAppStandbyEnabled(); - synchronized (mLock) { - if (mForcedAppStandbyEnabled == enabled) { - return; - } - mForcedAppStandbyEnabled = enabled; - if (DEBUG) { - Slog.d(TAG, - "Forced app standby feature flag changed: " + mForcedAppStandbyEnabled); - } + public void onChange(boolean selfChange) { + final boolean enabled = isForcedAppStandbyEnabled(); + synchronized (mLock) { + if (mForcedAppStandbyEnabled == enabled) { + return; } - mHandler.notifyForcedAppStandbyFeatureFlagChanged(); - } else if (Settings.Global.getUriFor( - Settings.Global.FORCED_APP_STANDBY_FOR_SMALL_BATTERY_ENABLED).equals(uri)) { - final boolean enabled = isForcedAppStandbyForSmallBatteryEnabled(); - synchronized (mLock) { - if (mForceAllAppStandbyForSmallBattery == enabled) { - return; - } - mForceAllAppStandbyForSmallBattery = enabled; - if (DEBUG) { - Slog.d(TAG, "Forced app standby for small battery feature flag changed: " - + mForceAllAppStandbyForSmallBattery); - } - updateForceAllAppStandbyState(); + mForcedAppStandbyEnabled = enabled; + if (DEBUG) { + Slog.d(TAG, + "Forced app standby feature flag changed: " + mForcedAppStandbyEnabled); } - } else { - Slog.w(TAG, "Unexpected feature flag uri encountered: " + uri); } + mHandler.notifyFeatureFlagChanged(); } } @@ -339,11 +289,9 @@ public class ForceAppStandbyTracker { mAppOpsManager = Preconditions.checkNotNull(injectAppOpsManager()); mAppOpsService = Preconditions.checkNotNull(injectIAppOpsService()); mPowerManagerInternal = Preconditions.checkNotNull(injectPowerManagerInternal()); - mFlagsObserver = new FeatureFlagsObserver(); - mFlagsObserver.register(); - mForcedAppStandbyEnabled = mFlagsObserver.isForcedAppStandbyEnabled(); - mForceAllAppStandbyForSmallBattery = - mFlagsObserver.isForcedAppStandbyForSmallBatteryEnabled(); + final FeatureFlagObserver flagObserver = new FeatureFlagObserver(); + flagObserver.register(); + mForcedAppStandbyEnabled = flagObserver.isForcedAppStandbyEnabled(); try { mIActivityManager.registerUidObserver(new UidObserver(), @@ -358,24 +306,16 @@ public class ForceAppStandbyTracker { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_USER_REMOVED); - filter.addAction(Intent.ACTION_BATTERY_CHANGED); mContext.registerReceiver(new MyReceiver(), filter); refreshForcedAppStandbyUidPackagesLocked(); mPowerManagerInternal.registerLowPowerModeObserver( ServiceType.FORCE_ALL_APPS_STANDBY, - (state) -> { - synchronized (mLock) { - mBatterySaverEnabled = state.batterySaverEnabled; - updateForceAllAppStandbyState(); - } - }); + (state) -> updateForceAllAppsStandby(state.batterySaverEnabled)); - mBatterySaverEnabled = mPowerManagerInternal.getLowPowerState( - ServiceType.FORCE_ALL_APPS_STANDBY).batterySaverEnabled; - - updateForceAllAppStandbyState(); + updateForceAllAppsStandby(mPowerManagerInternal.getLowPowerState( + ServiceType.FORCE_ALL_APPS_STANDBY).batterySaverEnabled); } } @@ -400,11 +340,6 @@ public class ForceAppStandbyTracker { return LocalServices.getService(PowerManagerInternal.class); } - @VisibleForTesting - boolean isSmallBatteryDevice() { - return ActivityManager.isSmallBatteryDevice(); - } - /** * Update {@link #mRunAnyRestrictedPackages} with the current app ops state. */ @@ -434,29 +369,18 @@ public class ForceAppStandbyTracker { } } - private void updateForceAllAppStandbyState() { - synchronized (mLock) { - if (mIsCharging) { - toggleForceAllAppsStandbyLocked(false); - } else if (mForceAllAppStandbyForSmallBattery - && isSmallBatteryDevice()) { - toggleForceAllAppsStandbyLocked(true); - } else { - toggleForceAllAppsStandbyLocked(mBatterySaverEnabled); - } - } - } - /** * Update {@link #mForceAllAppsStandby} and notifies the listeners. */ - private void toggleForceAllAppsStandbyLocked(boolean enable) { - if (enable == mForceAllAppsStandby) { - return; - } - mForceAllAppsStandby = enable; + void updateForceAllAppsStandby(boolean enable) { + synchronized (mLock) { + if (enable == mForceAllAppsStandby) { + return; + } + mForceAllAppsStandby = enable; - mHandler.notifyForceAllAppsStandbyChanged(); + mHandler.notifyForceAllAppsStandbyChanged(); + } } private int findForcedAppStandbyUidPackageIndexLocked(int uid, @NonNull String packageName) { @@ -591,13 +515,6 @@ public class ForceAppStandbyTracker { if (userId > 0) { mHandler.doUserRemoved(userId); } - } else if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { - int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); - synchronized (mLock) { - mIsCharging = (status == BatteryManager.BATTERY_STATUS_CHARGING - || status == BatteryManager.BATTERY_STATUS_FULL); - } - updateForceAllAppStandbyState(); } } } @@ -616,7 +533,7 @@ public class ForceAppStandbyTracker { private static final int MSG_TEMP_WHITELIST_CHANGED = 5; private static final int MSG_FORCE_ALL_CHANGED = 6; private static final int MSG_USER_REMOVED = 7; - private static final int MSG_FORCE_APP_STANDBY_FEATURE_FLAG_CHANGED = 8; + private static final int MSG_FEATURE_FLAG_CHANGED = 8; public MyHandler(Looper looper) { super(looper); @@ -646,8 +563,8 @@ public class ForceAppStandbyTracker { obtainMessage(MSG_FORCE_ALL_CHANGED).sendToTarget(); } - public void notifyForcedAppStandbyFeatureFlagChanged() { - obtainMessage(MSG_FORCE_APP_STANDBY_FEATURE_FLAG_CHANGED).sendToTarget(); + public void notifyFeatureFlagChanged() { + obtainMessage(MSG_FEATURE_FLAG_CHANGED).sendToTarget(); } public void doUserRemoved(int userId) { @@ -701,7 +618,7 @@ public class ForceAppStandbyTracker { l.onForceAllAppsStandbyChanged(sender); } return; - case MSG_FORCE_APP_STANDBY_FEATURE_FLAG_CHANGED: + case MSG_FEATURE_FLAG_CHANGED: // Feature flag for forced app standby changed. final boolean unblockAlarms; synchronized (mLock) { @@ -925,18 +842,6 @@ public class ForceAppStandbyTracker { pw.println(isForceAllAppsStandbyEnabled()); pw.print(indent); - pw.print("Small Battery Device: "); - pw.println(isSmallBatteryDevice()); - - pw.print(indent); - pw.print("Force all apps standby for small battery device: "); - pw.println(mForceAllAppStandbyForSmallBattery); - - pw.print(indent); - pw.print("Charging: "); - pw.println(mIsCharging); - - pw.print(indent); pw.print("Foreground uids: ["); String sep = ""; @@ -975,11 +880,6 @@ public class ForceAppStandbyTracker { final long token = proto.start(fieldId); proto.write(ForceAppStandbyTrackerProto.FORCE_ALL_APPS_STANDBY, mForceAllAppsStandby); - proto.write(ForceAppStandbyTrackerProto.IS_SMALL_BATTERY_DEVICE, - isSmallBatteryDevice()); - proto.write(ForceAppStandbyTrackerProto.FORCE_ALL_APPS_STANDBY_FOR_SMALL_BATTERY, - mForceAllAppStandbyForSmallBattery); - proto.write(ForceAppStandbyTrackerProto.IS_CHARGING, mIsCharging); for (int i = 0; i < mForegroundUids.size(); i++) { if (mForegroundUids.valueAt(i)) { diff --git a/services/tests/servicestests/src/com/android/server/ForceAppStandbyTrackerTest.java b/services/tests/servicestests/src/com/android/server/ForceAppStandbyTrackerTest.java index 6a21931e0418..66d0da13fff1 100644 --- a/services/tests/servicestests/src/com/android/server/ForceAppStandbyTrackerTest.java +++ b/services/tests/servicestests/src/com/android/server/ForceAppStandbyTrackerTest.java @@ -42,7 +42,6 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.os.BatteryManager; import android.os.Handler; import android.os.Looper; import android.os.PowerManager.ServiceType; @@ -51,17 +50,13 @@ import android.os.PowerSaveState; import android.os.Process; import android.os.RemoteException; import android.os.UserHandle; -import android.provider.Settings; -import android.provider.Settings.Global; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; -import android.test.mock.MockContentResolver; import android.util.ArraySet; import android.util.Pair; import com.android.internal.app.IAppOpsCallback; import com.android.internal.app.IAppOpsService; -import com.android.internal.util.test.FakeSettingsProvider; import com.android.server.ForceAppStandbyTracker.Listener; import org.junit.Before; @@ -107,9 +102,6 @@ public class ForceAppStandbyTrackerTest { PowerManagerInternal injectPowerManagerInternal() { return mMockPowerManagerInternal; } - - @Override - boolean isSmallBatteryDevice() { return mIsSmallBatteryDevice; }; } private static final int UID_1 = Process.FIRST_APPLICATION_UID + 1; @@ -145,11 +137,7 @@ public class ForceAppStandbyTrackerTest { private Consumer<PowerSaveState> mPowerSaveObserver; private BroadcastReceiver mReceiver; - private MockContentResolver mMockContentResolver; - private FakeSettingsProvider mFakeSettingsProvider; - private boolean mPowerSaveMode; - private boolean mIsSmallBatteryDevice; private final ArraySet<Pair<Integer, String>> mRestrictedPackages = new ArraySet(); @@ -186,17 +174,13 @@ public class ForceAppStandbyTrackerTest { } private void callStart(ForceAppStandbyTrackerTestable instance) throws RemoteException { + // Set up functions that start() calls. when(mMockPowerManagerInternal.getLowPowerState(eq(ServiceType.FORCE_ALL_APPS_STANDBY))) .thenAnswer(inv -> getPowerSaveState()); when(mMockAppOpsManager.getPackagesForOps( any(int[].class) - )).thenAnswer(inv -> new ArrayList<AppOpsManager.PackageOps>()); - - mMockContentResolver = new MockContentResolver(); - mFakeSettingsProvider = new FakeSettingsProvider(); - when(mMockContext.getContentResolver()).thenReturn(mMockContentResolver); - mMockContentResolver.addProvider(Settings.AUTHORITY, mFakeSettingsProvider); + )).thenAnswer(inv -> new ArrayList<AppOpsManager.PackageOps>()); // Call start. instance.start(); @@ -224,6 +208,7 @@ public class ForceAppStandbyTrackerTest { verify(mMockPowerManagerInternal).registerLowPowerModeObserver( eq(ServiceType.FORCE_ALL_APPS_STANDBY), powerSaveObserverCaptor.capture()); + verify(mMockContext).registerReceiver( receiverCaptor.capture(), any(IntentFilter.class)); @@ -236,7 +221,6 @@ public class ForceAppStandbyTrackerTest { assertNotNull(mAppOpsCallback); assertNotNull(mPowerSaveObserver); assertNotNull(mReceiver); - assertNotNull(instance.mFlagsObserver); } private void setAppOps(int uid, String packageName, boolean restrict) throws RemoteException { @@ -838,33 +822,6 @@ public class ForceAppStandbyTrackerTest { assertTrue(instance.isRunAnyInBackgroundAppOpsAllowed(UID_10_2, PACKAGE_2)); } - @Test - public void testSmallBatteryAndCharging() throws Exception { - // This is a small battery device - mIsSmallBatteryDevice = true; - - final ForceAppStandbyTrackerTestable instance = newInstance(); - callStart(instance); - assertFalse(instance.isForceAllAppsStandbyEnabled()); - - // Setting/experiment for all app standby for small battery is enabled - Global.putInt(mMockContentResolver, Global.FORCED_APP_STANDBY_FOR_SMALL_BATTERY_ENABLED, 1); - instance.mFlagsObserver.onChange(true, - Global.getUriFor(Global.FORCED_APP_STANDBY_FOR_SMALL_BATTERY_ENABLED)); - assertTrue(instance.isForceAllAppsStandbyEnabled()); - - // When battery is charging, force app standby is disabled - Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); - intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_CHARGING); - mReceiver.onReceive(mMockContext, intent); - assertFalse(instance.isForceAllAppsStandbyEnabled()); - - // When battery stops charging, force app standby is enabled - intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_DISCHARGING); - mReceiver.onReceive(mMockContext, intent); - assertTrue(instance.isForceAllAppsStandbyEnabled()); - } - static int[] array(int... appIds) { Arrays.sort(appIds); return appIds; |