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

Side by Side Diff: android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java

Issue 1242613002: [Android] Supporting floating select ActionModes for web content (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package com.android.webview.chromium; 5 package com.android.webview.chromium;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.graphics.Bitmap; 8 import android.graphics.Bitmap;
9 import android.graphics.BitmapFactory; 9 import android.graphics.BitmapFactory;
10 import android.graphics.Canvas; 10 import android.graphics.Canvas;
11 import android.graphics.Color; 11 import android.graphics.Color;
12 import android.graphics.Picture; 12 import android.graphics.Picture;
13 import android.net.Uri; 13 import android.net.Uri;
14 import android.net.http.SslError; 14 import android.net.http.SslError;
15 import android.os.Build; 15 import android.os.Build;
16 import android.os.Handler; 16 import android.os.Handler;
17 import android.os.Message; 17 import android.os.Message;
18 import android.util.Log; 18 import android.util.Log;
19 import android.view.ActionMode;
20 import android.view.KeyEvent; 19 import android.view.KeyEvent;
21 import android.view.View; 20 import android.view.View;
22 import android.webkit.ClientCertRequest; 21 import android.webkit.ClientCertRequest;
23 import android.webkit.ConsoleMessage; 22 import android.webkit.ConsoleMessage;
24 import android.webkit.DownloadListener; 23 import android.webkit.DownloadListener;
25 import android.webkit.GeolocationPermissions; 24 import android.webkit.GeolocationPermissions;
26 import android.webkit.JsDialogHelper; 25 import android.webkit.JsDialogHelper;
27 import android.webkit.JsPromptResult; 26 import android.webkit.JsPromptResult;
28 import android.webkit.JsResult; 27 import android.webkit.JsResult;
29 import android.webkit.PermissionRequest; 28 import android.webkit.PermissionRequest;
(...skipping 15 matching lines...) Expand all
45 import org.chromium.android_webview.AwWebResourceResponse; 44 import org.chromium.android_webview.AwWebResourceResponse;
46 import org.chromium.android_webview.JsPromptResultReceiver; 45 import org.chromium.android_webview.JsPromptResultReceiver;
47 import org.chromium.android_webview.JsResultReceiver; 46 import org.chromium.android_webview.JsResultReceiver;
48 import org.chromium.android_webview.permission.AwPermissionRequest; 47 import org.chromium.android_webview.permission.AwPermissionRequest;
49 import org.chromium.android_webview.permission.Resource; 48 import org.chromium.android_webview.permission.Resource;
50 import org.chromium.base.ThreadUtils; 49 import org.chromium.base.ThreadUtils;
51 import org.chromium.base.TraceEvent; 50 import org.chromium.base.TraceEvent;
52 import org.chromium.content.browser.ContentView; 51 import org.chromium.content.browser.ContentView;
53 import org.chromium.content.browser.ContentViewClient; 52 import org.chromium.content.browser.ContentViewClient;
54 import org.chromium.content.browser.ContentViewCore; 53 import org.chromium.content.browser.ContentViewCore;
55 import org.chromium.content.browser.WebActionMode;
56 import org.chromium.content.browser.WebActionModeCallback;
57 import org.chromium.content.browser.WebActionModeCallback.ActionHandler;
58 54
59 import java.lang.ref.WeakReference; 55 import java.lang.ref.WeakReference;
60 import java.security.Principal; 56 import java.security.Principal;
61 import java.security.PrivateKey; 57 import java.security.PrivateKey;
62 import java.security.cert.X509Certificate; 58 import java.security.cert.X509Certificate;
63 import java.util.ArrayList; 59 import java.util.ArrayList;
64 import java.util.HashMap; 60 import java.util.HashMap;
65 import java.util.Map; 61 import java.util.Map;
66 import java.util.WeakHashMap; 62 import java.util.WeakHashMap;
67 63
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 try { 389 try {
394 TraceEvent.begin("WebViewContentsClientAdapter.onNewPicture"); 390 TraceEvent.begin("WebViewContentsClientAdapter.onNewPicture");
395 if (mPictureListener == null) return; 391 if (mPictureListener == null) return;
396 if (TRACE) Log.d(TAG, "onNewPicture"); 392 if (TRACE) Log.d(TAG, "onNewPicture");
397 mPictureListener.onNewPicture(mWebView, picture); 393 mPictureListener.onNewPicture(mWebView, picture);
398 } finally { 394 } finally {
399 TraceEvent.end("WebViewContentsClientAdapter.onNewPicture"); 395 TraceEvent.end("WebViewContentsClientAdapter.onNewPicture");
400 } 396 }
401 } 397 }
402 398
403 /**
404 * @See AwContentsClient#startActionMode(View,ActionHandler,boolean)
405 */
406 @Override
407 public WebActionMode startActionMode(
408 View view, ActionHandler actionHandler, boolean floating) {
409 try {
410 TraceEvent.begin("WebViewContentsClientAdapter.startActionMode");
411 if (TRACE) Log.d(TAG, "startActionMode");
412 if (floating && !supportsFloatingActionMode()) return null;
413 if (floating) {
414 return startFloatingActionMode(view, actionHandler);
415 } else {
416 return startDefaultActionMode(view, actionHandler);
417 }
418 } finally {
419 TraceEvent.end("WebViewContentsClientAdapter.startActionMode");
420 }
421 }
422
423 private WebActionMode startDefaultActionMode(View view, ActionHandler action Handler) {
424 ActionMode.Callback callback =
425 new WebActionModeCallback(view.getContext(), actionHandler);
426 return new WebActionMode(view.startActionMode(callback));
427 }
428
429 private WebActionMode startFloatingActionMode(View view, ActionHandler actio nHandler) {
430 ActionMode.Callback2 callback =
431 new FloatingWebActionModeCallback(view.getContext(), actionHandl er);
432 ActionMode actionMode = view.startActionMode(callback, ActionMode.TYPE_F LOATING);
433 return actionMode != null ? new FloatingWebActionMode(actionMode) : null ;
434 }
435
436 /**
437 * @See AwContentsClient#supportsFloatingActionMode()
438 */
439 @Override
440 public boolean supportsFloatingActionMode() {
441 return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
442 }
443
444 @Override 399 @Override
445 public void onLoadResource(String url) { 400 public void onLoadResource(String url) {
446 try { 401 try {
447 TraceEvent.begin("WebViewContentsClientAdapter.onLoadResource"); 402 TraceEvent.begin("WebViewContentsClientAdapter.onLoadResource");
448 if (TRACE) Log.d(TAG, "onLoadResource=" + url); 403 if (TRACE) Log.d(TAG, "onLoadResource=" + url);
449 mWebViewClient.onLoadResource(mWebView, url); 404 mWebViewClient.onLoadResource(mWebView, url);
450 } finally { 405 } finally {
451 TraceEvent.end("WebViewContentsClientAdapter.onLoadResource"); 406 TraceEvent.end("WebViewContentsClientAdapter.onLoadResource");
452 } 407 }
453 } 408 }
(...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after
1317 mAwPermissionRequest.deny(); 1272 mAwPermissionRequest.deny();
1318 } 1273 }
1319 } 1274 }
1320 1275
1321 @Override 1276 @Override
1322 public void deny() { 1277 public void deny() {
1323 mAwPermissionRequest.deny(); 1278 mAwPermissionRequest.deny();
1324 } 1279 }
1325 } 1280 }
1326 } 1281 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698