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 static android.Manifest.permission.READ_SEARCH_INDEXABLES;
|
||||||
|
|
||||||
|
import android.app.PendingIntent;
|
||||||
import android.app.slice.SliceManager;
|
import android.app.slice.SliceManager;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.StrictMode;
|
import android.os.StrictMode;
|
||||||
@@ -32,6 +34,8 @@ import android.util.KeyValueListParser;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.collection.ArraySet;
|
import androidx.collection.ArraySet;
|
||||||
import androidx.slice.Slice;
|
import androidx.slice.Slice;
|
||||||
@@ -295,6 +299,16 @@ public class SettingsSliceProvider extends SliceProvider {
|
|||||||
return descendants;
|
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
|
@VisibleForTesting
|
||||||
static void grantWhitelistedPackagePermissions(Context context, List<Uri> descendants) {
|
static void grantWhitelistedPackagePermissions(Context context, List<Uri> descendants) {
|
||||||
if (descendants == null) {
|
if (descendants == null) {
|
||||||
|
@@ -31,10 +31,12 @@ import static org.mockito.Mockito.spy;
|
|||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.app.PendingIntent;
|
||||||
import android.app.slice.SliceManager;
|
import android.app.slice.SliceManager;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.StrictMode;
|
import android.os.StrictMode;
|
||||||
@@ -444,6 +446,16 @@ public class SettingsSliceProviderTest {
|
|||||||
assertThat(descendants).containsExactlyElementsIn(expectedUris);
|
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
|
@Test
|
||||||
public void bindSlice_wifiSlice_returnsWifiSlice() {
|
public void bindSlice_wifiSlice_returnsWifiSlice() {
|
||||||
final Slice wifiSlice = mProvider.onBindSlice(CustomSliceRegistry.WIFI_SLICE_URI);
|
final Slice wifiSlice = mProvider.onBindSlice(CustomSliceRegistry.WIFI_SLICE_URI);
|
||||||
|
Reference in New Issue
Block a user