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);
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;
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));
}
}
}
+ 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,
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);
}
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);
private static final String TEST_SCORER_PACKAGE_NAME = "Test Scorer";
private Context mContext;
- @Mock
- private NetworkScoreManagerWrapper mNetworkScorer;
private WifiWakeupPreferenceController mController;
@Before
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
}
@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);
}
@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);
@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);