Merge "Frameworks changes to enable File Reader and blob.slice APIs."
diff --git a/core/java/android/webkit/JWebCoreJavaBridge.java b/core/java/android/webkit/JWebCoreJavaBridge.java
index cfeb8fb..ecad261 100644
--- a/core/java/android/webkit/JWebCoreJavaBridge.java
+++ b/core/java/android/webkit/JWebCoreJavaBridge.java
@@ -51,7 +51,7 @@
     /* package */
     static final int REFRESH_PLUGINS = 100;
 
-    private HashMap<String, String> mContentUriToFileNameMap;
+    private HashMap<String, String> mContentUriToFilePathMap;
 
     /**
      * Construct a new JWebCoreJavaBridge to interface with
@@ -273,9 +273,9 @@
     }
 
     // Called on the WebCore thread through JNI.
-    private String resolveFileNameForContentUri(String uri) {
-        if (mContentUriToFileNameMap != null) {
-            String fileName = mContentUriToFileNameMap.get(uri);
+    private String resolveFilePathForContentUri(String uri) {
+        if (mContentUriToFilePathMap != null) {
+            String fileName = mContentUriToFilePathMap.get(uri);
             if (fileName != null) {
                 return fileName;
             }
@@ -287,11 +287,11 @@
         return jUri.getLastPathSegment();
     }
 
-    public void storeFileNameForContentUri(String fileName, String contentUri) {
-        if (mContentUriToFileNameMap == null) {
-            mContentUriToFileNameMap = new HashMap<String, String>();
+    public void storeFilePathForContentUri(String path, String contentUri) {
+        if (mContentUriToFilePathMap == null) {
+            mContentUriToFilePathMap = new HashMap<String, String>();
         }
-        mContentUriToFileNameMap.put(contentUri, fileName);
+        mContentUriToFilePathMap.put(contentUri, path);
     }
 
     private native void nativeConstructor();
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 850cc25..5139ae8 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -32,7 +32,8 @@
 import android.os.Looper;
 import android.os.Message;
 import android.os.Process;
-import android.provider.OpenableColumns;
+import android.provider.MediaStore;
+import android.provider.MediaStore.Images.Media;
 import android.util.Log;
 import android.util.SparseBooleanArray;
 import android.view.KeyEvent;
@@ -283,24 +284,26 @@
     private String openFileChooser(String acceptType) {
         Uri uri = mCallbackProxy.openFileChooser(acceptType);
         if (uri != null) {
-            String fileName = "";
+            String filePath = "";
+            // Note - querying for MediaStore.Images.Media.DATA
+            // seems to work for all content URIs, not just images
             Cursor cursor = mContext.getContentResolver().query(
                     uri,
-                    new String[] { OpenableColumns.DISPLAY_NAME },
+                    new String[] { MediaStore.Images.Media.DATA },
                     null, null, null);
             if (cursor != null) {
                 try {
                     if (cursor.moveToNext()) {
-                        fileName = cursor.getString(0);
+                        filePath = cursor.getString(0);
                     }
                 } finally {
                     cursor.close();
                 }
             } else {
-                fileName = uri.getLastPathSegment();
+                filePath = uri.getLastPathSegment();
             }
             String uriString = uri.toString();
-            BrowserFrame.sJavaBridge.storeFileNameForContentUri(fileName, uriString);
+            BrowserFrame.sJavaBridge.storeFilePathForContentUri(filePath, uriString);
             return uriString;
         }
         return "";