Merge "Fix ANR in SliceRelayReceiver"
diff --git a/src/com/android/settings/slices/SliceBackgroundWorker.java b/src/com/android/settings/slices/SliceBackgroundWorker.java
index a663ece..8b68f05 100644
--- a/src/com/android/settings/slices/SliceBackgroundWorker.java
+++ b/src/com/android/settings/slices/SliceBackgroundWorker.java
@@ -58,6 +58,10 @@
mUri = uri;
}
+ public Uri getUri() {
+ return mUri;
+ }
+
/**
* Returns the singleton instance of the {@link SliceBackgroundWorker} for specified {@link
* CustomSliceable}
diff --git a/src/com/android/settings/wifi/WifiSlice.java b/src/com/android/settings/wifi/WifiSlice.java
index 64e3fc3..9f05783 100644
--- a/src/com/android/settings/wifi/WifiSlice.java
+++ b/src/com/android/settings/wifi/WifiSlice.java
@@ -25,7 +25,6 @@
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
import android.net.Uri;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
@@ -76,14 +75,6 @@
}
@Override
- public IntentFilter getIntentFilter() {
- final IntentFilter filter = new IntentFilter();
- filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
- filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
- return filter;
- }
-
- @Override
public Slice getSlice() {
final boolean isWifiEnabled = isWifiEnabled();
final IconCompat icon = IconCompat.createWithResource(mContext,
@@ -200,7 +191,7 @@
mWifiManager.isWifiEnabled());
mWifiManager.setWifiEnabled(newState);
// Do not notifyChange on Uri. The service takes longer to update the current value than it
- // does for the Slice to check the current value again. Let {@link SliceBroadcastRelay}
+ // does for the Slice to check the current value again. Let {@link WifiScanWorker}
// handle it.
}
@@ -292,6 +283,7 @@
@Override
public void onWifiStateChanged(int state) {
+ mContext.getContentResolver().notifyChange(getUri(), null);
}
@Override
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSliceTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSliceTest.java
index cdd1664..fb98f85 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiSliceTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiSliceTest.java
@@ -20,10 +20,18 @@
import static android.app.slice.Slice.HINT_LIST_ITEM;
import static android.app.slice.SliceItem.FORMAT_SLICE;
+import static com.android.settings.slices.CustomSliceRegistry.WIFI_SLICE_URI;
import static com.android.settings.wifi.WifiSlice.DEFAULT_EXPANDED_ROW_COUNT;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiManager;
@@ -52,13 +60,16 @@
public class WifiSliceTest {
private Context mContext;
-
+ private ContentResolver mResolver;
private WifiManager mWifiManager;
private WifiSlice mWifiSlice;
+ private WifiSlice.WifiScanWorker mWifiScanWorker;
@Before
public void setUp() {
- mContext = RuntimeEnvironment.application;
+ mContext = spy(RuntimeEnvironment.application);
+ mResolver = mock(ContentResolver.class);
+ doReturn(mResolver).when(mContext).getContentResolver();
mWifiManager = mContext.getSystemService(WifiManager.class);
// Set-up specs for SliceMetadata.
@@ -66,6 +77,7 @@
mWifiManager.setWifiEnabled(true);
mWifiSlice = new WifiSlice(mContext);
+ mWifiScanWorker = new WifiSlice.WifiScanWorker(mContext, WIFI_SLICE_URI);
}
@Test
@@ -122,4 +134,11 @@
assertThat(wifiManager.getWifiState()).isEqualTo(WifiManager.WIFI_STATE_ENABLED);
}
+
+ @Test
+ public void onWifiStateChanged_shouldNotifyChange() {
+ mWifiScanWorker.onWifiStateChanged(WifiManager.WIFI_STATE_DISABLED);
+
+ verify(mResolver).notifyChange(WIFI_SLICE_URI, null);
+ }
}