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

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

Merge "Prevent bad apps from getting Setting Slices" into qt-dev

parents 57da877d 2bdea1d9
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -18,9 +18,11 @@ package com.android.settings.slices;

import static android.Manifest.permission.READ_SEARCH_INDEXABLES;

import android.app.PendingIntent;
import android.app.slice.SliceManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.StrictMode;
@@ -32,6 +34,8 @@ import android.util.KeyValueListParser;
import android.util.Log;
import android.util.Pair;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.collection.ArraySet;
import androidx.slice.Slice;
@@ -295,6 +299,16 @@ public class SettingsSliceProvider extends SliceProvider {
        return descendants;
    }

    @Nullable
    @Override
    public PendingIntent onCreatePermissionRequest(@NonNull Uri sliceUri,
            @NonNull String callingPackage) {
        final Intent settingsIntent = new Intent(Settings.ACTION_SETTINGS);
        final PendingIntent noOpIntent = PendingIntent.getActivity(getContext(),
                0 /* requestCode */, settingsIntent, 0 /* flags */);
        return noOpIntent;
    }

    @VisibleForTesting
    static void grantWhitelistedPackagePermissions(Context context, List<Uri> descendants) {
        if (descendants == null) {
+12 −0
Original line number Diff line number Diff line
@@ -31,10 +31,12 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.PendingIntent;
import android.app.slice.SliceManager;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.StrictMode;
@@ -444,6 +446,16 @@ public class SettingsSliceProviderTest {
        assertThat(descendants).containsExactlyElementsIn(expectedUris);
    }

    @Test
    public void onCreatePermissionRequest_returnsSettingIntent() {
        final PendingIntent pendingIntent = mProvider.onCreatePermissionRequest(
                CustomSliceRegistry.FLASHLIGHT_SLICE_URI, "com.android.whaaaat");
        PendingIntent settingsPendingIntent =
                PendingIntent.getActivity(mContext, 0, new Intent(Settings.ACTION_SETTINGS), 0);

        assertThat(pendingIntent).isEqualTo(settingsPendingIntent);
    }

    @Test
    public void bindSlice_wifiSlice_returnsWifiSlice() {
        final Slice wifiSlice = mProvider.onBindSlice(CustomSliceRegistry.WIFI_SLICE_URI);