Snap for 7132927 from ba3b03ac82e4d3a05b87bc1b29d0da84e3e66901 to mainline-permission-release
Change-Id: I67d2ded83b98200e2ba2064ef1cfa394946e4288
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
index 4bf764b..121e33c 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
@@ -626,6 +626,24 @@
}
@Test
+ public void testMediaEscalation_RequestWriteFilePathSupport() throws Exception {
+ // Not adding tests for MEDIA_28 and MEDIA_29 as they need W_E_S for write access via file
+ // path for shared files, and will always have access as they have W_E_S.
+ installPackage(MEDIA.apk);
+
+ int user = getDevice().getCurrentUser();
+ updatePermissions(MEDIA.pkg, user, new String[] {
+ PERM_READ_EXTERNAL_STORAGE,
+ }, false);
+ updatePermissions(MEDIA.pkg, user, new String[] {
+ PERM_WRITE_EXTERNAL_STORAGE,
+ }, false);
+
+ runDeviceTests(MEDIA.pkg, MEDIA.clazz, "testMediaEscalation_RequestWriteFilePathSupport",
+ user);
+ }
+
+ @Test
public void testMediaEscalation() throws Exception {
doMediaEscalation(MEDIA);
}
diff --git a/hostsidetests/appsecurity/test-apps/MediaStorageApp/src/com/android/cts/mediastorageapp/MediaStorageTest.java b/hostsidetests/appsecurity/test-apps/MediaStorageApp/src/com/android/cts/mediastorageapp/MediaStorageTest.java
index cf1d888..4817230 100644
--- a/hostsidetests/appsecurity/test-apps/MediaStorageApp/src/com/android/cts/mediastorageapp/MediaStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/MediaStorageApp/src/com/android/cts/mediastorageapp/MediaStorageTest.java
@@ -404,6 +404,52 @@
}
@Test
+ public void testMediaEscalation_RequestWriteFilePathSupport() throws Exception {
+ doMediaEscalation_RequestWrite_withFilePathSupport(
+ MediaStorageTest::createAudio);
+ doMediaEscalation_RequestWrite_withFilePathSupport(
+ MediaStorageTest::createVideo);
+ doMediaEscalation_RequestWrite_withFilePathSupport(
+ MediaStorageTest::createImage);
+ doMediaEscalation_RequestWrite_withFilePathSupport(
+ MediaStorageTest::createPlaylist);
+ doMediaEscalation_RequestWrite_withFilePathSupport(
+ MediaStorageTest::createSubtitle);
+ }
+
+ private void doMediaEscalation_RequestWrite_withFilePathSupport(
+ Callable<Uri> create) throws Exception {
+ final Uri red = create.call();
+ assertNotNull(red);
+ String path = queryForSingleColumn(red, MediaColumns.DATA);
+ File file = new File(path);
+ assertTrue(file.exists());
+ assertTrue(file.canRead());
+ assertTrue(file.canWrite());
+
+ clearMediaOwner(red, mUserId);
+ assertFalse(file.canWrite());
+
+ try (ParcelFileDescriptor pfd = mContentResolver.openFileDescriptor(red, "w")) {
+ fail("Expected write access to be blocked");
+ } catch (SecurityException expected) {
+ }
+
+ doEscalation(MediaStore.createWriteRequest(mContentResolver, Arrays.asList(red)));
+
+ try (ParcelFileDescriptor pfd = mContentResolver.openFileDescriptor(red, "w")) {
+ }
+
+ final Instrumentation inst = InstrumentationRegistry.getInstrumentation();
+ final UiDevice device = UiDevice.getInstance(inst);
+ device.executeShellCommand("setprop sys.filepathsupport.mediauri true");
+ assertTrue(file.canRead());
+ assertTrue(file.canWrite());
+ // TODO(b/173648980): Write to file and read back to verify.
+ device.executeShellCommand("setprop sys.filepathsupport.mediauri false");
+ }
+
+ @Test
public void testMediaEscalation_RequestWrite() throws Exception {
doMediaEscalation_RequestWrite(MediaStorageTest::createAudio);
doMediaEscalation_RequestWrite(MediaStorageTest::createVideo);
diff --git a/tests/tests/provider/src/android/provider/cts/settings/Settings_SystemTest.java b/tests/tests/provider/src/android/provider/cts/settings/Settings_SystemTest.java
index 5584fab..16d595f 100644
--- a/tests/tests/provider/src/android/provider/cts/settings/Settings_SystemTest.java
+++ b/tests/tests/provider/src/android/provider/cts/settings/Settings_SystemTest.java
@@ -27,6 +27,7 @@
import android.database.Cursor;
import android.net.Uri;
import android.os.SystemClock;
+import android.platform.test.annotations.SecurityTest;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.provider.Settings.System;
@@ -139,6 +140,10 @@
}
}
+ /**
+ * Verifies that the invalid values for the font scale setting are rejected.
+ */
+ @SecurityTest(minPatchLevel = "2021-02")
@Test
public void testSystemSettingsRejectInvalidFontSizeScale() throws SettingNotFoundException {
final ContentResolver cr = InstrumentationRegistry.getTargetContext().getContentResolver();