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 32cd33500404133cd7f372b5dfd90ae9af493000..ea8a835ba99cad1c047b498dab269649a9215367 100644 |
--- a/content/browser/android/content_view_core_impl.cc |
+++ b/content/browser/android/content_view_core_impl.cc |
@@ -357,6 +357,12 @@ void ContentViewCoreImpl::Hide() { |
} |
void ContentViewCoreImpl::OnTabCrashed() { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
+ if (obj.is_null()) |
+ return; |
+ Java_ContentViewCore_resetVSyncNotification(env, obj.obj()); |
+ |
// if tab_crashed_ is already true, just return. e.g. if two tabs share the |
// render process, this will be called for each tab when the render process |
// crashed. If user reload one tab, a new render process is created. It can be |
@@ -367,10 +373,6 @@ void ContentViewCoreImpl::OnTabCrashed() { |
if (tab_crashed_) |
return; |
tab_crashed_ = true; |
- JNIEnv* env = AttachCurrentThread(); |
- ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
- if (obj.is_null()) |
- return; |
Java_ContentViewCore_onTabCrash(env, obj.obj()); |
} |
@@ -699,6 +701,15 @@ void ContentViewCoreImpl::LoadUrl( |
tab_crashed_ = false; |
} |
+void ContentViewCoreImpl::SetVSyncNotificationEnabled(bool enabled) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
+ if (obj.is_null()) |
+ return; |
+ Java_ContentViewCore_setVSyncNotificationEnabled( |
+ env, obj.obj(), static_cast<jboolean>(enabled)); |
+} |
+ |
ui::WindowAndroid* ContentViewCoreImpl::GetWindowAndroid() const { |
// This should never be NULL for Chrome, but will be NULL for WebView. |
DCHECK(window_android_); |
@@ -1204,6 +1215,15 @@ void ContentViewCoreImpl::UpdateVSyncParameters(JNIEnv* env, jobject /* obj */, |
base::TimeDelta::FromMicroseconds(interval_micros)); |
} |
+void ContentViewCoreImpl::OnVSync(JNIEnv* env, jobject /* obj */, |
+ jlong frame_time_micros) { |
+ RenderWidgetHostViewAndroid* view = GetRenderWidgetHostViewAndroid(); |
+ if (!view) |
+ return; |
+ |
+ view->SendVSync(base::TimeTicks::FromInternalValue(frame_time_micros)); |
+} |
+ |
jboolean ContentViewCoreImpl::PopulateBitmapFromCompositor(JNIEnv* env, |
jobject obj, |
jobject jbitmap) { |