Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(186)

Unified Diff: android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java

Issue 450003002: Pass display names for uploaded content URI files (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: move getDisplayName(Uri, ContentResolver) to ContentUriUtils Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java
diff --git a/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java b/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java
index 85466cecd6db88d9d7b636ba107591430121121e..738b54af30f3e3d74501780409b10853ba7b08ff 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java
@@ -4,6 +4,9 @@
package org.chromium.android_webview;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
@@ -12,6 +15,7 @@ import android.view.View;
import android.webkit.ConsoleMessage;
import android.webkit.ValueCallback;
+import org.chromium.base.ContentUriUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.content.browser.ContentVideoView;
import org.chromium.content.browser.ContentViewCore;
@@ -26,11 +30,13 @@ class AwWebContentsDelegateAdapter extends AwWebContentsDelegate {
final AwContentsClient mContentsClient;
View mContainerView;
+ final Context mContext;
public AwWebContentsDelegateAdapter(AwContentsClient contentsClient,
- View containerView) {
+ View containerView, Context context) {
mContentsClient = contentsClient;
setContainerView(containerView);
+ mContext = context;
}
public void setContainerView(View containerView) {
@@ -178,7 +184,17 @@ class AwWebContentsDelegateAdapter extends AwWebContentsDelegate {
throw new IllegalStateException("Duplicate showFileChooser result");
}
mCompleted = true;
- nativeFilesSelectedInChooser(processId, renderId, mode_flags, results);
+ if (results == null) {
+ nativeFilesSelectedInChooser(
+ processId, renderId, mode_flags, null, null);
+ return;
+ }
+ String[] displayNames = new String[results.length];
+ for (int i = 0; i < results.length; ++i) {
+ displayNames[i] = resolveFileName(results[i]);
+ }
+ nativeFilesSelectedInChooser(
+ processId, renderId, mode_flags, results, displayNames);
}
}, params);
}
@@ -200,4 +216,20 @@ class AwWebContentsDelegateAdapter extends AwWebContentsDelegate {
if (videoView != null) videoView.exitFullscreen(false);
}
}
+
+ /**
+ * @return the display name of a path if it is a content URI and is present in the database
+ * or an empty string otherwise.
+ */
+ private String resolveFileName(String filePath) {
+ // Querying the ContentResolver on the UI thread may introduce extra latency.
+ // However, that is incomparable to the latency introduce by user interaction
boliu 2014/08/11 19:58:14 That's a bad argument, because this delay is *afte
sgurun-gerrit only 2014/08/11 21:23:24 agreed with Bo. This is after user already chose t
qinmin 2014/08/11 22:49:29 Ok, moved all the contentResolver queries to an as
+ // with the select file dialog.
+ // TODO(qinmin): Run an async task to resolve all the file names, and pass
+ // the result back to the UI thread to run nativeFilesSelectedInChooser.
+ ContentResolver contentResolver = mContext.getContentResolver();
+ if (contentResolver == null || filePath == null) return "";
+ Uri uri = Uri.parse(filePath);
+ return ContentUriUtils.getDisplayName(uri, contentResolver);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698