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

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

Issue 20666003: [Android] Expose showFileChooser in AwContentsClient interface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: again2 Created 7 years, 5 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 0b888d30d3dbdeda968083b21d22595b2d293ba1..f94d3ed1a0d72fd52703faf12f58e39b3eb6a7b0 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java
@@ -11,9 +11,12 @@ import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.ConsoleMessage;
+import android.webkit.ValueCallback;
import org.chromium.content.browser.ContentViewCore;
+import java.util.concurrent.atomic.AtomicBoolean;
+
/**
* Adapts the AwWebContentsDelegate interface to the AwContentsClient interface.
* This class also serves a secondary function of routing certain callbacks from the content layer
@@ -86,14 +89,15 @@ class AwWebContentsDelegateAdapter extends AwWebContentsDelegate {
@Override
public void openNewTab(String url, boolean incognito) {
- // TODO: implement
+ // This is only called in chrome layers.
+ assert false;
}
@Override
public boolean addNewContents(int nativeSourceWebContents, int nativeWebContents,
int disposition, Rect initialPosition, boolean userGesture) {
- // TODO: implement
- return false;
+ // This is overridden native side; see the other addNewContents overload.
+ throw new RuntimeException("Impossible");
}
@Override
@@ -136,6 +140,34 @@ class AwWebContentsDelegateAdapter extends AwWebContentsDelegate {
}
@Override
+ public void runFileChooser(final int processId, final int renderId, final int mode_flags,
+ String acceptTypes, String title, String defaultFilename, boolean capture) {
+ AwContentsClient.FileChooserParams params = new AwContentsClient.FileChooserParams();
+ params.mode = mode_flags;
+ params.acceptTypes = acceptTypes;
+ params.title = title;
+ params.defaultFilename = defaultFilename;
+ params.capture = capture;
+
+ // AtomicBoolen used only to allow mutation via final reference; it is only accesed on the
+ // main thread.
+ final AtomicBoolean completed = new AtomicBoolean(false);
+ boolean ret = mContentsClient.showFileChooser(new ValueCallback<String[]>() {
+ @Override
+ public void onReceiveValue(String[] results) {
+ if (completed.getAndSet(true)) {
+ Log.w(TAG, "Ignroing spurious showFileChooser result");
mkosiba (inactive) 2013/07/29 10:59:03 same thing here - IMHO this should throw because i
joth 2013/08/03 19:01:05 Done.
+ return;
+ }
+ nativeFilesSelectedInChooser(processId, renderId, mode_flags, results);
+ }
+ }, params);
+ if (!ret && !completed.getAndSet(true)) {
mkosiba (inactive) 2013/07/29 10:59:03 ISTM we should throw some sort of exception the 3r
joth 2013/08/03 19:01:05 Done.
+ nativeFilesSelectedInChooser(processId, renderId, mode_flags, null);
+ }
+ }
+
+ @Override
public boolean addNewContents(boolean isDialog, boolean isUserGesture) {
return mContentsClient.onCreateWindow(isDialog, isUserGesture);
}

Powered by Google App Engine
This is Rietveld 408576698