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

This commit is contained in:
TreeHugger Robot
2019-04-18 17:38:28 +00:00
committed by Android (Google) Code Review
2 changed files with 26 additions and 0 deletions

View File

@@ -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) {

View File

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