diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 64bef730cb8..c88639f39f1 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -302,6 +302,26 @@ android:value="true" /> + + + + + + + + + + diff --git a/res/values/strings.xml b/res/values/strings.xml index a33a6bca061..8e3b138e926 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -13370,8 +13370,6 @@ No SIM Network preferences - - Connect to public networks network connection, internet, wireless, data, wifi, wi-fi, wi fi, cellular, mobile, cell carrier, 4g, 3g, 2g, lte diff --git a/res/xml/network_provider_settings.xml b/res/xml/network_provider_settings.xml index 9e8befa4cb1..9cab9241534 100644 --- a/res/xml/network_provider_settings.xml +++ b/res/xml/network_provider_settings.xml @@ -70,7 +70,6 @@ diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index 404207ddb7f..cc9542b2dd4 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -90,6 +90,8 @@ public class Settings extends SettingsActivity { public static class WifiSettingsActivity extends SettingsActivity { /* empty */ } public static class WifiSettings2Activity extends SettingsActivity { /* empty */ } public static class NetworkProviderSettingsActivity extends SettingsActivity { /* empty */ } + /** Activity for the Wi-Fi network details settings. */ + public static class WifiDetailsSettingsActivity extends SettingsActivity { /* empty */ } public static class WifiP2pSettingsActivity extends SettingsActivity { /* empty */ } public static class AvailableVirtualKeyboardActivity extends SettingsActivity { /* empty */ } public static class KeyboardLayoutPickerActivity extends SettingsActivity { /* empty */ } diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java index d0fb7abaa73..458aadb87f2 100644 --- a/src/com/android/settings/core/gateway/SettingsGateway.java +++ b/src/com/android/settings/core/gateway/SettingsGateway.java @@ -159,6 +159,7 @@ import com.android.settings.wifi.WifiInfo; import com.android.settings.wifi.WifiSettings; import com.android.settings.wifi.calling.WifiCallingDisclaimerFragment; import com.android.settings.wifi.calling.WifiCallingSettings; +import com.android.settings.wifi.details.WifiNetworkDetailsFragment; import com.android.settings.wifi.p2p.WifiP2pSettings; import com.android.settings.wifi.savedaccesspoints2.SavedAccessPointsWifiSettings2; import com.android.settings.wifi.tether.WifiTetherSettings; @@ -173,6 +174,7 @@ public class SettingsGateway { AdvancedConnectedDeviceDashboardFragment.class.getName(), CreateShortcut.class.getName(), WifiSettings.class.getName(), + WifiNetworkDetailsFragment.class.getName(), ConfigureWifiSettings.class.getName(), SavedAccessPointsWifiSettings2.class.getName(), AllInOneTetherSettings.class.getName(), diff --git a/src/com/android/settings/fuelgauge/BatteryBackupHelper.java b/src/com/android/settings/fuelgauge/BatteryBackupHelper.java index eebfaf7d360..d35fc6483bf 100644 --- a/src/com/android/settings/fuelgauge/BatteryBackupHelper.java +++ b/src/com/android/settings/fuelgauge/BatteryBackupHelper.java @@ -37,6 +37,8 @@ import android.util.Log; import androidx.annotation.VisibleForTesting; +import com.android.settingslib.fuelgauge.PowerAllowlistBackend; + import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -63,6 +65,8 @@ public final class BatteryBackupHelper implements BackupHelper { static final String KEY_FULL_POWER_LIST = "full_power_list"; static final String KEY_OPTIMIZATION_LIST = "optimization_mode_list"; + @VisibleForTesting + PowerAllowlistBackend mPowerAllowlistBackend; @VisibleForTesting IDeviceIdleController mIDeviceIdleController; @VisibleForTesting @@ -127,6 +131,7 @@ public final class BatteryBackupHelper implements BackupHelper { Log.w(TAG, "no data found in the getInstalledApplications()"); return; } + int backupCount = 0; final StringBuilder builder = new StringBuilder(); final AppOpsManager appOps = mContext.getSystemService(AppOpsManager.class); // Converts application into the AppUsageState. @@ -136,20 +141,22 @@ public final class BatteryBackupHelper implements BackupHelper { @BatteryOptimizeUtils.OptimizationMode final int optimizationMode = BatteryOptimizeUtils.getAppOptimizationMode( mode, allowlistedApps.contains(info.packageName)); - // Ignores default optimized or unknown state. + // Ignores default optimized/unknown state or system/default apps. if (optimizationMode == BatteryOptimizeUtils.MODE_OPTIMIZED - || optimizationMode == BatteryOptimizeUtils.MODE_UNKNOWN) { + || optimizationMode == BatteryOptimizeUtils.MODE_UNKNOWN + || isSystemOrDefaultApp(info.packageName)) { continue; } final String packageOptimizeMode = info.packageName + DELIMITER_MODE + optimizationMode; builder.append(packageOptimizeMode + DELIMITER); debugLog(packageOptimizeMode); + backupCount++; } writeBackupData(data, KEY_OPTIMIZATION_LIST, builder.toString()); - Log.d(TAG, String.format("backup getInstalledApplications() size=%d in %d/ms", - applications.size(), (System.currentTimeMillis() - timestamp))); + Log.d(TAG, String.format("backup getInstalledApplications():%d count=%d in %d/ms", + applications.size(), backupCount, (System.currentTimeMillis() - timestamp))); } // Provides an opportunity to inject mock IDeviceIdleController for testing. @@ -170,6 +177,20 @@ public final class BatteryBackupHelper implements BackupHelper { return mIPackageManager; } + private PowerAllowlistBackend getPowerAllowlistBackend() { + if (mPowerAllowlistBackend != null) { + return mPowerAllowlistBackend; + } + mPowerAllowlistBackend = PowerAllowlistBackend.getInstance(mContext); + return mPowerAllowlistBackend; + } + + private boolean isSystemOrDefaultApp(String packageName) { + final PowerAllowlistBackend powerAllowlistBackend = getPowerAllowlistBackend(); + return powerAllowlistBackend.isSysAllowlisted(packageName) + || powerAllowlistBackend.isDefaultActiveApp(packageName); + } + private List getInstalledApplications() { final List applications = new ArrayList<>(); final UserManager um = mContext.getSystemService(UserManager.class); diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index fefae9ee98f..88211ad17ed 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -71,7 +71,7 @@ import com.android.settings.wifi.WifiConnectListener; import com.android.settings.wifi.WifiDialog2; import com.android.settings.wifi.WifiPickerTrackerHelper; import com.android.settings.wifi.WifiUtils; -import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2; +import com.android.settings.wifi.details.WifiNetworkDetailsFragment; import com.android.settings.wifi.dpp.WifiDppUtils; import com.android.settingslib.HelpUtils; import com.android.settingslib.RestrictedLockUtils; @@ -929,11 +929,11 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment : context.getText(R.string.pref_title_network_details); final Bundle bundle = new Bundle(); - bundle.putString(WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY, wifiEntry.getKey()); + bundle.putString(WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY, wifiEntry.getKey()); new SubSettingLauncher(context) .setTitleText(title) - .setDestination(WifiNetworkDetailsFragment2.class.getName()) + .setDestination(WifiNetworkDetailsFragment.class.getName()) .setArguments(bundle) .setSourceMetricsCategory(getMetricsCategory()) .launch(); @@ -966,12 +966,10 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment @VisibleForTesting void setAdditionalSettingsSummaries() { - if (!FeatureFlagUtils.isEnabled(getContext(), FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { - mConfigureWifiSettingsPreference.setSummary(getString( - isWifiWakeupEnabled() - ? R.string.wifi_configure_settings_preference_summary_wakeup_on - : R.string.wifi_configure_settings_preference_summary_wakeup_off)); - } + mConfigureWifiSettingsPreference.setSummary(getString( + isWifiWakeupEnabled() + ? R.string.wifi_configure_settings_preference_summary_wakeup_on + : R.string.wifi_configure_settings_preference_summary_wakeup_off)); final int numSavedNetworks = mWifiPickerTracker.getNumSavedNetworks(); final int numSavedSubscriptions = mWifiPickerTracker.getNumSavedSubscriptions(); @@ -1184,7 +1182,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment private void launchConfigNewNetworkFragment(WifiEntry wifiEntry) { final Bundle bundle = new Bundle(); - bundle.putString(WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY, + bundle.putString(WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY, wifiEntry.getKey()); new SubSettingLauncher(getContext()) .setTitleText(wifiEntry.getTitle()) diff --git a/src/com/android/settings/wifi/ConfigureWifiEntryFragment.java b/src/com/android/settings/wifi/ConfigureWifiEntryFragment.java index d2f50903698..469ca1dd9e7 100644 --- a/src/com/android/settings/wifi/ConfigureWifiEntryFragment.java +++ b/src/com/android/settings/wifi/ConfigureWifiEntryFragment.java @@ -38,7 +38,7 @@ import androidx.annotation.VisibleForTesting; import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; import com.android.settings.overlay.FeatureFactory; -import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2; +import com.android.settings.wifi.details.WifiNetworkDetailsFragment; import com.android.wifitrackerlib.NetworkDetailsTracker; import com.android.wifitrackerlib.WifiEntry; @@ -238,6 +238,6 @@ public class ConfigureWifiEntryFragment extends InstrumentedFragment implements MAX_SCAN_AGE_MILLIS, SCAN_INTERVAL_MILLIS, getArguments().getString( - WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY)); + WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY)); } } diff --git a/src/com/android/settings/wifi/WifiConnectionPreferenceController.java b/src/com/android/settings/wifi/WifiConnectionPreferenceController.java index 3b2669cefda..fc2f8f15415 100644 --- a/src/com/android/settings/wifi/WifiConnectionPreferenceController.java +++ b/src/com/android/settings/wifi/WifiConnectionPreferenceController.java @@ -34,7 +34,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.SubSettingLauncher; import com.android.settings.overlay.FeatureFactory; -import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2; +import com.android.settings.wifi.details.WifiNetworkDetailsFragment; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.wifi.WifiEntryPreference; @@ -165,11 +165,11 @@ public class WifiConnectionPreferenceController extends AbstractPreferenceContro mPreference.setOrder(order); mPreference.setOnPreferenceClickListener(pref -> { final Bundle args = new Bundle(); - args.putString(WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY, + args.putString(WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY, wifiEntry.getKey()); new SubSettingLauncher(mPrefContext) .setTitleRes(R.string.pref_title_network_details) - .setDestination(WifiNetworkDetailsFragment2.class.getName()) + .setDestination(WifiNetworkDetailsFragment.class.getName()) .setArguments(args) .setSourceMetricsCategory(mMetricsCategory) .launch(); diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 59f65041c6e..c4b4d5928d1 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -67,7 +67,7 @@ import com.android.settings.location.WifiScanningFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.MainSwitchBarController; -import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2; +import com.android.settings.wifi.details.WifiNetworkDetailsFragment; import com.android.settings.wifi.dpp.WifiDppUtils; import com.android.settingslib.HelpUtils; import com.android.settingslib.RestrictedLockUtils; @@ -844,11 +844,11 @@ public class WifiSettings extends RestrictedSettingsFragment : context.getText(R.string.pref_title_network_details); final Bundle bundle = new Bundle(); - bundle.putString(WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY, wifiEntry.getKey()); + bundle.putString(WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY, wifiEntry.getKey()); new SubSettingLauncher(context) .setTitleText(title) - .setDestination(WifiNetworkDetailsFragment2.class.getName()) + .setDestination(WifiNetworkDetailsFragment.class.getName()) .setArguments(bundle) .setSourceMetricsCategory(getMetricsCategory()) .launch(); @@ -1121,7 +1121,7 @@ public class WifiSettings extends RestrictedSettingsFragment private void launchConfigNewNetworkFragment(WifiEntry wifiEntry) { final Bundle bundle = new Bundle(); - bundle.putString(WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY, + bundle.putString(WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY, wifiEntry.getKey()); new SubSettingLauncher(getContext()) .setTitleText(wifiEntry.getTitle()) diff --git a/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java similarity index 93% rename from src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java rename to src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java index 6bc510d6b16..dd0c20a4765 100644 --- a/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java +++ b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.settings.wifi.details2; +package com.android.settings.wifi.details; import static com.android.settings.wifi.WifiSettings.WIFI_DIALOG_ID; @@ -45,6 +45,13 @@ import com.android.settings.dashboard.RestrictedDashboardFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.wifi.WifiConfigUiBase2; import com.android.settings.wifi.WifiDialog2; +import com.android.settings.wifi.details2.AddDevicePreferenceController2; +import com.android.settings.wifi.details2.WifiAutoConnectPreferenceController2; +import com.android.settings.wifi.details2.WifiDetailPreferenceController2; +import com.android.settings.wifi.details2.WifiMeteredPreferenceController2; +import com.android.settings.wifi.details2.WifiPrivacyPreferenceController2; +import com.android.settings.wifi.details2.WifiSecondSummaryController2; +import com.android.settings.wifi.details2.WifiSubscriptionDetailPreferenceController2; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.RestrictedLockUtilsInternal; @@ -63,10 +70,10 @@ import java.util.List; *

The key of {@link WifiEntry} should be saved to the intent Extras when launching this class * in order to properly render this page. */ -public class WifiNetworkDetailsFragment2 extends RestrictedDashboardFragment implements +public class WifiNetworkDetailsFragment extends RestrictedDashboardFragment implements WifiDialog2.WifiDialog2Listener { - private static final String TAG = "WifiNetworkDetailsFrg2"; + private static final String TAG = "WifiNetworkDetailsFrg"; // Key of a Bundle to save/restore the selected WifiEntry public static final String KEY_CHOSEN_WIFIENTRY_KEY = "key_chosen_wifientry_key"; @@ -86,7 +93,7 @@ public class WifiNetworkDetailsFragment2 extends RestrictedDashboardFragment imp @VisibleForTesting List mControllers; - public WifiNetworkDetailsFragment2() { + public WifiNetworkDetailsFragment() { super(UserManager.DISALLOW_CONFIG_WIFI); } diff --git a/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java b/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java index 7bf680da103..f9d0db07b25 100644 --- a/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java +++ b/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java @@ -76,6 +76,7 @@ import com.android.settings.widget.EntityHeaderController; import com.android.settings.wifi.WifiDialog2; import com.android.settings.wifi.WifiDialog2.WifiDialog2Listener; import com.android.settings.wifi.WifiUtils; +import com.android.settings.wifi.details.WifiNetworkDetailsFragment; import com.android.settings.wifi.dpp.WifiDppUtils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; @@ -1099,7 +1100,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle refreshPage(); // Refresh the Preferences in fragment. - ((WifiNetworkDetailsFragment2) mFragment).refreshPreferences(); + ((WifiNetworkDetailsFragment) mFragment).refreshPreferences(); } /** diff --git a/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsWifiSettings2.java b/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsWifiSettings2.java index e579ad73dbb..1443e3247cf 100644 --- a/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsWifiSettings2.java +++ b/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsWifiSettings2.java @@ -39,7 +39,7 @@ import com.android.settings.R; import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.wifi.WifiSettings; -import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2; +import com.android.settings.wifi.details.WifiNetworkDetailsFragment; import com.android.wifitrackerlib.SavedNetworkTracker; import java.time.Clock; @@ -126,7 +126,7 @@ public class SavedAccessPointsWifiSettings2 extends DashboardFragment } /** - * Shows {@link WifiNetworkDetailsFragment2} for assigned key of {@link WifiEntry}. + * Shows {@link WifiNetworkDetailsFragment} for assigned key of {@link WifiEntry}. */ public void showWifiPage(@NonNull String key, CharSequence title) { removeDialog(WifiSettings.WIFI_DIALOG_ID); @@ -137,11 +137,11 @@ public class SavedAccessPointsWifiSettings2 extends DashboardFragment } final Bundle bundle = new Bundle(); - bundle.putString(WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY, key); + bundle.putString(WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY, key); new SubSettingLauncher(getContext()) .setTitleText(title) - .setDestination(WifiNetworkDetailsFragment2.class.getName()) + .setDestination(WifiNetworkDetailsFragment.class.getName()) .setArguments(bundle) .setSourceMetricsCategory(getMetricsCategory()) .launch(); diff --git a/src/com/android/settings/wifi/slice/WifiSlice.java b/src/com/android/settings/wifi/slice/WifiSlice.java index 75d2c669954..f6604dd6f6e 100644 --- a/src/com/android/settings/wifi/slice/WifiSlice.java +++ b/src/com/android/settings/wifi/slice/WifiSlice.java @@ -50,7 +50,7 @@ import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.wifi.WifiDialogActivity; import com.android.settings.wifi.WifiSettings; import com.android.settings.wifi.WifiUtils; -import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2; +import com.android.settings.wifi.details.WifiNetworkDetailsFragment; import com.android.wifitrackerlib.WifiEntry; import java.util.Arrays; @@ -200,11 +200,11 @@ public class WifiSlice implements CustomSliceable { if (wifiSliceItem.getConnectedState() != WifiEntry.CONNECTED_STATE_DISCONNECTED) { final Bundle bundle = new Bundle(); - bundle.putString(WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY, + bundle.putString(WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY, wifiSliceItem.getKey()); final Intent intent = new SubSettingLauncher(mContext) .setTitleRes(R.string.pref_title_network_details) - .setDestination(WifiNetworkDetailsFragment2.class.getName()) + .setDestination(WifiNetworkDetailsFragment.class.getName()) .setArguments(bundle) .setSourceMetricsCategory(SettingsEnums.WIFI) .toIntent(); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java index 90e9405ba03..f86d7a14e0e 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java @@ -40,6 +40,8 @@ import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; +import com.android.settingslib.fuelgauge.PowerAllowlistBackend; + import java.util.Arrays; import java.util.List; @@ -59,6 +61,9 @@ import org.robolectric.annotation.Resetter; @RunWith(RobolectricTestRunner.class) @Config(shadows = {BatteryBackupHelperTest.ShadowUserHandle.class}) public final class BatteryBackupHelperTest { + private static final String PACKAGE_NAME1 = "com.android.testing.1"; + private static final String PACKAGE_NAME2 = "com.android.testing.2"; + private static final String PACKAGE_NAME3 = "com.android.testing.3"; private Context mContext; private BatteryBackupHelper mBatteryBackupHelper; @@ -73,6 +78,8 @@ public final class BatteryBackupHelperTest { private AppOpsManager mAppOpsManager; @Mock private UserManager mUserManager; + @Mock + private PowerAllowlistBackend mPowerAllowlistBackend; @Before public void setUp() { @@ -84,6 +91,7 @@ public final class BatteryBackupHelperTest { mBatteryBackupHelper = new BatteryBackupHelper(mContext); mBatteryBackupHelper.mIDeviceIdleController = mDeviceController; mBatteryBackupHelper.mIPackageManager = mIPackageManager; + mBatteryBackupHelper.mPowerAllowlistBackend = mPowerAllowlistBackend; } @After @@ -172,16 +180,49 @@ public final class BatteryBackupHelperTest { @Test public void backupOptimizationMode_backupOptimizationMode() throws Exception { - final String packageName1 = "com.android.testing.1"; - final String packageName2 = "com.android.testing.2"; - final String packageName3 = "com.android.testing.3"; - final List allowlistedApps = Arrays.asList(packageName1); - createTestingData(packageName1, packageName2, packageName3); + final List allowlistedApps = Arrays.asList(PACKAGE_NAME1); + createTestingData(PACKAGE_NAME1, PACKAGE_NAME2, PACKAGE_NAME3); mBatteryBackupHelper.backupOptimizationMode(mBackupDataOutput, allowlistedApps); // 2 for UNRESTRICTED mode and 1 for RESTRICTED mode. - final String expectedResult = packageName1 + "|2," + packageName2 + "|1,"; + final String expectedResult = PACKAGE_NAME1 + "|2," + PACKAGE_NAME2 + "|1,"; + verifyBackupData(expectedResult); + } + + @Test + public void backupOptimizationMode_backupOptimizationModeAndIgnoreSystemApp() + throws Exception { + final List allowlistedApps = Arrays.asList(PACKAGE_NAME1); + createTestingData(PACKAGE_NAME1, PACKAGE_NAME2, PACKAGE_NAME3); + // Sets "com.android.testing.1" as system app. + doReturn(true).when(mPowerAllowlistBackend).isSysAllowlisted(PACKAGE_NAME1); + doReturn(false).when(mPowerAllowlistBackend).isDefaultActiveApp(anyString()); + + mBatteryBackupHelper.backupOptimizationMode(mBackupDataOutput, allowlistedApps); + + // "com.android.testing.2" for RESTRICTED mode. + final String expectedResult = PACKAGE_NAME2 + "|1,"; + verifyBackupData(expectedResult); + } + + @Test + public void backupOptimizationMode_backupOptimizationModeAndIgnoreDefaultApp() + throws Exception { + final List allowlistedApps = Arrays.asList(PACKAGE_NAME1); + createTestingData(PACKAGE_NAME1, PACKAGE_NAME2, PACKAGE_NAME3); + // Sets "com.android.testing.1" as device default app. + doReturn(true).when(mPowerAllowlistBackend).isDefaultActiveApp(PACKAGE_NAME1); + doReturn(false).when(mPowerAllowlistBackend).isSysAllowlisted(anyString()); + + mBatteryBackupHelper.backupOptimizationMode(mBackupDataOutput, allowlistedApps); + + // "com.android.testing.2" for RESTRICTED mode. + final String expectedResult = PACKAGE_NAME2 + "|1,"; + verifyBackupData(expectedResult); + } + + private void verifyBackupData(String expectedResult) throws Exception { final byte[] expectedBytes = expectedResult.getBytes(); verify(mBackupDataOutput).writeEntityHeader( BatteryBackupHelper.KEY_OPTIMIZATION_LIST, expectedBytes.length); diff --git a/tests/robotests/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2Test.java b/tests/robotests/src/com/android/settings/wifi/details/WifiNetworkDetailsFragmentTest.java similarity index 91% rename from tests/robotests/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2Test.java rename to tests/robotests/src/com/android/settings/wifi/details/WifiNetworkDetailsFragmentTest.java index fdd6295ab65..4f742549f24 100644 --- a/tests/robotests/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2Test.java +++ b/tests/robotests/src/com/android/settings/wifi/details/WifiNetworkDetailsFragmentTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020 The Android Open Source Project + * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.wifi.details2; +package com.android.settings.wifi.details; import static com.android.settings.wifi.WifiSettings.WIFI_DIALOG_ID; @@ -54,9 +54,9 @@ import org.robolectric.RuntimeEnvironment; import java.util.ArrayList; @RunWith(RobolectricTestRunner.class) -public class WifiNetworkDetailsFragment2Test { +public class WifiNetworkDetailsFragmentTest { - final String TEST_PREFERENCE_KEY = "TEST_PREFERENCE_KEY"; + private static final String TEST_PREFERENCE_KEY = "TEST_PREFERENCE_KEY"; @Mock WifiEntry mWifiEntry; @@ -64,7 +64,7 @@ public class WifiNetworkDetailsFragment2Test { NetworkDetailsTracker mNetworkDetailsTracker; @Mock Menu mMenu; - private WifiNetworkDetailsFragment2 mFragment; + private WifiNetworkDetailsFragment mFragment; @Before public void setUp() { @@ -72,7 +72,7 @@ public class WifiNetworkDetailsFragment2Test { doReturn(mWifiEntry).when(mNetworkDetailsTracker).getWifiEntry(); doReturn(true).when(mWifiEntry).isSaved(); - mFragment = new WifiNetworkDetailsFragment2(); + mFragment = new WifiNetworkDetailsFragment(); mFragment.mNetworkDetailsTracker = mNetworkDetailsTracker; } @@ -165,8 +165,8 @@ public class WifiNetworkDetailsFragment2Test { verify(controller).displayPreference(screen); } - // Fake WifiNetworkDetailsFragment2 to override the protected method as public. - public class FakeFragment extends WifiNetworkDetailsFragment2 { + // Fake WifiNetworkDetailsFragment to override the protected method as public. + public static class FakeFragment extends WifiNetworkDetailsFragment { @Override public void addPreferenceController(AbstractPreferenceController controller) { @@ -179,7 +179,7 @@ public class WifiNetworkDetailsFragment2Test { } } - public class TestController extends BasePreferenceController { + public static class TestController extends BasePreferenceController { public TestController() { super(RuntimeEnvironment.application, TEST_PREFERENCE_KEY); diff --git a/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java b/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java index 7354d85bc7a..6a098bc9ead 100644 --- a/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java +++ b/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java @@ -76,6 +76,7 @@ import com.android.settings.Utils; import com.android.settings.testutils.shadow.ShadowDevicePolicyManager; import com.android.settings.testutils.shadow.ShadowEntityHeaderController; import com.android.settings.widget.EntityHeaderController; +import com.android.settings.wifi.details.WifiNetworkDetailsFragment; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.utils.StringUtil; @@ -145,7 +146,7 @@ public class WifiDetailPreferenceController2Test { @Mock private WifiInfo mMockWifiInfo; @Mock - private WifiNetworkDetailsFragment2 mMockFragment; + private WifiNetworkDetailsFragment mMockFragment; @Mock private WifiManager mMockWifiManager; @Mock