Merge "Prevent brief flash of "Error" in hotspot status text" into oc-mr1-dev
am: bc6dc5c20c
Change-Id: I64d32e5ac1724ff4c79f1ea4516fa83492a39377
diff --git a/src/com/android/settings/wifi/tether/WifiTetherPreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherPreferenceController.java
index afc3a29..87adf73 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherPreferenceController.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherPreferenceController.java
@@ -139,6 +139,7 @@
private void handleWifiApStateChanged(int state, int reason) {
switch (state) {
+ case WifiManager.WIFI_AP_STATE_ENABLING:
case WifiManager.WIFI_AP_STATE_ENABLED:
/**
* Summary on enable is handled by tether
diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPreferenceControllerTest.java
index 860a914..a23347a 100644
--- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPreferenceControllerTest.java
@@ -161,12 +161,7 @@
@Test
public void testReceiver_apStateChangedToDisabled_shouldUpdatePreferenceSummary() {
mController.displayPreference(mScreen);
- final BroadcastReceiver receiver = ReflectionHelpers.getField(mController, "mReceiver");
- final Intent broadcast = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
- broadcast.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_DISABLED);
-
- receiver.onReceive(RuntimeEnvironment.application, broadcast);
-
+ receiveApStateChangedBroadcast(WifiManager.WIFI_AP_STATE_DISABLED);
assertThat(mPreference.getSummary().toString()).isEqualTo(
RuntimeEnvironment.application.getString(R.string.wifi_hotspot_off_subtext));
}
@@ -174,17 +169,29 @@
@Test
public void testReceiver_apStateChangedToDisabling_shouldUpdatePreferenceSummary() {
mController.displayPreference(mScreen);
- final BroadcastReceiver receiver = ReflectionHelpers.getField(mController, "mReceiver");
- final Intent broadcast = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
- broadcast.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_DISABLING);
-
- receiver.onReceive(RuntimeEnvironment.application, broadcast);
-
+ receiveApStateChangedBroadcast(WifiManager.WIFI_AP_STATE_DISABLING);
assertThat(mPreference.getSummary().toString()).isEqualTo(
RuntimeEnvironment.application.getString(R.string.wifi_tether_stopping));
}
@Test
+ public void testReceiver_apStateChangedToEnablingOrEnabled_shouldNotUpdatePreferenceSummary() {
+ mController.displayPreference(mScreen);
+ receiveApStateChangedBroadcast(WifiManager.WIFI_AP_STATE_DISABLED);
+ assertThat(mPreference.getSummary().toString()).isEqualTo(
+ RuntimeEnvironment.application.getString(R.string.wifi_hotspot_off_subtext));
+
+ // When turning on the hotspot, we receive STATE_ENABLING followed by STATE_ENABLED. Neither
+ // of these should change the summary.
+ receiveApStateChangedBroadcast(WifiManager.WIFI_AP_STATE_ENABLING);
+ assertThat(mPreference.getSummary().toString()).isEqualTo(
+ RuntimeEnvironment.application.getString(R.string.wifi_hotspot_off_subtext));
+ receiveApStateChangedBroadcast(WifiManager.WIFI_AP_STATE_ENABLED);
+ assertThat(mPreference.getSummary().toString()).isEqualTo(
+ RuntimeEnvironment.application.getString(R.string.wifi_hotspot_off_subtext));
+ }
+
+ @Test
public void testReceiver_goingToAirplaneMode_shouldClearPreferenceSummary() {
final ContentResolver cr = mock(ContentResolver.class);
when(mContext.getContentResolver()).thenReturn(cr);
@@ -248,4 +255,16 @@
onStopCalled = true;
}
}
+
+ /**
+ * Helper to cause the controller to receive a WIFI_AP_STATE_CHANGED_ACTION with a specific
+ * state.
+ * @param state - the state, as specified by one of the WifiManager.WIFI_AP_STATE_* values
+ */
+ private void receiveApStateChangedBroadcast(int state) {
+ final BroadcastReceiver receiver = ReflectionHelpers.getField(mController, "mReceiver");
+ final Intent broadcast = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
+ broadcast.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, state);
+ receiver.onReceive(RuntimeEnvironment.application, broadcast);
+ }
}