Merge "Prevent bad apps from getting Setting Slices" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7f9a86d869
@@ -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) {
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user