Loading src/com/android/settings/core/BasePreferenceController.java +9 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ package com.android.settings.core; import android.annotation.IntDef; import android.content.Context; import android.content.IntentFilter; import android.text.TextUtils; import android.util.Log; Loading Loading @@ -220,6 +221,14 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl return SliceData.SliceType.INTENT; } /** * @return an {@link IntentFilter} that includes all broadcasts which can affect the state of * this Setting. */ public IntentFilter getIntentFilter() { return null; } /** * Updates non-indexable keys for search provider. * Loading src/com/android/settings/notification/AdjustVolumeRestrictedPreferenceController.java +10 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.settings.notification; import android.content.Context; import android.content.IntentFilter; import android.media.AudioManager; import android.os.UserHandle; import android.os.UserManager; import android.support.v7.preference.Preference; Loading Loading @@ -57,4 +59,12 @@ public abstract class AdjustVolumeRestrictedPreferenceController extends UserManager.DISALLOW_ADJUST_VOLUME, UserHandle.myUserId()); } @Override public IntentFilter getIntentFilter() { final IntentFilter filter = new IntentFilter(); filter.addAction(AudioManager.VOLUME_CHANGED_ACTION); filter.addAction(AudioManager.STREAM_MUTE_CHANGED_ACTION); filter.addAction(AudioManager.MASTER_MUTE_CHANGED_ACTION); return filter; } } src/com/android/settings/slices/SettingsSliceProvider.java +13 −4 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.app.slice.SliceManager; import android.content.ContentResolver; import android.content.Intent; import android.content.IntentFilter; import android.content.Context; import android.net.Uri; import android.provider.SettingsSlicesContract; import android.support.annotation.VisibleForTesting; Loading @@ -33,6 +32,7 @@ import android.util.Log; import android.util.Pair; import com.android.settings.overlay.FeatureFactory; import com.android.settings.core.BasePreferenceController; import com.android.settings.wifi.WifiSliceBuilder; import com.android.settings.wifi.calling.WifiCallingSliceHelper; import com.android.settings.notification.ZenModeSliceBuilder; Loading Loading @@ -143,8 +143,6 @@ public class SettingsSliceProvider extends SliceProvider { public void onSlicePinned(Uri sliceUri) { if (WifiSliceBuilder.WIFI_URI.equals(sliceUri)) { registerIntentToUri(WifiSliceBuilder.INTENT_FILTER , sliceUri); // TODO (b/) Register IntentFilters for database entries. mRegisteredUris.add(sliceUri); return; } else if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) { registerIntentToUri(ZenModeSliceBuilder.INTENT_FILTER, sliceUri); Loading @@ -159,6 +157,7 @@ public class SettingsSliceProvider extends SliceProvider { @Override public void onSliceUnpinned(Uri sliceUri) { if (mRegisteredUris.contains(sliceUri)) { Log.d(TAG, "Unregistering uri broadcast relay: " + sliceUri); SliceBroadcastRelay.unregisterReceivers(getContext(), sliceUri); mRegisteredUris.remove(sliceUri); } Loading Loading @@ -280,7 +279,15 @@ public class SettingsSliceProvider extends SliceProvider { long startBuildTime = System.currentTimeMillis(); final SliceData sliceData = mSlicesDatabaseAccessor.getSliceDataFromUri(uri); List<Uri> pinnedSlices = getContext().getSystemService( final BasePreferenceController controller = SliceBuilderUtils.getPreferenceController( getContext(), sliceData); final IntentFilter filter = controller.getIntentFilter(); if (filter != null) { registerIntentToUri(filter, uri); } final List<Uri> pinnedSlices = getContext().getSystemService( SliceManager.class).getPinnedSlices(); if (pinnedSlices.contains(uri)) { mSliceDataCache.put(uri, sliceData); Loading Loading @@ -333,6 +340,8 @@ public class SettingsSliceProvider extends SliceProvider { * {@param intentFilter} happen. */ void registerIntentToUri(IntentFilter intentFilter, Uri sliceUri) { Log.d(TAG, "Registering Uri for broadcast relay: " + sliceUri); mRegisteredUris.add(sliceUri); SliceBroadcastRelay.registerReceiver(getContext(), sliceUri, SliceBroadcastReceiver.class, intentFilter); } Loading tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java +18 −5 Original line number Diff line number Diff line Loading @@ -18,10 +18,13 @@ package com.android.settings.slices; import static android.content.ContentResolver.SCHEME_CONTENT; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.eq; 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.app.slice.SliceManager; Loading Loading @@ -107,7 +110,7 @@ public class SettingsSliceProviderTest { @Test public void testInitialSliceReturned_emptySlice() { insertSpecialCase(KEY); Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); final Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); Slice slice = mProvider.onBindSlice(uri); assertThat(slice.getUri()).isEqualTo(uri); Loading @@ -117,7 +120,7 @@ public class SettingsSliceProviderTest { @Test public void testLoadSlice_returnsSliceFromAccessor() { insertSpecialCase(KEY); Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); final Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); mProvider.loadSlice(uri); SliceData data = mProvider.mSliceWeakDataCache.get(uri); Loading @@ -126,10 +129,20 @@ public class SettingsSliceProviderTest { assertThat(data.getTitle()).isEqualTo(TITLE); } @Test public void loadSlice_registersIntentFilter() { insertSpecialCase(KEY); final Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); mProvider.loadSlice(uri); verify(mProvider).registerIntentToUri(eq(FakeToggleController.INTENT_FILTER), eq(uri)); } @Test public void testLoadSlice_doesNotCacheWithoutPin() { insertSpecialCase(KEY); Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); final Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); mProvider.loadSlice(uri); SliceData data = mProvider.mSliceDataCache.get(uri); Loading @@ -140,7 +153,7 @@ public class SettingsSliceProviderTest { @Test public void testLoadSlice_cachesWithPin() { insertSpecialCase(KEY); Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); final Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); when(mManager.getPinnedSlices()).thenReturn(Arrays.asList(uri)); mProvider.loadSlice(uri); Loading Loading @@ -398,7 +411,7 @@ public class SettingsSliceProviderTest { values.put(SlicesDatabaseHelper.IndexColumns.SCREENTITLE, "s"); values.put(SlicesDatabaseHelper.IndexColumns.ICON_RESOURCE, 1234); values.put(SlicesDatabaseHelper.IndexColumns.FRAGMENT, "test"); values.put(SlicesDatabaseHelper.IndexColumns.CONTROLLER, "test"); values.put(SlicesDatabaseHelper.IndexColumns.CONTROLLER, PREF_CONTROLLER); values.put(SlicesDatabaseHelper.IndexColumns.PLATFORM_SLICE, isPlatformSlice); values.put(SlicesDatabaseHelper.IndexColumns.SLICE_TYPE, SliceData.SliceType.INTENT); Loading tests/robotests/src/com/android/settings/testutils/FakeToggleController.java +10 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.settings.testutils; import android.content.Context; import android.content.IntentFilter; import android.net.wifi.WifiManager; import android.provider.Settings; import com.android.settings.core.TogglePreferenceController; Loading @@ -28,6 +30,9 @@ public class FakeToggleController extends TogglePreferenceController { public static final String AVAILABILITY_KEY = "fake_toggle_availability_key"; public static final IntentFilter INTENT_FILTER = new IntentFilter( WifiManager.WIFI_AP_STATE_CHANGED_ACTION); private final int ON = 1; private final int OFF = 0; Loading @@ -52,4 +57,9 @@ public class FakeToggleController extends TogglePreferenceController { return Settings.Global.getInt(mContext.getContentResolver(), AVAILABILITY_KEY, AVAILABLE); } @Override public IntentFilter getIntentFilter() { return INTENT_FILTER; } } Loading
src/com/android/settings/core/BasePreferenceController.java +9 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ package com.android.settings.core; import android.annotation.IntDef; import android.content.Context; import android.content.IntentFilter; import android.text.TextUtils; import android.util.Log; Loading Loading @@ -220,6 +221,14 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl return SliceData.SliceType.INTENT; } /** * @return an {@link IntentFilter} that includes all broadcasts which can affect the state of * this Setting. */ public IntentFilter getIntentFilter() { return null; } /** * Updates non-indexable keys for search provider. * Loading
src/com/android/settings/notification/AdjustVolumeRestrictedPreferenceController.java +10 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.settings.notification; import android.content.Context; import android.content.IntentFilter; import android.media.AudioManager; import android.os.UserHandle; import android.os.UserManager; import android.support.v7.preference.Preference; Loading Loading @@ -57,4 +59,12 @@ public abstract class AdjustVolumeRestrictedPreferenceController extends UserManager.DISALLOW_ADJUST_VOLUME, UserHandle.myUserId()); } @Override public IntentFilter getIntentFilter() { final IntentFilter filter = new IntentFilter(); filter.addAction(AudioManager.VOLUME_CHANGED_ACTION); filter.addAction(AudioManager.STREAM_MUTE_CHANGED_ACTION); filter.addAction(AudioManager.MASTER_MUTE_CHANGED_ACTION); return filter; } }
src/com/android/settings/slices/SettingsSliceProvider.java +13 −4 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.app.slice.SliceManager; import android.content.ContentResolver; import android.content.Intent; import android.content.IntentFilter; import android.content.Context; import android.net.Uri; import android.provider.SettingsSlicesContract; import android.support.annotation.VisibleForTesting; Loading @@ -33,6 +32,7 @@ import android.util.Log; import android.util.Pair; import com.android.settings.overlay.FeatureFactory; import com.android.settings.core.BasePreferenceController; import com.android.settings.wifi.WifiSliceBuilder; import com.android.settings.wifi.calling.WifiCallingSliceHelper; import com.android.settings.notification.ZenModeSliceBuilder; Loading Loading @@ -143,8 +143,6 @@ public class SettingsSliceProvider extends SliceProvider { public void onSlicePinned(Uri sliceUri) { if (WifiSliceBuilder.WIFI_URI.equals(sliceUri)) { registerIntentToUri(WifiSliceBuilder.INTENT_FILTER , sliceUri); // TODO (b/) Register IntentFilters for database entries. mRegisteredUris.add(sliceUri); return; } else if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) { registerIntentToUri(ZenModeSliceBuilder.INTENT_FILTER, sliceUri); Loading @@ -159,6 +157,7 @@ public class SettingsSliceProvider extends SliceProvider { @Override public void onSliceUnpinned(Uri sliceUri) { if (mRegisteredUris.contains(sliceUri)) { Log.d(TAG, "Unregistering uri broadcast relay: " + sliceUri); SliceBroadcastRelay.unregisterReceivers(getContext(), sliceUri); mRegisteredUris.remove(sliceUri); } Loading Loading @@ -280,7 +279,15 @@ public class SettingsSliceProvider extends SliceProvider { long startBuildTime = System.currentTimeMillis(); final SliceData sliceData = mSlicesDatabaseAccessor.getSliceDataFromUri(uri); List<Uri> pinnedSlices = getContext().getSystemService( final BasePreferenceController controller = SliceBuilderUtils.getPreferenceController( getContext(), sliceData); final IntentFilter filter = controller.getIntentFilter(); if (filter != null) { registerIntentToUri(filter, uri); } final List<Uri> pinnedSlices = getContext().getSystemService( SliceManager.class).getPinnedSlices(); if (pinnedSlices.contains(uri)) { mSliceDataCache.put(uri, sliceData); Loading Loading @@ -333,6 +340,8 @@ public class SettingsSliceProvider extends SliceProvider { * {@param intentFilter} happen. */ void registerIntentToUri(IntentFilter intentFilter, Uri sliceUri) { Log.d(TAG, "Registering Uri for broadcast relay: " + sliceUri); mRegisteredUris.add(sliceUri); SliceBroadcastRelay.registerReceiver(getContext(), sliceUri, SliceBroadcastReceiver.class, intentFilter); } Loading
tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java +18 −5 Original line number Diff line number Diff line Loading @@ -18,10 +18,13 @@ package com.android.settings.slices; import static android.content.ContentResolver.SCHEME_CONTENT; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.eq; 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.app.slice.SliceManager; Loading Loading @@ -107,7 +110,7 @@ public class SettingsSliceProviderTest { @Test public void testInitialSliceReturned_emptySlice() { insertSpecialCase(KEY); Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); final Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); Slice slice = mProvider.onBindSlice(uri); assertThat(slice.getUri()).isEqualTo(uri); Loading @@ -117,7 +120,7 @@ public class SettingsSliceProviderTest { @Test public void testLoadSlice_returnsSliceFromAccessor() { insertSpecialCase(KEY); Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); final Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); mProvider.loadSlice(uri); SliceData data = mProvider.mSliceWeakDataCache.get(uri); Loading @@ -126,10 +129,20 @@ public class SettingsSliceProviderTest { assertThat(data.getTitle()).isEqualTo(TITLE); } @Test public void loadSlice_registersIntentFilter() { insertSpecialCase(KEY); final Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); mProvider.loadSlice(uri); verify(mProvider).registerIntentToUri(eq(FakeToggleController.INTENT_FILTER), eq(uri)); } @Test public void testLoadSlice_doesNotCacheWithoutPin() { insertSpecialCase(KEY); Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); final Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); mProvider.loadSlice(uri); SliceData data = mProvider.mSliceDataCache.get(uri); Loading @@ -140,7 +153,7 @@ public class SettingsSliceProviderTest { @Test public void testLoadSlice_cachesWithPin() { insertSpecialCase(KEY); Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); final Uri uri = SliceBuilderUtils.getUri(INTENT_PATH, false); when(mManager.getPinnedSlices()).thenReturn(Arrays.asList(uri)); mProvider.loadSlice(uri); Loading Loading @@ -398,7 +411,7 @@ public class SettingsSliceProviderTest { values.put(SlicesDatabaseHelper.IndexColumns.SCREENTITLE, "s"); values.put(SlicesDatabaseHelper.IndexColumns.ICON_RESOURCE, 1234); values.put(SlicesDatabaseHelper.IndexColumns.FRAGMENT, "test"); values.put(SlicesDatabaseHelper.IndexColumns.CONTROLLER, "test"); values.put(SlicesDatabaseHelper.IndexColumns.CONTROLLER, PREF_CONTROLLER); values.put(SlicesDatabaseHelper.IndexColumns.PLATFORM_SLICE, isPlatformSlice); values.put(SlicesDatabaseHelper.IndexColumns.SLICE_TYPE, SliceData.SliceType.INTENT); Loading
tests/robotests/src/com/android/settings/testutils/FakeToggleController.java +10 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.settings.testutils; import android.content.Context; import android.content.IntentFilter; import android.net.wifi.WifiManager; import android.provider.Settings; import com.android.settings.core.TogglePreferenceController; Loading @@ -28,6 +30,9 @@ public class FakeToggleController extends TogglePreferenceController { public static final String AVAILABILITY_KEY = "fake_toggle_availability_key"; public static final IntentFilter INTENT_FILTER = new IntentFilter( WifiManager.WIFI_AP_STATE_CHANGED_ACTION); private final int ON = 1; private final int OFF = 0; Loading @@ -52,4 +57,9 @@ public class FakeToggleController extends TogglePreferenceController { return Settings.Global.getInt(mContext.getContentResolver(), AVAILABILITY_KEY, AVAILABLE); } @Override public IntentFilter getIntentFilter() { return INTENT_FILTER; } }