diff options
author | jdduke@chromium.org <jdduke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-18 17:52:28 +0000 |
---|---|---|
committer | jdduke@chromium.org <jdduke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-18 17:52:28 +0000 |
commit | cc71955068e5129a7dd03d2b7eb36ab80e326a54 (patch) | |
tree | 89e07211b68292dde333cb825c46be1b3cc05405 | |
parent | a2b4a08781fd32ecfff1a0be681e79c1a75a8909 (diff) | |
download | chromium_src-cc71955068e5129a7dd03d2b7eb36ab80e326a54.zip chromium_src-cc71955068e5129a7dd03d2b7eb36ab80e326a54.tar.gz chromium_src-cc71955068e5129a7dd03d2b7eb36ab80e326a54.tar.bz2 |
Merge 283159 "[Android] Extend smart clip to return html along w..."
> [Android] Extend smart clip to return html along with text
>
> BUG=388961
>
> Review URL: https://codereview.chromium.org/378233002
TBR=changwan@chromium.org
Review URL: https://codereview.chromium.org/398633003
git-svn-id: svn://svn.chromium.org/chrome/branches/1985_122/src@284148 0039d316-1c4b-4281-b951-d872f2087c98
9 files changed, 55 insertions, 22 deletions
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ContentViewTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ContentViewTest.java index de75d28..abfb652 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ContentViewTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ContentViewTest.java @@ -4,6 +4,7 @@ package org.chromium.chrome.browser; +import android.graphics.Rect; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; @@ -33,14 +34,32 @@ public class ContentViewTest extends ChromeShellTestBase implements Handler.Call return mUrl; } - public void notifyCalled(String title, String url) { + public String getText() { + return mText; + } + + public String getHtml() { + return mHtml; + } + + public Rect getRect() { + return mRect; + } + + public void notifyCalled(String title, String url, String text, String html, Rect rect) { mTitle = title; mUrl = url; + mText = text; + mHtml = html; + mRect = rect; super.notifyCalled(); } private String mTitle; private String mUrl; + private String mText; + private String mHtml; + private Rect mRect; } private ChromeShellActivity mActivity; @@ -74,8 +93,11 @@ public class ContentViewTest extends ChromeShellTestBase implements Handler.Call assertNotNull(bundle); String url = bundle.getString("url"); String title = bundle.getString("title"); + String text = bundle.getString("text"); + String html = bundle.getString("html"); + Rect rect = bundle.getParcelable("rect"); // We don't care about other values for now. - mCallbackHelper.notifyCalled(title, url); + mCallbackHelper.notifyCalled(title, url, text, html, rect); return true; } @@ -92,7 +114,10 @@ public class ContentViewTest extends ChromeShellTestBase implements Handler.Call } }); mCallbackHelper.waitForCallback(0, 1); // call count: 0 --> 1 - assertNotNull("about:blank", mCallbackHelper.getTitle()); - assertNotNull("about:blank", mCallbackHelper.getUrl()); + assertEquals("about:blank", mCallbackHelper.getTitle()); + assertEquals("about:blank", mCallbackHelper.getUrl()); + assertNotNull(mCallbackHelper.getText()); + assertNotNull(mCallbackHelper.getHtml()); + assertNotNull(mCallbackHelper.getRect()); } } diff --git a/content/browser/android/content_view_core_impl.cc b/content/browser/android/content_view_core_impl.cc index 2c8dc1d..12fa472 100644 --- a/content/browser/android/content_view_core_impl.cc +++ b/content/browser/android/content_view_core_impl.cc @@ -1667,16 +1667,18 @@ jint ContentViewCoreImpl::GetCurrentRenderProcessId(JNIEnv* env, jobject obj) { } void ContentViewCoreImpl::OnSmartClipDataExtracted( - const gfx::Rect& clip_rect, - const base::string16& result) { + const base::string16& text, + const base::string16& html, + const gfx::Rect& clip_rect) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return; + ScopedJavaLocalRef<jstring> jtext = ConvertUTF16ToJavaString(env, text); + ScopedJavaLocalRef<jstring> jhtml = ConvertUTF16ToJavaString(env, html); ScopedJavaLocalRef<jobject> clip_rect_object(CreateJavaRect(env, clip_rect)); - ScopedJavaLocalRef<jstring> jresult = ConvertUTF16ToJavaString(env, result); Java_ContentViewCore_onSmartClipDataExtracted( - env, obj.obj(), jresult.obj(), clip_rect_object.obj()); + env, obj.obj(), jtext.obj(), jhtml.obj(), clip_rect_object.obj()); } void ContentViewCoreImpl::WebContentsDestroyed() { diff --git a/content/browser/android/content_view_core_impl.h b/content/browser/android/content_view_core_impl.h index f0df25a..0b224f36 100644 --- a/content/browser/android/content_view_core_impl.h +++ b/content/browser/android/content_view_core_impl.h @@ -230,8 +230,9 @@ class ContentViewCoreImpl : public ContentViewCore, // Public methods that call to Java via JNI // -------------------------------------------------------------------------- - void OnSmartClipDataExtracted(const gfx::Rect& clip_rect, - const base::string16& result); + void OnSmartClipDataExtracted(const base::string16& text, + const base::string16& html, + const gfx::Rect& clip_rect); // Creates a popup menu with |items|. // |multiple| defines if it should support multi-select. diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc index b2ce738..dfbbe2a 100644 --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc @@ -556,10 +556,11 @@ void RenderWidgetHostViewAndroid::OnStartContentIntent( } void RenderWidgetHostViewAndroid::OnSmartClipDataExtracted( - const base::string16& result, + const base::string16& text, + const base::string16& html, const gfx::Rect rect) { if (content_view_core_) - content_view_core_->OnSmartClipDataExtracted(rect, result); + content_view_core_->OnSmartClipDataExtracted(text, html, rect); } bool RenderWidgetHostViewAndroid::OnTouchEvent( diff --git a/content/browser/renderer_host/render_widget_host_view_android.h b/content/browser/renderer_host/render_widget_host_view_android.h index 9f1bce10..025caa6 100644 --- a/content/browser/renderer_host/render_widget_host_view_android.h +++ b/content/browser/renderer_host/render_widget_host_view_android.h @@ -211,7 +211,8 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid void OnDidOverscroll(const DidOverscrollParams& params); void OnStartContentIntent(const GURL& content_url); void OnSetNeedsBeginFrame(bool enabled); - void OnSmartClipDataExtracted(const base::string16& result, + void OnSmartClipDataExtracted(const base::string16& text, + const base::string16& html, const gfx::Rect rect); bool OnTouchEvent(const ui::MotionEvent& event); diff --git a/content/common/view_messages.h b/content/common/view_messages.h index c2bdcd3..8264065 100644 --- a/content/common/view_messages.h +++ b/content/common/view_messages.h @@ -1724,8 +1724,9 @@ IPC_MESSAGE_ROUTED1(ViewHostMsg_SetNeedsBeginFrame, bool /* enabled */) // Reply to the ViewMsg_ExtractSmartClipData message. -IPC_MESSAGE_ROUTED2(ViewHostMsg_SmartClipDataExtracted, - base::string16 /* result */, +IPC_MESSAGE_ROUTED3(ViewHostMsg_SmartClipDataExtracted, + base::string16 /* text */, + base::string16 /* html */, gfx::Rect /* rect */) #elif defined(OS_MACOSX) diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentView.java b/content/public/android/java/src/org/chromium/content/browser/ContentView.java index a41a6fa..e733a9a 100644 --- a/content/public/android/java/src/org/chromium/content/browser/ContentView.java +++ b/content/public/android/java/src/org/chromium/content/browser/ContentView.java @@ -313,12 +313,13 @@ public class ContentView extends FrameLayout return; } mContentViewCore.setSmartClipDataListener(new ContentViewCore.SmartClipDataListener() { - public void onSmartClipDataExtracted(String text, Rect clipRect) { + public void onSmartClipDataExtracted(String text, String html, Rect clipRect) { Bundle bundle = new Bundle(); bundle.putString("url", mContentViewCore.getWebContents().getVisibleUrl()); bundle.putString("title", mContentViewCore.getWebContents().getTitle()); - bundle.putParcelable("area", clipRect); + bundle.putParcelable("rect", clipRect); bundle.putString("text", text); + bundle.putString("html", html); try { Message msg = Message.obtain(resultHandler, 0); msg.setData(bundle); diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java index 716f0cc..e632f52 100644 --- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java +++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java @@ -216,7 +216,7 @@ public class ContentViewCore * extractSmartClipData are available. */ public interface SmartClipDataListener { - public void onSmartClipDataExtracted(String result, Rect cliprect); + public void onSmartClipDataExtracted(String text, String html, Rect clipRect); } private final Context mContext; @@ -3066,9 +3066,9 @@ public class ContentViewCore } @CalledByNative - private void onSmartClipDataExtracted(String result, Rect cliprect) { + private void onSmartClipDataExtracted(String text, String html, Rect clipRect) { if (mSmartClipDataListener != null ) { - mSmartClipDataListener.onSmartClipDataExtracted(result, cliprect); + mSmartClipDataListener.onSmartClipDataExtracted(text, html, clipRect); } } diff --git a/content/renderer/render_view_impl_android.cc b/content/renderer/render_view_impl_android.cc index d16f9e7..d3e81ad 100644 --- a/content/renderer/render_view_impl_android.cc +++ b/content/renderer/render_view_impl_android.cc @@ -67,10 +67,11 @@ void RenderViewImpl::didScrollWithKeyboard(const blink::WebSize& delta) { void RenderViewImpl::OnExtractSmartClipData(const gfx::Rect& rect) { blink::WebString clip_text; + blink::WebString clip_html; blink::WebRect clip_rect; - webview()->getSmartClipData(rect, clip_text, clip_rect); + webview()->extractSmartClipData(rect, clip_text, clip_html, clip_rect); Send(new ViewHostMsg_SmartClipDataExtracted( - routing_id_, clip_text, clip_rect)); + routing_id_, clip_text, clip_html, clip_rect)); } void RenderViewImpl::GetSelectionRootBounds(gfx::Rect* bounds) const { |