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

Unified Diff: content/browser/web_contents/web_contents_android.cc

Issue 2667283007: Refactor Samsung SmartClip implementation. (Closed)
Patch Set: Created 3 years, 10 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: 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,

Powered by Google App Engine
This is Rietveld 408576698