Merge branch 'security-aosp-qt-release' into int/10/fp2
* security-aosp-qt-release:
Open all files with O_NOFOLLOW.
Change-Id: Idbf2c805f7310d9b0eb736c6e85c72a31b88f969
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 704628f..0f62abc 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -28,9 +28,9 @@
<string name="root_audio" msgid="3505830755201326018">"Audioa"</string>
<string name="permission_required" msgid="1460820436132943754">"Baimena behar da elementu hau aldatu edo ezabatzeko."</string>
<string name="permission_required_action" msgid="706370952366113539">"Egin aurrera"</string>
- <string name="permission_audio" msgid="344061911159388398"><b>"<xliff:g id="APP_NAME">^1</xliff:g>"</b>" aplikazioari musika hau aldatzeko edo ezabatzeko baimena eman nahi diozu?"</string>
- <string name="permission_video" msgid="8188037202573267740"><b>"<xliff:g id="APP_NAME">^1</xliff:g>"</b>" aplikazioari bideo hau aldatzeko edo ezabatzeko baimena eman nahi diozu?"</string>
- <string name="permission_images" msgid="6711726334380945124"><b>"<xliff:g id="APP_NAME">^1</xliff:g>"</b>" aplikazioari irudi hau aldatzeko edo ezabatzeko baimena eman nahi diozu?"</string>
+ <string name="permission_audio" msgid="344061911159388398">"Musika hau aldatzeko edo ezabatzeko baimena eman nahi diozu "<b>"<xliff:g id="APP_NAME">^1</xliff:g>"</b>" aplikazioari?"</string>
+ <string name="permission_video" msgid="8188037202573267740">"Bideo hau aldatzeko edo ezabatzeko baimena eman nahi diozu "<b>"<xliff:g id="APP_NAME">^1</xliff:g>"</b>" aplikazioari?"</string>
+ <string name="permission_images" msgid="6711726334380945124">"Irudi hau aldatzeko edo ezabatzeko baimena eman nahi diozu "<b>"<xliff:g id="APP_NAME">^1</xliff:g>"</b>" aplikazioari?"</string>
<string name="grant_dialog_button_allow" msgid="1644287024501033471">"Baimendu"</string>
<string name="grant_dialog_button_deny" msgid="6190589471415815741">"Ukatu"</string>
<string name="sound_name_awaken" msgid="5266892392848526147">"Esnatu"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index c73e53a..7aed3cc 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -21,7 +21,7 @@
<string name="app_label" msgid="9035307001052716210">"Stockage multimédia"</string>
<string name="artist_label" msgid="8105600993099120273">"Artiste"</string>
<string name="ringtone_default" msgid="1744846699922263043">"Sonnerie par défaut"</string>
- <string name="notification_sound_default" msgid="6541609166469990135">"Son notif. par défaut"</string>
+ <string name="notification_sound_default" msgid="6541609166469990135">"Son des notifications par défaut"</string>
<string name="alarm_sound_default" msgid="5488847775252870314">"Son de l\'alarme par défaut"</string>
<string name="root_images" msgid="5861633549189045666">"Images"</string>
<string name="root_videos" msgid="8792703517064649453">"Vidéos"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index e4838b5..f96759b 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -32,7 +32,7 @@
<string name="permission_video" msgid="8188037202573267740"><b>"<xliff:g id="APP_NAME">^1</xliff:g>"</b>" колдонмосуна бул музыканы өзгөртүп же өчүрүүгө уруксат берилсинби?"</string>
<string name="permission_images" msgid="6711726334380945124"><b>"<xliff:g id="APP_NAME">^1</xliff:g>"</b>" колдонмосуна бул музыканы өзгөртүүгө же өчүрүүгө уруксат берилсинби?"</string>
<string name="grant_dialog_button_allow" msgid="1644287024501033471">"Уруксат берүү"</string>
- <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Жок"</string>
+ <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Тыюу салынат"</string>
<string name="sound_name_awaken" msgid="5266892392848526147">"Awaken"</string>
<string name="sound_name_bounce" msgid="8771447635446665231">"Bounce"</string>
<string name="sound_name_drip" msgid="1744684469020662152">"Drip"</string>
diff --git a/src/com/android/providers/media/MediaDocumentsProvider.java b/src/com/android/providers/media/MediaDocumentsProvider.java
index 54f5dab..6c593f2 100644
--- a/src/com/android/providers/media/MediaDocumentsProvider.java
+++ b/src/com/android/providers/media/MediaDocumentsProvider.java
@@ -1179,13 +1179,13 @@
private interface SongQuery {
final String[] PROJECTION = new String[] {
AudioColumns._ID,
- AudioColumns.TITLE,
+ AudioColumns.DISPLAY_NAME,
AudioColumns.MIME_TYPE,
AudioColumns.SIZE,
AudioColumns.DATE_MODIFIED };
final int _ID = 0;
- final int TITLE = 1;
+ final int DISPLAY_NAME = 1;
final int MIME_TYPE = 2;
final int SIZE = 3;
final int DATE_MODIFIED = 4;
@@ -1197,7 +1197,7 @@
final RowBuilder row = result.newRow();
row.add(Document.COLUMN_DOCUMENT_ID, docId);
- row.add(Document.COLUMN_DISPLAY_NAME, cursor.getString(SongQuery.TITLE));
+ row.add(Document.COLUMN_DISPLAY_NAME, cursor.getString(SongQuery.DISPLAY_NAME));
row.add(Document.COLUMN_SIZE, cursor.getLong(SongQuery.SIZE));
row.add(Document.COLUMN_MIME_TYPE, cursor.getString(SongQuery.MIME_TYPE));
row.add(Document.COLUMN_LAST_MODIFIED,
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java
index 7f0dd92..fa41353 100644
--- a/src/com/android/providers/media/MediaProvider.java
+++ b/src/com/android/providers/media/MediaProvider.java
@@ -4507,7 +4507,10 @@
private int updateInternal(Uri uri, ContentValues initialValues, String userWhere,
String[] userWhereArgs) {
- if ("com.google.android.GoogleCamera".equals(getCallingPackageOrSelf())) {
+ // Limit the hacky workaround to camera targeting Q and below, to allow newer versions
+ // of camera that does the right thing to work correctly.
+ if ("com.google.android.GoogleCamera".equals(getCallingPackageOrSelf())
+ && getCallingPackageTargetSdkVersion() <= Build.VERSION_CODES.Q) {
if (matchUri(uri, false) == IMAGES_MEDIA_ID) {
Log.w(TAG, "Working around app bug in b/111966296");
uri = MediaStore.Files.getContentUri("external", ContentUris.parseId(uri));
diff --git a/src/com/android/providers/media/RingtonePickerActivity.java b/src/com/android/providers/media/RingtonePickerActivity.java
index 3b35140..f1d0e7e 100644
--- a/src/com/android/providers/media/RingtonePickerActivity.java
+++ b/src/com/android/providers/media/RingtonePickerActivity.java
@@ -154,10 +154,7 @@
if (which == mCursor.getCount() + mStaticItemCount) {
// The "Add new ringtone" item was clicked. Start a file picker intent to select
// only audio files (MIME type "audio/*")
- final Intent chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
- chooseFile.setType("audio/*");
- chooseFile.putExtra(Intent.EXTRA_MIME_TYPES,
- new String[] { "audio/*", "application/ogg" });
+ final Intent chooseFile = getMediaFilePickerIntent();
startActivityForResult(chooseFile, ADD_FILE_REQUEST_CODE);
return;
}
@@ -375,7 +372,8 @@
setSuccessResultWithRingtone(getCurrentlySelectedRingtoneUri());
}
// If external storage is available, add a button to install sounds from storage.
- if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
+ if(resolvesMediaFilePicker()
+ && Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
addNewSoundItem(listView);
}
@@ -633,6 +631,18 @@
return ringtoneManagerPos + mStaticItemCount;
}
+ private Intent getMediaFilePickerIntent() {
+ final Intent chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
+ chooseFile.setType("audio/*");
+ chooseFile.putExtra(Intent.EXTRA_MIME_TYPES,
+ new String[] { "audio/*", "application/ogg" });
+ return chooseFile;
+ }
+
+ private boolean resolvesMediaFilePicker() {
+ return getMediaFilePickerIntent().resolveActivity(getPackageManager()) != null;
+ }
+
private static class LocalizedCursor extends CursorWrapper {
final int mTitleIndex;