diff --git a/src/com/android/settings/wifi/ConfigureWifiSettings.java b/src/com/android/settings/wifi/ConfigureWifiSettings.java index aeee6ffa011..43f25f11977 100644 --- a/src/com/android/settings/wifi/ConfigureWifiSettings.java +++ b/src/com/android/settings/wifi/ConfigureWifiSettings.java @@ -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); diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 2e1dc83ff66..1da9d8c5833 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -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; @@ -920,9 +921,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)); } @@ -937,6 +937,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, diff --git a/src/com/android/settings/wifi/WifiWakeupPreferenceController.java b/src/com/android/settings/wifi/WifiWakeupPreferenceController.java index 0017a5d7c4a..efb8aa6f84a 100644 --- a/src/com/android/settings/wifi/WifiWakeupPreferenceController.java +++ b/src/com/android/settings/wifi/WifiWakeupPreferenceController.java @@ -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); diff --git a/tests/robotests/src/com/android/settings/wifi/WifiWakeupPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiWakeupPreferenceControllerTest.java index 8be686e64ea..306b297c69f 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiWakeupPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiWakeupPreferenceControllerTest.java @@ -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);