Index: content/browser/android/content_view_core_impl.cc |
diff --git a/content/browser/android/content_view_core_impl.cc b/content/browser/android/content_view_core_impl.cc |
index cfd19dbc04c026a133d8cf8f6ab3e1a0dd09e7f8..385b5f4c520092284dbe0ea738f7b55932231c5e 100644 |
--- a/content/browser/android/content_view_core_impl.cc |
+++ b/content/browser/android/content_view_core_impl.cc |
@@ -61,8 +61,10 @@ using base::android::ConvertJavaStringToUTF16; |
using base::android::ConvertJavaStringToUTF8; |
using base::android::ConvertUTF16ToJavaString; |
using base::android::ConvertUTF8ToJavaString; |
+using base::android::JavaByteArrayToByteVector; |
using base::android::ScopedJavaGlobalRef; |
using base::android::ScopedJavaLocalRef; |
+using base::android::HasException; |
using WebKit::WebGestureEvent; |
using WebKit::WebInputEvent; |
@@ -699,6 +701,19 @@ void ContentViewCoreImpl::SetNeedsAnimate() { |
Java_ContentViewCore_setNeedsAnimate(env, obj.obj()); |
} |
+bool ContentViewCoreImpl::GrabSnapshot(std::vector<unsigned uint8>* png) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
+ if (obj.is_null()) |
+ return false; |
+ ScopedJavaLocalRef<jbyteArray> data_ref = |
+ Java_ContentViewCore_grabSnapshot(env, obj.obj()); |
+ if (HasException(env) || data_ref.is_null()) |
+ return false; |
+ JavaByteArrayToByteVector(env, data_ref.obj(), png); |
+ return true; |
+} |
+ |
ui::ViewAndroid* ContentViewCoreImpl::GetViewAndroid() const { |
// view_android_ should never be null for Chrome. |
DCHECK(view_android_); |