Allow video files to be inserted in Pictures

This changs allows video files to be created/inserted under
/sdcard/Pictures. This takes effect for file path access as well as
MediaStore APIs.

Test: atest FuseDaemonHostTest
Fixes: 149020878
Change-Id: Ic8ee9018f5c82dd544d2c9be854c7214f961540e
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java
index 2e731ca..d09b509 100644
--- a/src/com/android/providers/media/MediaProvider.java
+++ b/src/com/android/providers/media/MediaProvider.java
@@ -1720,7 +1720,8 @@
                 defaultPrimary = Environment.DIRECTORY_MOVIES;
                 allowedPrimary = Arrays.asList(
                         Environment.DIRECTORY_DCIM,
-                        Environment.DIRECTORY_MOVIES);
+                        Environment.DIRECTORY_MOVIES,
+                        Environment.DIRECTORY_PICTURES);
                 break;
             case IMAGES_MEDIA:
             case IMAGES_MEDIA_ID:
@@ -5257,13 +5258,11 @@
             case DIRECTORY_AUDIOBOOKS:
                 uris[0] = Audio.Media.getContentUri(volName);
                 break;
-            case DIRECTORY_PICTURES:
-                uris[0] = Images.Media.getContentUri(volName);
-                break;
             case DIRECTORY_MOVIES:
                 uris[0] = Video.Media.getContentUri(volName);
                 break;
             case DIRECTORY_DCIM:
+            case DIRECTORY_PICTURES:
                 if (mimeType.toLowerCase(Locale.ROOT).startsWith("image")) {
                     uris[0] = Images.Media.getContentUri(volName);
                 } else if (mimeType.toLowerCase(Locale.ROOT).startsWith("video")) {
diff --git a/tests/jni/FuseDaemonTest/src/com/android/tests/fused/FilePathAccessTest.java b/tests/jni/FuseDaemonTest/src/com/android/tests/fused/FilePathAccessTest.java
index 00e698e..5a86201 100644
--- a/tests/jni/FuseDaemonTest/src/com/android/tests/fused/FilePathAccessTest.java
+++ b/tests/jni/FuseDaemonTest/src/com/android/tests/fused/FilePathAccessTest.java
@@ -174,11 +174,19 @@
         assertThrows(IOException.class, "Operation not permitted", () -> {
             new File(DCIM_DIR, MUSIC_FILE_NAME).createNewFile();
         });
+        // Only image and video files can be created in Pictures
+        assertThrows(IOException.class, "Operation not permitted", () -> {
+            new File(PICTURES_DIR, NONMEDIA_FILE_NAME).createNewFile();
+        });
+        assertThrows(IOException.class, "Operation not permitted", () -> {
+            new File(PICTURES_DIR, MUSIC_FILE_NAME).createNewFile();
+        });
 
         assertCanCreateFile(new File(DCIM_DIR, IMAGE_FILE_NAME));
         assertCanCreateFile(new File(MUSIC_DIR, MUSIC_FILE_NAME));
         assertCanCreateFile(new File(MOVIES_DIR, VIDEO_FILE_NAME));
         assertCanCreateFile(new File(DOWNLOAD_DIR, NONMEDIA_FILE_NAME));
+        assertCanCreateFile(new File(PICTURES_DIR, VIDEO_FILE_NAME));
 
         // No file whatsoever can be created in the top level directory
         assertThrows(IOException.class, "Operation not permitted", () -> {