Merge "Narrow concession to support legacy apps." into rvc-qpr-dev am: 1ebcca8e49
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/providers/MediaProvider/+/12634766
Change-Id: I0fa79d33fdb7a3b20c0c4b88e6c7f06d2250d4e3
diff --git a/src/com/android/providers/media/util/SQLiteQueryBuilder.java b/src/com/android/providers/media/util/SQLiteQueryBuilder.java
index e95d28c..e68cb80 100644
--- a/src/com/android/providers/media/util/SQLiteQueryBuilder.java
+++ b/src/com/android/providers/media/util/SQLiteQueryBuilder.java
@@ -75,6 +75,7 @@
+ "mov|asf|avi|divx|mpg|mpeg|mkv|webm|mk3d|mks|3gp|mpegts|ts|m2ts|m2t)");
private static final Pattern sPattern156832140 = Pattern.compile(
"(?i)%com\\.gopro\\.smarty%");
+ private static final Pattern sPattern158537159 = Pattern.compile("(?i)localized");
private static final Pattern sCustomCollatorPattern = Pattern.compile(
"(?i)custom_[a-zA-Z]+");
@@ -817,6 +818,7 @@
// proper SQL string substitution
if (sPattern154193772.matcher(token).matches()) return;
if (sPattern156832140.matcher(token).matches()) return;
+ if (sPattern158537159.matcher(token).matches()) return;
}
throw new IllegalArgumentException("Invalid token " + token);
diff --git a/tests/src/com/android/providers/media/util/SQLiteQueryBuilderTest.java b/tests/src/com/android/providers/media/util/SQLiteQueryBuilderTest.java
index 9af8e5d..c8fe3bb 100644
--- a/tests/src/com/android/providers/media/util/SQLiteQueryBuilderTest.java
+++ b/tests/src/com/android/providers/media/util/SQLiteQueryBuilderTest.java
@@ -741,6 +741,25 @@
}
@Test
+ public void testStrict_158537159() {
+ final SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("bucket_id", "bucket_id");
+ builder.setProjectionMap(map);
+ final String sortOrder = "bucket_id COLLATE LOCALIZED ASC";
+ {
+ builder.setTargetSdkVersion(Build.VERSION_CODES.Q);
+ builder.enforceStrictGrammar(null, null, null, sortOrder, null);
+ }
+ try {
+ builder.setTargetSdkVersion(Build.VERSION_CODES.R);
+ builder.enforceStrictGrammar(null, null, null, sortOrder, null);
+ fail("Expected to throw");
+ } catch (IllegalArgumentException expected) {
+ }
+ }
+
+ @Test
public void testStrictCustomCollator() {
final SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
final HashMap<String, String> map = new HashMap<>();