Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7906cb9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add Intentfilter BasePreferenceController" into pi-dev

parents 77d218ab 4a6f0585
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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;

@@ -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.
     *
+10 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
    }
}
+13 −4
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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);
@@ -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);
        }
@@ -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);
@@ -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);
    }
+18 −5
Original line number Diff line number Diff line
@@ -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;
@@ -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);
@@ -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);
@@ -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);
@@ -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);
@@ -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);

+10 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;

@@ -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;
    }
}