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

Side by Side Diff: android_webview/java/src/org/chromium/android_webview/AwContents.java

Issue 705933002: [Android WebView] Implement SmartClipProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 org.chromium.android_webview; 5 package org.chromium.android_webview;
6 6
7 import android.annotation.SuppressLint; 7 import android.annotation.SuppressLint;
8 import android.app.Activity; 8 import android.app.Activity;
9 import android.content.ComponentCallbacks2; 9 import android.content.ComponentCallbacks2;
10 import android.content.Context; 10 import android.content.Context;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 import org.chromium.base.CalledByNative; 42 import org.chromium.base.CalledByNative;
43 import org.chromium.base.JNINamespace; 43 import org.chromium.base.JNINamespace;
44 import org.chromium.base.ThreadUtils; 44 import org.chromium.base.ThreadUtils;
45 import org.chromium.base.VisibleForTesting; 45 import org.chromium.base.VisibleForTesting;
46 import org.chromium.components.navigation_interception.InterceptNavigationDelega te; 46 import org.chromium.components.navigation_interception.InterceptNavigationDelega te;
47 import org.chromium.components.navigation_interception.NavigationParams; 47 import org.chromium.components.navigation_interception.NavigationParams;
48 import org.chromium.content.browser.ContentSettings; 48 import org.chromium.content.browser.ContentSettings;
49 import org.chromium.content.browser.ContentViewClient; 49 import org.chromium.content.browser.ContentViewClient;
50 import org.chromium.content.browser.ContentViewCore; 50 import org.chromium.content.browser.ContentViewCore;
51 import org.chromium.content.browser.ContentViewStatics; 51 import org.chromium.content.browser.ContentViewStatics;
52 import org.chromium.content.browser.SmartClipProvider;
52 import org.chromium.content.browser.WebContentsObserver; 53 import org.chromium.content.browser.WebContentsObserver;
53 import org.chromium.content.common.CleanupReference; 54 import org.chromium.content.common.CleanupReference;
54 import org.chromium.content_public.browser.GestureStateListener; 55 import org.chromium.content_public.browser.GestureStateListener;
55 import org.chromium.content_public.browser.JavaScriptCallback; 56 import org.chromium.content_public.browser.JavaScriptCallback;
56 import org.chromium.content_public.browser.LoadUrlParams; 57 import org.chromium.content_public.browser.LoadUrlParams;
57 import org.chromium.content_public.browser.NavigationController; 58 import org.chromium.content_public.browser.NavigationController;
58 import org.chromium.content_public.browser.NavigationHistory; 59 import org.chromium.content_public.browser.NavigationHistory;
59 import org.chromium.content_public.browser.WebContents; 60 import org.chromium.content_public.browser.WebContents;
60 import org.chromium.content_public.common.Referrer; 61 import org.chromium.content_public.common.Referrer;
61 import org.chromium.ui.base.ActivityWindowAndroid; 62 import org.chromium.ui.base.ActivityWindowAndroid;
(...skipping 12 matching lines...) Expand all
74 75
75 /** 76 /**
76 * Exposes the native AwContents class, and together these classes wrap the Cont entViewCore 77 * Exposes the native AwContents class, and together these classes wrap the Cont entViewCore
77 * and Browser components that are required to implement Android WebView API. Th is is the 78 * and Browser components that are required to implement Android WebView API. Th is is the
78 * primary entry point for the WebViewProvider implementation; it holds a 1:1 ob ject 79 * primary entry point for the WebViewProvider implementation; it holds a 1:1 ob ject
79 * relationship with application WebView instances. 80 * relationship with application WebView instances.
80 * (We define this class independent of the hidden WebViewProvider interfaces, t o allow 81 * (We define this class independent of the hidden WebViewProvider interfaces, t o allow
81 * continuous build & test in the open source SDK-based tree). 82 * continuous build & test in the open source SDK-based tree).
82 */ 83 */
83 @JNINamespace("android_webview") 84 @JNINamespace("android_webview")
84 public class AwContents { 85 public class AwContents implements SmartClipProvider {
boliu 2014/11/07 01:12:23 drive-by suggestion: pull this out into a helper c
85 private static final String TAG = "AwContents"; 86 private static final String TAG = "AwContents";
86 87
87 private static final String WEB_ARCHIVE_EXTENSION = ".mht"; 88 private static final String WEB_ARCHIVE_EXTENSION = ".mht";
88 89
89 // Used to avoid enabling zooming in / out if resulting zooming will 90 // Used to avoid enabling zooming in / out if resulting zooming will
90 // produce little visible difference. 91 // produce little visible difference.
91 private static final float ZOOM_CONTROLS_EPSILON = 0.007f; 92 private static final float ZOOM_CONTROLS_EPSILON = 0.007f;
92 93
93 /** 94 /**
94 * WebKit hit test related data strcutre. These are used to implement 95 * WebKit hit test related data strcutre. These are used to implement
(...skipping 2132 matching lines...) Expand 10 before | Expand all | Expand 10 after
2227 2228
2228 for (int i = 1; i < 100; i++) { 2229 for (int i = 1; i < 100; i++) {
2229 testName = baseName + name + "-" + i + WEB_ARCHIVE_EXTENSION; 2230 testName = baseName + name + "-" + i + WEB_ARCHIVE_EXTENSION;
2230 if (!new File(testName).exists()) return testName; 2231 if (!new File(testName).exists()) return testName;
2231 } 2232 }
2232 2233
2233 Log.e(TAG, "Unable to auto generate archive name for path: " + baseName) ; 2234 Log.e(TAG, "Unable to auto generate archive name for path: " + baseName) ;
2234 return null; 2235 return null;
2235 } 2236 }
2236 2237
2238 @Override
2237 public void extractSmartClipData(int x, int y, int width, int height) { 2239 public void extractSmartClipData(int x, int y, int width, int height) {
2238 if (!isDestroyed()) mContentViewCore.extractSmartClipData(x, y, width, h eight); 2240 if (!isDestroyed()) mContentViewCore.extractSmartClipData(x, y, width, h eight);
2239 } 2241 }
2240 2242
2241 public void setSmartClipDataListener(ContentViewCore.SmartClipDataListener l istener) { 2243 @Override
2242 if (!isDestroyed()) mContentViewCore.setSmartClipDataListener(listener); 2244 public void setSmartClipResultHandler(final Handler resultHandler) {
2245 if (isDestroyed()) return;
2246
2247 if (resultHandler == null) {
2248 mContentViewCore.setSmartClipDataListener(null);
2249 return;
2250 }
2251 mContentViewCore.setSmartClipDataListener(new ContentViewCore.SmartClipD ataListener() {
2252 public void onSmartClipDataExtracted(String text, String html, Rect clipRect) {
2253 Bundle bundle = new Bundle();
2254 bundle.putString("url", mContentViewCore.getWebContents().getVis ibleUrl());
2255 bundle.putString("title", mContentViewCore.getWebContents().getT itle());
2256 bundle.putParcelable("rect", clipRect);
2257 bundle.putString("text", text);
2258 bundle.putString("html", html);
2259 try {
2260 Message msg = Message.obtain(resultHandler, 0);
2261 msg.setData(bundle);
2262 msg.sendToTarget();
2263 } catch (Exception e) {
2264 Log.e(TAG, "Error calling handler for smart clip data: ", e) ;
2265 }
2266 }
2267 });
2243 } 2268 }
2244 2269
2245 // ------------------------------------------------------------------------- ------------------- 2270 // ------------------------------------------------------------------------- -------------------
2246 // This is the AwViewMethods implementation that does real work. The AwViewM ethodsImpl is 2271 // This is the AwViewMethods implementation that does real work. The AwViewM ethodsImpl is
2247 // hooked up to the WebView in embedded mode and to the FullScreenView in fu llscreen mode, 2272 // hooked up to the WebView in embedded mode and to the FullScreenView in fu llscreen mode,
2248 // but not to both at the same time. 2273 // but not to both at the same time.
2249 private class AwViewMethodsImpl implements AwViewMethods { 2274 private class AwViewMethodsImpl implements AwViewMethods {
2250 private int mLayerType = View.LAYER_TYPE_NONE; 2275 private int mLayerType = View.LAYER_TYPE_NONE;
2251 private ComponentCallbacks2 mComponentCallbacks; 2276 private ComponentCallbacks2 mComponentCallbacks;
2252 2277
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
2612 2637
2613 private native void nativeSetJsOnlineProperty(long nativeAwContents, boolean networkUp); 2638 private native void nativeSetJsOnlineProperty(long nativeAwContents, boolean networkUp);
2614 2639
2615 private native void nativeTrimMemory(long nativeAwContents, int level, boole an visible); 2640 private native void nativeTrimMemory(long nativeAwContents, int level, boole an visible);
2616 2641
2617 private native void nativeCreatePdfExporter(long nativeAwContents, AwPdfExpo rter awPdfExporter); 2642 private native void nativeCreatePdfExporter(long nativeAwContents, AwPdfExpo rter awPdfExporter);
2618 2643
2619 private native void nativePreauthorizePermission(long nativeAwContents, Stri ng origin, 2644 private native void nativePreauthorizePermission(long nativeAwContents, Stri ng origin,
2620 long resources); 2645 long resources);
2621 } 2646 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698