Loading core/java/android/webkit/JWebCoreJavaBridge.java +8 −8 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ final class JWebCoreJavaBridge extends Handler { /* package */ static final int REFRESH_PLUGINS = 100; private HashMap<String, String> mContentUriToFileNameMap; private HashMap<String, String> mContentUriToFilePathMap; /** * Construct a new JWebCoreJavaBridge to interface with Loading Loading @@ -273,9 +273,9 @@ final class JWebCoreJavaBridge extends Handler { } // 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; } Loading @@ -287,11 +287,11 @@ final class JWebCoreJavaBridge extends Handler { 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(); Loading core/java/android/webkit/WebViewCore.java +9 −6 Original line number Diff line number Diff line Loading @@ -32,7 +32,8 @@ import android.os.Handler; 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; Loading Loading @@ -283,24 +284,26 @@ final class WebViewCore { 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 ""; Loading Loading
core/java/android/webkit/JWebCoreJavaBridge.java +8 −8 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ final class JWebCoreJavaBridge extends Handler { /* package */ static final int REFRESH_PLUGINS = 100; private HashMap<String, String> mContentUriToFileNameMap; private HashMap<String, String> mContentUriToFilePathMap; /** * Construct a new JWebCoreJavaBridge to interface with Loading Loading @@ -273,9 +273,9 @@ final class JWebCoreJavaBridge extends Handler { } // 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; } Loading @@ -287,11 +287,11 @@ final class JWebCoreJavaBridge extends Handler { 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(); Loading
core/java/android/webkit/WebViewCore.java +9 −6 Original line number Diff line number Diff line Loading @@ -32,7 +32,8 @@ import android.os.Handler; 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; Loading Loading @@ -283,24 +284,26 @@ final class WebViewCore { 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 ""; Loading