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

Commit 4242ed21 authored by Matthew Fritze's avatar Matthew Fritze
Browse files

Hook up blocked keys

Block any slice in onBind that is the in the blacklist

Change-Id: I9687d07cbfef5fcb94842046bc5dc3296eed4252
Fixes: 80195653
Test: robotests
parent 28dc3917
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -175,6 +175,13 @@ public class SettingsSliceProvider extends SliceProvider {

    @Override
    public Slice onBindSlice(Uri sliceUri) {
        final Set<String> blockedKeys = getBlockedKeys();
        final String key = sliceUri.getLastPathSegment();
        if (blockedKeys.contains(key)) {
            Log.e(TAG, "Requested blocked slice with Uri: " + sliceUri);
            return null;
        }

        // If adding a new Slice, do not directly match Slice URIs.
        // Use {@link SlicesDatabaseAccessor}.
        if (WifiCallingSliceHelper.WIFI_CALLING_URI.equals(sliceUri)) {
+22 −0
Original line number Diff line number Diff line
@@ -22,18 +22,21 @@ 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.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.app.slice.SliceManager;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.StrictMode;
import android.provider.SettingsSlicesContract;
import android.util.ArraySet;

import com.android.settings.wifi.WifiSliceBuilder;
import com.android.settings.bluetooth.BluetoothSliceBuilder;
@@ -54,6 +57,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import androidx.slice.Slice;

@@ -189,6 +193,24 @@ public class SettingsSliceProviderTest {
        assertThat(newThreadPolicy.toString()).isEqualTo(oldThreadPolicy.toString());
    }

    @Test
    public void onBindSlice_requestsBlockedSlice_retunsNull() {
        final String blockedKey = "blocked_key";
        final Set<String> blockedSet = new ArraySet<>();
        blockedSet.add(blockedKey);
        doReturn(blockedSet).when(mProvider).getBlockedKeys();
        final Uri blockedUri = new Uri.Builder()
                .scheme(ContentResolver.SCHEME_CONTENT)
                .authority(SettingsSliceProvider.SLICE_AUTHORITY)
                .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
                .appendPath(blockedKey)
                .build();

        final Slice slice = mProvider.onBindSlice(blockedUri);

        assertThat(slice).isNull();
    }

    @Test
    public void testLoadSlice_cachedEntryRemovedOnUnpin() {
        SliceData data = getDummyData();