Index: android_webview/native/aw_contents.cc |
diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc |
index 8494ed176785b50b0247871ab0c4886bfe3a4655..a36d30ca212458f2fcd4fef3120ad6ddeed5e1c5 100644 |
--- a/android_webview/native/aw_contents.cc |
+++ b/android_webview/native/aw_contents.cc |
@@ -65,6 +65,7 @@ |
#include "net/base/auth.h" |
#include "net/cert/x509_certificate.h" |
#include "third_party/skia/include/core/SkPicture.h" |
+#include "ui/base/android/window_android.h" |
#include "ui/gfx/android/java_bitmap.h" |
#include "ui/gfx/geometry/rect_f.h" |
#include "ui/gfx/image/image.h" |
@@ -199,6 +200,9 @@ AwContents::AwContents(scoped_ptr<WebContents> web_contents) |
InitDataReductionProxyIfNecessary(); |
if (autofill_manager_delegate) |
InitAutofillIfNecessary(autofill_manager_delegate->GetSaveFormData()); |
+ ContentViewCore* cvc = |
+ ContentViewCore::FromWebContents(web_contents_.get()); |
+ if (cvc) cvc->GetWindowAndroid()->AddObserver(this); |
content::SynchronousCompositor::SetClientForWebContents( |
web_contents_.get(), &browser_view_renderer_); |
} |
@@ -282,6 +286,9 @@ void AwContents::SetAwAutofillClient(jobject client) { |
AwContents::~AwContents() { |
DCHECK_EQ(this, AwContents::FromWebContents(web_contents_.get())); |
+ ContentViewCore* cvc = |
+ ContentViewCore::FromWebContents(web_contents_.get()); |
+ if (cvc) cvc->GetWindowAndroid()->RemoveObserver(this); |
content::SynchronousCompositor::SetClientForWebContents(web_contents_.get(), |
NULL); |
web_contents_->RemoveUserData(kAwContentsUserDataKey); |
@@ -995,10 +1002,20 @@ void AwContents::DidOverscroll(gfx::Vector2d overscroll_delta) { |
env, obj.obj(), overscroll_delta.x(), overscroll_delta.y()); |
} |
+void AwContents::RequestVSyncUpdate() { |
+ ContentViewCore* cvc = ContentViewCore::FromWebContents(web_contents_.get()); |
+ if (cvc) cvc->GetWindowAndroid()->RequestVSyncUpdate(); |
+} |
+ |
const BrowserViewRenderer* AwContents::GetBrowserViewRenderer() const { |
return &browser_view_renderer_; |
} |
+void AwContents::OnVSync(base::TimeTicks frame_time, |
+ base::TimeDelta vsync_period) { |
+ browser_view_renderer_.OnVSync(frame_time, vsync_period); |
+} |
+ |
void AwContents::SetDipScale(JNIEnv* env, jobject obj, jfloat dip_scale) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
browser_view_renderer_.SetDipScale(dip_scale); |