OSDN Git Service

Make auto Wi-Fi summary text consistent with feature availability.
authorStephen Chen <stewchen@google.com>
Fri, 1 Sep 2017 18:18:36 +0000 (11:18 -0700)
committerStephen Chen <stewchen@google.com>
Tue, 5 Sep 2017 20:51:58 +0000 (13:51 -0700)
"Turn Wi-Fi on automatically" feature is disabled when airplane mode or
battery saver mode is enabled, when Wi-Fi scanning is disabled, or when
network recommendations are disabled / scorer unset. This change
captures these negative cases in the summary text.

Bug: 65085700
Test: make ROBOTEST_FILTER=WifiWakeupPreferenceControllerTest
RunSettingsRoboTests -j40
Change-Id: I2f2d22b5bef3ad03a28d34e79a27e6545cac557f

src/com/android/settings/wifi/ConfigureWifiSettings.java
src/com/android/settings/wifi/WifiSettings.java
src/com/android/settings/wifi/WifiWakeupPreferenceController.java
tests/robotests/src/com/android/settings/wifi/WifiWakeupPreferenceControllerTest.java

index aeee6ff..43f25f1 100644 (file)
@@ -78,7 +78,7 @@ public class ConfigureWifiSettings extends DashboardFragment {
         final NetworkScoreManagerWrapper networkScoreManagerWrapper =
                 new NetworkScoreManagerWrapper(context.getSystemService(NetworkScoreManager.class));
         mWifiWakeupPreferenceController = new WifiWakeupPreferenceController(
-                context, getLifecycle(), networkScoreManagerWrapper);
+                context, getLifecycle());
         mUseOpenWifiPreferenceController = new UseOpenWifiPreferenceController(context, this,
                 networkScoreManagerWrapper, getLifecycle());
         final WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
index f0457e6..f99d13f 100644 (file)
@@ -38,6 +38,7 @@ import android.net.wifi.WpsInfo;
 import android.nfc.NfcAdapter;
 import android.os.Bundle;
 import android.os.HandlerThread;
+import android.os.PowerManager;
 import android.os.Process;
 import android.provider.Settings;
 import android.support.annotation.VisibleForTesting;
@@ -910,9 +911,8 @@ public class WifiSettings extends RestrictedSettingsFragment
                 getContentResolver(), Settings.Global.WIFI_WAKEUP_AVAILABLE, defaultWakeupAvailable)
                 == 1;
         if (wifiWakeupAvailable) {
-            boolean wifiWakeupEnabled = Settings.Global.getInt(
-                    getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED, 0) == 1;
-            mConfigureWifiSettingsPreference.setSummary(getString(wifiWakeupEnabled
+            mConfigureWifiSettingsPreference.setSummary(getString(
+                    isWifiWakeupEnabled()
                     ? R.string.wifi_configure_settings_preference_summary_wakeup_on
                     : R.string.wifi_configure_settings_preference_summary_wakeup_off));
         }
@@ -927,6 +927,20 @@ public class WifiSettings extends RestrictedSettingsFragment
         }
     }
 
