Index: content/browser/web_contents/web_contents_android.cc |
diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc |
index 412213d1be94836d1502d3bf05a125b6f8dcee25..c373a2060f6f4e442b9338f7d189acc35f3e9c48 100644 |
--- a/content/browser/web_contents/web_contents_android.cc |
+++ b/content/browser/web_contents/web_contents_android.cc |
@@ -72,6 +72,15 @@ void JavaScriptResultCallback(const ScopedJavaGlobalRef<jobject>& callback, |
Java_WebContentsImpl_onEvaluateJavaScriptResult(env, j_json, callback); |
} |
+void SmartClipCallback(const ScopedJavaGlobalRef<jobject>& callback, |
+ const base::string16& text, |
+ const base::string16& html) { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ ScopedJavaLocalRef<jstring> jtext = ConvertUTF16ToJavaString(env, text); |
+ ScopedJavaLocalRef<jstring> jhtml = ConvertUTF16ToJavaString(env, html); |
+ Java_WebContentsImpl_onSmartClipDataExtracted(env, jtext, jhtml, callback); |
+} |
+ |
struct AccessibilitySnapshotParams { |
AccessibilitySnapshotParams() |
: has_tree_data(false), should_select_leaf_nodes(false) {} |
@@ -597,6 +606,26 @@ jint WebContentsAndroid::GetThemeColor(JNIEnv* env, |
return web_contents_->GetThemeColor(); |
} |
+void WebContentsAndroid::RequestSmartClipExtract( |
+ JNIEnv* env, |
+ const JavaParamRef<jobject>& obj, |
+ const JavaParamRef<jobject>& callback, |
+ jint x, |
+ jint y, |
+ jint width, |
+ jint height) { |
+ // Secure the Java callback in a scoped object and give ownership of it to the |
+ // base::Callback. |
+ ScopedJavaGlobalRef<jobject> j_callback; |
+ j_callback.Reset(env, callback); |
+ |
+ RenderFrameHostImpl::SmartClipCallback smart_clip_callback = |
+ base::Bind(&SmartClipCallback, j_callback); |
+ |
+ web_contents_->GetMainFrame()->RequestSmartClipExtract( |
+ smart_clip_callback, gfx::Rect(x, y, width, height)); |
+} |
+ |
void WebContentsAndroid::RequestAccessibilitySnapshot( |
JNIEnv* env, |
const JavaParamRef<jobject>& obj, |