If media wants ASCII lowercasing, it needs to ask for it.
http://elliotth.blogspot.com/2012/01/beware-convenience-methods.html
Use toLowerCase(Locale.ROOT) if you want ASCII for machine consumption,
and use toLowerCase(Locale.getDefault()) if you want the user's locale's
casing rules for human consumption.
Bug: https://code.google.com/p/android/issues/detail?id=58359
Change-Id: Id9005a17e34217a81bef3b40031b9e2e6272f45d
diff --git a/media/java/android/media/MediaFile.java b/media/java/android/media/MediaFile.java
index 06d43a2..761ecca 100644
--- a/media/java/android/media/MediaFile.java
+++ b/media/java/android/media/MediaFile.java
@@ -28,6 +28,7 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
/**
* MediaScanner helper class.
@@ -276,10 +277,10 @@
}
public static MediaFileType getFileType(String path) {
- int lastDot = path.lastIndexOf(".");
+ int lastDot = path.lastIndexOf('.');
if (lastDot < 0)
return null;
- return sFileTypeMap.get(path.substring(lastDot + 1).toUpperCase());
+ return sFileTypeMap.get(path.substring(lastDot + 1).toUpperCase(Locale.ROOT));
}
public static boolean isMimeTypeMedia(String mimeType) {
@@ -325,7 +326,7 @@
}
int lastDot = fileName.lastIndexOf('.');
if (lastDot > 0) {
- String extension = fileName.substring(lastDot + 1).toUpperCase();
+ String extension = fileName.substring(lastDot + 1).toUpperCase(Locale.ROOT);
Integer value = sFileTypeToFormatMap.get(extension);
if (value != null) {
return value.intValue();
diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java
index 726e6de..de3041e 100644
--- a/media/java/android/media/MediaScanner.java
+++ b/media/java/android/media/MediaScanner.java
@@ -540,7 +540,7 @@
if (noMedia) {
result = endFile(entry, false, false, false, false, false);
} else {
- String lowpath = path.toLowerCase();
+ String lowpath = path.toLowerCase(Locale.ROOT);
boolean ringtones = (lowpath.indexOf(RINGTONES_DIR) > 0);
boolean notifications = (lowpath.indexOf(NOTIFICATIONS_DIR) > 0);
boolean alarms = (lowpath.indexOf(ALARMS_DIR) > 0);
diff --git a/media/mca/filterpacks/java/android/filterpacks/text/ToUpperCase.java b/media/mca/filterpacks/java/android/filterpacks/text/ToUpperCase.java
index 0cf3477..5ff0af1 100644
--- a/media/mca/filterpacks/java/android/filterpacks/text/ToUpperCase.java
+++ b/media/mca/filterpacks/java/android/filterpacks/text/ToUpperCase.java
@@ -23,6 +23,8 @@
import android.filterfw.core.FrameFormat;
import android.filterfw.format.ObjectFormat;
+import java.util.Locale;
+
/**
* @hide
*/
@@ -47,7 +49,7 @@
String inputString = (String)input.getObjectValue();
Frame output = env.getFrameManager().newFrame(mOutputFormat);
- output.setObjectValue(inputString.toUpperCase());
+ output.setObjectValue(inputString.toUpperCase(Locale.getDefault()));
pushOutput("uppercase", output);
}
diff --git a/media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectViewer.java b/media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectViewer.java
index ef69c44..b288984 100644
--- a/media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectViewer.java
+++ b/media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectViewer.java
@@ -37,6 +37,7 @@
import java.io.File;
import java.util.Date;
+import java.util.Locale;
/**
* A view to display the properties of an object.
@@ -120,7 +121,7 @@
mFileName = info.getName();
view.setText(mFileName);
view = (TextView)findViewById(R.id.format);
- view.setText(Integer.toHexString(info.getFormat()).toUpperCase());
+ view.setText(Integer.toHexString(info.getFormat()).toUpperCase(Locale.ROOT));
view = (TextView)findViewById(R.id.size);
view.setText(Long.toString(info.getCompressedSize()));
view = (TextView)findViewById(R.id.thumb_width);