+    private boolean isWifiWakeupEnabled() {
+        PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
+        ContentResolver contentResolver = getContentResolver();
+        return Settings.Global.getInt(contentResolver,
+                        Settings.Global.WIFI_WAKEUP_ENABLED, 0) == 1
+                && Settings.Global.getInt(contentResolver,
+                        Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1
+                && Settings.Global.getInt(contentResolver,
+                        Settings.Global.AIRPLANE_MODE_ON, 0) == 0
+                && Settings.Global.getInt(contentResolver,
+                        Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED, 0) == 1
+                && !powerManager.isPowerSaveMode();
+    }
+
     private void setOffMessage() {
         final CharSequence title = getText(R.string.wifi_empty_list_wifi_off);
         // Don't use WifiManager.isScanAlwaysAvailable() to check the Wi-Fi scanning mode. Instead,
index 0017a5d..efb8aa6 100644 (file)
@@ -44,13 +44,10 @@ public class WifiWakeupPreferenceController extends AbstractPreferenceController
         implements PreferenceControllerMixin, LifecycleObserver, OnResume, OnPause {
 
     private static final String KEY_ENABLE_WIFI_WAKEUP = "enable_wifi_wakeup";
-    private final NetworkScoreManagerWrapper mNetworkScoreManager;
     private SettingObserver mSettingObserver;
 
-    public WifiWakeupPreferenceController(
-            Context context, Lifecycle lifecycle, NetworkScoreManagerWrapper networkScoreManager) {
+    public WifiWakeupPreferenceController(Context context, Lifecycle lifecycle) {
         super(context);
-        mNetworkScoreManager = networkScoreManager;
         lifecycle.addObserver(this);
     }
 
@@ -116,11 +113,9 @@ public class WifiWakeupPreferenceController extends AbstractPreferenceController
         boolean networkRecommendationsEnabled = Settings.Global.getInt(
                 mContext.getContentResolver(),
                 Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED, 0) == 1;
-        boolean activeScorerSet = mNetworkScoreManager.getActiveScorerPackage() != null;
-        enableWifiWakeup.setEnabled(
-                networkRecommendationsEnabled && wifiScanningEnabled && activeScorerSet);
+        enableWifiWakeup.setEnabled(networkRecommendationsEnabled && wifiScanningEnabled);
 
-        if (!activeScorerSet) {
+        if (!networkRecommendationsEnabled) {
             enableWifiWakeup.setSummary(R.string.wifi_wakeup_summary_scoring_disabled);
         } else if (!wifiScanningEnabled) {
             enableWifiWakeup.setSummary(R.string.wifi_wakeup_summary_scanning_disabled);
index 8be686e..306b297 100644 (file)
@@ -56,8 +56,6 @@ public class WifiWakeupPreferenceControllerTest {
     private static final String TEST_SCORER_PACKAGE_NAME = "Test Scorer";
 
     private Context mContext;
-    @Mock
-    private NetworkScoreManagerWrapper mNetworkScorer;
     private WifiWakeupPreferenceController mController;
 
     @Before
@@ -65,11 +63,11 @@ public class WifiWakeupPreferenceControllerTest {
         MockitoAnnotations.initMocks(this);
         mContext = RuntimeEnvironment.application;
         mController = new WifiWakeupPreferenceController(
-                mContext, mock(Lifecycle.class), mNetworkScorer);
+                mContext, mock(Lifecycle.class));
         Settings.System.putInt(mContext.getContentResolver(), WIFI_SCAN_ALWAYS_AVAILABLE, 1);
+        Settings.System.putInt(mContext.getContentResolver(), NETWORK_RECOMMENDATIONS_ENABLED, 1);
         SettingsShadowResources.overrideResource(
                 com.android.internal.R.integer.config_wifi_wakeup_available, 0);
-        when(mNetworkScorer.getActiveScorerPackage()).thenReturn(TEST_SCORER_PACKAGE_NAME);
     }
 
     @After
@@ -116,9 +114,8 @@ public class WifiWakeupPreferenceControllerTest {
     }
 
     @Test
-    public void updateState_preferenceSetCheckedAndSetEnabledWhenSettingsAreEnabled() {
+    public void updateState_preferenceSetCheckedAndSetEnabledWhenWakeupSettingEnabled() {
         final SwitchPreference preference = mock(SwitchPreference.class);
-        Settings.System.putInt(mContext.getContentResolver(), NETWORK_RECOMMENDATIONS_ENABLED, 1);
         Settings.System.putInt(mContext.getContentResolver(), WIFI_WAKEUP_ENABLED, 1);
 
         mController.updateState(preference);
@@ -129,22 +126,20 @@ public class WifiWakeupPreferenceControllerTest {
     }
 
     @Test
-    public void updateState_preferenceSetCheckedAndSetEnabledWhenSettingsAreDisabled() {
+    public void updateState_preferenceSetUncheckedAndSetEnabledWhenWakeupSettingDisabled() {
         final SwitchPreference preference = mock(SwitchPreference.class);
-        Settings.System.putInt(mContext.getContentResolver(), NETWORK_RECOMMENDATIONS_ENABLED, 0);
         Settings.System.putInt(mContext.getContentResolver(), WIFI_WAKEUP_ENABLED, 0);
 
         mController.updateState(preference);
 
         verify(preference).setChecked(false);
-        verify(preference).setEnabled(false);
+        verify(preference).setEnabled(true);
         verify(preference).setSummary(R.string.wifi_wakeup_summary);
     }
 
     @Test
     public void updateState_preferenceSetUncheckedAndSetDisabledWhenWifiScanningDisabled() {
         final SwitchPreference preference = mock(SwitchPreference.class);
-        Settings.System.putInt(mContext.getContentResolver(), NETWORK_RECOMMENDATIONS_ENABLED, 1);
         Settings.System.putInt(mContext.getContentResolver(), WIFI_WAKEUP_ENABLED, 1);
         Settings.System.putInt(mContext.getContentResolver(), WIFI_SCAN_ALWAYS_AVAILABLE, 0);
 
@@ -158,9 +153,8 @@ public class WifiWakeupPreferenceControllerTest {
     @Test
     public void updateState_preferenceSetUncheckedAndSetDisabledWhenScoringDisabled() {
         final SwitchPreference preference = mock(SwitchPreference.class);
-        Settings.System.putInt(mContext.getContentResolver(), NETWORK_RECOMMENDATIONS_ENABLED, 1);
         Settings.System.putInt(mContext.getContentResolver(), WIFI_WAKEUP_ENABLED, 1);
-        when(mNetworkScorer.getActiveScorerPackage()).thenReturn(null);
+        Settings.System.putInt(mContext.getContentResolver(), NETWORK_RECOMMENDATIONS_ENABLED, 0);
 
         mController.updateState(preference);