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

Side by Side Diff: android_webview/native/aw_contents.cc

Issue 817603002: cc: Make scheduling be driven by vsync for android webview. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "android_webview/native/aw_contents.h" 5 #include "android_webview/native/aw_contents.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "android_webview/browser/aw_browser_context.h" 9 #include "android_webview/browser/aw_browser_context.h"
10 #include "android_webview/browser/aw_browser_main_parts.h" 10 #include "android_webview/browser/aw_browser_main_parts.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 #include "content/public/browser/render_frame_host.h" 58 #include "content/public/browser/render_frame_host.h"
59 #include "content/public/browser/render_process_host.h" 59 #include "content/public/browser/render_process_host.h"
60 #include "content/public/browser/render_view_host.h" 60 #include "content/public/browser/render_view_host.h"
61 #include "content/public/browser/web_contents.h" 61 #include "content/public/browser/web_contents.h"
62 #include "content/public/common/renderer_preferences.h" 62 #include "content/public/common/renderer_preferences.h"
63 #include "content/public/common/ssl_status.h" 63 #include "content/public/common/ssl_status.h"
64 #include "jni/AwContents_jni.h" 64 #include "jni/AwContents_jni.h"
65 #include "net/base/auth.h" 65 #include "net/base/auth.h"
66 #include "net/cert/x509_certificate.h" 66 #include "net/cert/x509_certificate.h"
67 #include "third_party/skia/include/core/SkPicture.h" 67 #include "third_party/skia/include/core/SkPicture.h"
68 #include "ui/base/android/window_android.h"
68 #include "ui/gfx/android/java_bitmap.h" 69 #include "ui/gfx/android/java_bitmap.h"
69 #include "ui/gfx/geometry/rect_f.h" 70 #include "ui/gfx/geometry/rect_f.h"
70 #include "ui/gfx/image/image.h" 71 #include "ui/gfx/image/image.h"
71 #include "ui/gfx/size.h" 72 #include "ui/gfx/size.h"
72 73
73 struct AwDrawSWFunctionTable; 74 struct AwDrawSWFunctionTable;
74 75
75 using autofill::ContentAutofillDriverFactory; 76 using autofill::ContentAutofillDriverFactory;
76 using autofill::AutofillManager; 77 using autofill::AutofillManager;
77 using base::android::AttachCurrentThread; 78 using base::android::AttachCurrentThread;
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 new AwRenderViewHostExt(this, web_contents_.get())); 193 new AwRenderViewHostExt(this, web_contents_.get()));
193 194
194 permission_request_handler_.reset( 195 permission_request_handler_.reset(
195 new PermissionRequestHandler(this, web_contents_.get())); 196 new PermissionRequestHandler(this, web_contents_.get()));
196 197
197 AwAutofillClient* autofill_manager_delegate = 198 AwAutofillClient* autofill_manager_delegate =
198 AwAutofillClient::FromWebContents(web_contents_.get()); 199 AwAutofillClient::FromWebContents(web_contents_.get());
199 InitDataReductionProxyIfNecessary(); 200 InitDataReductionProxyIfNecessary();
200 if (autofill_manager_delegate) 201 if (autofill_manager_delegate)
201 InitAutofillIfNecessary(autofill_manager_delegate->GetSaveFormData()); 202 InitAutofillIfNecessary(autofill_manager_delegate->GetSaveFormData());
203 ContentViewCore* cvc =
204 ContentViewCore::FromWebContents(web_contents_.get());
205 if (cvc) cvc->GetWindowAndroid()->AddObserver(this);
202 content::SynchronousCompositor::SetClientForWebContents( 206 content::SynchronousCompositor::SetClientForWebContents(
203 web_contents_.get(), &browser_view_renderer_); 207 web_contents_.get(), &browser_view_renderer_);
204 } 208 }
205 209
206 void AwContents::SetJavaPeers(JNIEnv* env, 210 void AwContents::SetJavaPeers(JNIEnv* env,
207 jobject obj, 211 jobject obj,
208 jobject aw_contents, 212 jobject aw_contents,
209 jobject web_contents_delegate, 213 jobject web_contents_delegate,
210 jobject contents_client_bridge, 214 jobject contents_client_bridge,
211 jobject io_thread_client, 215 jobject io_thread_client,
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 279 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
276 JNIEnv* env = AttachCurrentThread(); 280 JNIEnv* env = AttachCurrentThread();
277 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 281 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
278 if (obj.is_null()) 282 if (obj.is_null())
279 return; 283 return;
280 Java_AwContents_setAwAutofillClient(env, obj.obj(), client); 284 Java_AwContents_setAwAutofillClient(env, obj.obj(), client);
281 } 285 }
282 286
283 AwContents::~AwContents() { 287 AwContents::~AwContents() {
284 DCHECK_EQ(this, AwContents::FromWebContents(web_contents_.get())); 288 DCHECK_EQ(this, AwContents::FromWebContents(web_contents_.get()));
289 ContentViewCore* cvc =
290 ContentViewCore::FromWebContents(web_contents_.get());
291 if (cvc) cvc->GetWindowAndroid()->RemoveObserver(this);
285 content::SynchronousCompositor::SetClientForWebContents(web_contents_.get(), 292 content::SynchronousCompositor::SetClientForWebContents(web_contents_.get(),
286 NULL); 293 NULL);
287 web_contents_->RemoveUserData(kAwContentsUserDataKey); 294 web_contents_->RemoveUserData(kAwContentsUserDataKey);
288 if (find_helper_.get()) 295 if (find_helper_.get())
289 find_helper_->SetListener(NULL); 296 find_helper_->SetListener(NULL);
290 if (icon_helper_.get()) 297 if (icon_helper_.get())
291 icon_helper_->SetListener(NULL); 298 icon_helper_->SetListener(NULL);
292 base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, -1); 299 base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, -1);
293 // When the last WebView is destroyed free all discardable memory allocated by 300 // When the last WebView is destroyed free all discardable memory allocated by
294 // Chromium, because the app process may continue to run for a long time 301 // Chromium, because the app process may continue to run for a long time
(...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after
988 void AwContents::DidOverscroll(gfx::Vector2d overscroll_delta) { 995 void AwContents::DidOverscroll(gfx::Vector2d overscroll_delta) {
989 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 996 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
990 JNIEnv* env = AttachCurrentThread(); 997 JNIEnv* env = AttachCurrentThread();
991 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 998 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
992 if (obj.is_null()) 999 if (obj.is_null())
993 return; 1000 return;
994 Java_AwContents_didOverscroll( 1001 Java_AwContents_didOverscroll(
995 env, obj.obj(), overscroll_delta.x(), overscroll_delta.y()); 1002 env, obj.obj(), overscroll_delta.x(), overscroll_delta.y());
996 } 1003 }
997 1004
1005 void AwContents::RequestVSyncUpdate() {
1006 ContentViewCore* cvc = ContentViewCore::FromWebContents(web_contents_.get());
1007 if (cvc) cvc->GetWindowAndroid()->RequestVSyncUpdate();
1008 }
1009
998 const BrowserViewRenderer* AwContents::GetBrowserViewRenderer() const { 1010 const BrowserViewRenderer* AwContents::GetBrowserViewRenderer() const {
999 return &browser_view_renderer_; 1011 return &browser_view_renderer_;
1000 } 1012 }
1001 1013
1014 void AwContents::OnVSync(base::TimeTicks frame_time,
1015 base::TimeDelta vsync_period) {
1016 browser_view_renderer_.OnVSync(frame_time, vsync_period);
1017 }
1018
1002 void AwContents::SetDipScale(JNIEnv* env, jobject obj, jfloat dip_scale) { 1019 void AwContents::SetDipScale(JNIEnv* env, jobject obj, jfloat dip_scale) {
1003 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1020 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1004 browser_view_renderer_.SetDipScale(dip_scale); 1021 browser_view_renderer_.SetDipScale(dip_scale);
1005 } 1022 }
1006 1023
1007 void AwContents::ScrollTo(JNIEnv* env, jobject obj, jint x, jint y) { 1024 void AwContents::ScrollTo(JNIEnv* env, jobject obj, jint x, jint y) {
1008 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1025 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1009 browser_view_renderer_.ScrollTo(gfx::Vector2d(x, y)); 1026 browser_view_renderer_.ScrollTo(gfx::Vector2d(x, y));
1010 } 1027 }
1011 1028
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1125 base::Owned(port1), 1142 base::Owned(port1),
1126 base::Owned(port2))); 1143 base::Owned(port2)));
1127 } 1144 }
1128 1145
1129 1146
1130 void SetShouldDownloadFavicons(JNIEnv* env, jclass jclazz) { 1147 void SetShouldDownloadFavicons(JNIEnv* env, jclass jclazz) {
1131 g_should_download_favicons = true; 1148 g_should_download_favicons = true;
1132 } 1149 }
1133 1150
1134 } // namespace android_webview 1151 } // namespace android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698