Loading core/java/android/app/Notification.java +12 −0 Original line number Diff line number Diff line Loading @@ -2857,6 +2857,18 @@ public class Notification implements Parcelable if (person != null) { visitor.accept(person.getIconUri()); } final RemoteInputHistoryItem[] history = extras.getParcelableArray( Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS, RemoteInputHistoryItem.class); if (history != null) { for (int i = 0; i < history.length; i++) { RemoteInputHistoryItem item = history[i]; if (item.getUri() != null) { visitor.accept(item.getUri()); } } } } if (isStyle(MessagingStyle.class) && extras != null) { Loading core/java/android/database/DatabaseUtils.java +23 −9 Original line number Diff line number Diff line Loading @@ -511,17 +511,31 @@ public class DatabaseUtils { */ public static void appendEscapedSQLString(StringBuilder sb, String sqlString) { sb.append('\''); if (sqlString.indexOf('\'') != -1) { int length = sqlString.length(); for (int i = 0; i < length; i++) { char c = sqlString.charAt(i); if (Character.isHighSurrogate(c)) { if (i == length - 1) { continue; } if (Character.isLowSurrogate(sqlString.charAt(i + 1))) { // add them both sb.append(c); sb.append(sqlString.charAt(i + 1)); continue; } else { // this is a lone surrogate, skip it continue; } } if (Character.isLowSurrogate(c)) { continue; } if (c == '\'') { sb.append('\''); } sb.append(c); } } else sb.append(sqlString); sb.append('\''); } Loading core/jni/android_view_InputDevice.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -42,6 +42,13 @@ jobject android_view_InputDevice_create(JNIEnv* env, const InputDeviceInfo& devi return NULL; } // b/274058082: Pass a copy of the key character map to avoid concurrent // access std::shared_ptr<KeyCharacterMap> map = deviceInfo.getKeyCharacterMap(); if (map != nullptr) { map = std::make_shared<KeyCharacterMap>(*map); } ScopedLocalRef<jstring> descriptorObj(env, env->NewStringUTF(deviceInfo.getIdentifier().descriptor.c_str())); if (!descriptorObj.get()) { Loading @@ -50,7 +57,7 @@ jobject android_view_InputDevice_create(JNIEnv* env, const InputDeviceInfo& devi ScopedLocalRef<jobject> kcmObj(env, android_view_KeyCharacterMap_create(env, deviceInfo.getId(), deviceInfo.getKeyCharacterMap())); map)); if (!kcmObj.get()) { return NULL; } Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java +14 −7 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.content.Intent; import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.net.Uri; import android.os.Bundle; import android.os.Handler; Loading Loading @@ -513,6 +514,11 @@ public class PipMenuView extends FrameLayout { final boolean isCloseAction = mCloseAction != null && Objects.equals( mCloseAction.getActionIntent(), action.getActionIntent()); final int iconType = action.getIcon().getType(); if (iconType == Icon.TYPE_URI || iconType == Icon.TYPE_URI_ADAPTIVE_BITMAP) { // Disallow loading icon from content URI actionView.setImageDrawable(null); } else { // TODO: Check if the action drawable has changed before we reload it action.getIcon().loadDrawableAsync(mContext, d -> { if (d != null) { Loading @@ -520,6 +526,7 @@ public class PipMenuView extends FrameLayout { actionView.setImageDrawable(d); } }, mMainHandler); } actionView.setCustomCloseBackgroundVisibility( isCloseAction ? View.VISIBLE : View.GONE); actionView.setContentDescription(action.getContentDescription()); Loading media/java/android/media/RingtoneManager.java +17 −2 Original line number Diff line number Diff line Loading @@ -833,6 +833,21 @@ public class RingtoneManager { if(!isInternalRingtoneUri(ringtoneUri)) { ringtoneUri = ContentProvider.maybeAddUserId(ringtoneUri, context.getUserId()); } if (ringtoneUri != null) { final String mimeType = resolver.getType(ringtoneUri); if (mimeType == null) { Log.e(TAG, "setActualDefaultRingtoneUri for URI:" + ringtoneUri + " ignored: failure to find mimeType (no access from this context?)"); return; } if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg"))) { Log.e(TAG, "setActualDefaultRingtoneUri for URI:" + ringtoneUri + " ignored: associated mimeType:" + mimeType + " is not an audio type"); return; } } Settings.System.putStringForUser(resolver, setting, ringtoneUri != null ? ringtoneUri.toString() : null, context.getUserId()); Loading Loading
core/java/android/app/Notification.java +12 −0 Original line number Diff line number Diff line Loading @@ -2857,6 +2857,18 @@ public class Notification implements Parcelable if (person != null) { visitor.accept(person.getIconUri()); } final RemoteInputHistoryItem[] history = extras.getParcelableArray( Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS, RemoteInputHistoryItem.class); if (history != null) { for (int i = 0; i < history.length; i++) { RemoteInputHistoryItem item = history[i]; if (item.getUri() != null) { visitor.accept(item.getUri()); } } } } if (isStyle(MessagingStyle.class) && extras != null) { Loading
core/java/android/database/DatabaseUtils.java +23 −9 Original line number Diff line number Diff line Loading @@ -511,17 +511,31 @@ public class DatabaseUtils { */ public static void appendEscapedSQLString(StringBuilder sb, String sqlString) { sb.append('\''); if (sqlString.indexOf('\'') != -1) { int length = sqlString.length(); for (int i = 0; i < length; i++) { char c = sqlString.charAt(i); if (Character.isHighSurrogate(c)) { if (i == length - 1) { continue; } if (Character.isLowSurrogate(sqlString.charAt(i + 1))) { // add them both sb.append(c); sb.append(sqlString.charAt(i + 1)); continue; } else { // this is a lone surrogate, skip it continue; } } if (Character.isLowSurrogate(c)) { continue; } if (c == '\'') { sb.append('\''); } sb.append(c); } } else sb.append(sqlString); sb.append('\''); } Loading
core/jni/android_view_InputDevice.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -42,6 +42,13 @@ jobject android_view_InputDevice_create(JNIEnv* env, const InputDeviceInfo& devi return NULL; } // b/274058082: Pass a copy of the key character map to avoid concurrent // access std::shared_ptr<KeyCharacterMap> map = deviceInfo.getKeyCharacterMap(); if (map != nullptr) { map = std::make_shared<KeyCharacterMap>(*map); } ScopedLocalRef<jstring> descriptorObj(env, env->NewStringUTF(deviceInfo.getIdentifier().descriptor.c_str())); if (!descriptorObj.get()) { Loading @@ -50,7 +57,7 @@ jobject android_view_InputDevice_create(JNIEnv* env, const InputDeviceInfo& devi ScopedLocalRef<jobject> kcmObj(env, android_view_KeyCharacterMap_create(env, deviceInfo.getId(), deviceInfo.getKeyCharacterMap())); map)); if (!kcmObj.get()) { return NULL; } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java +14 −7 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.content.Intent; import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.net.Uri; import android.os.Bundle; import android.os.Handler; Loading Loading @@ -513,6 +514,11 @@ public class PipMenuView extends FrameLayout { final boolean isCloseAction = mCloseAction != null && Objects.equals( mCloseAction.getActionIntent(), action.getActionIntent()); final int iconType = action.getIcon().getType(); if (iconType == Icon.TYPE_URI || iconType == Icon.TYPE_URI_ADAPTIVE_BITMAP) { // Disallow loading icon from content URI actionView.setImageDrawable(null); } else { // TODO: Check if the action drawable has changed before we reload it action.getIcon().loadDrawableAsync(mContext, d -> { if (d != null) { Loading @@ -520,6 +526,7 @@ public class PipMenuView extends FrameLayout { actionView.setImageDrawable(d); } }, mMainHandler); } actionView.setCustomCloseBackgroundVisibility( isCloseAction ? View.VISIBLE : View.GONE); actionView.setContentDescription(action.getContentDescription()); Loading
media/java/android/media/RingtoneManager.java +17 −2 Original line number Diff line number Diff line Loading @@ -833,6 +833,21 @@ public class RingtoneManager { if(!isInternalRingtoneUri(ringtoneUri)) { ringtoneUri = ContentProvider.maybeAddUserId(ringtoneUri, context.getUserId()); } if (ringtoneUri != null) { final String mimeType = resolver.getType(ringtoneUri); if (mimeType == null) { Log.e(TAG, "setActualDefaultRingtoneUri for URI:" + ringtoneUri + " ignored: failure to find mimeType (no access from this context?)"); return; } if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg"))) { Log.e(TAG, "setActualDefaultRingtoneUri for URI:" + ringtoneUri + " ignored: associated mimeType:" + mimeType + " is not an audio type"); return; } } Settings.System.putStringForUser(resolver, setting, ringtoneUri != null ? ringtoneUri.toString() : null, context.getUserId()); Loading