| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "content/browser/android/content_view_core_impl.h" | 5 #include "content/browser/android/content_view_core_impl.h" |
| 6 | 6 |
| 7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
| 8 #include "base/android/jni_array.h" | 8 #include "base/android/jni_array.h" |
| 9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
| 10 #include "base/android/scoped_java_ref.h" | 10 #include "base/android/scoped_java_ref.h" |
| (...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 | 350 |
| 351 void ContentViewCoreImpl::Show() { | 351 void ContentViewCoreImpl::Show() { |
| 352 GetWebContents()->WasShown(); | 352 GetWebContents()->WasShown(); |
| 353 } | 353 } |
| 354 | 354 |
| 355 void ContentViewCoreImpl::Hide() { | 355 void ContentViewCoreImpl::Hide() { |
| 356 GetWebContents()->WasHidden(); | 356 GetWebContents()->WasHidden(); |
| 357 } | 357 } |
| 358 | 358 |
| 359 void ContentViewCoreImpl::OnTabCrashed() { | 359 void ContentViewCoreImpl::OnTabCrashed() { |
| 360 JNIEnv* env = AttachCurrentThread(); |
| 361 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
| 362 if (obj.is_null()) |
| 363 return; |
| 364 Java_ContentViewCore_resetVSyncNotification(env, obj.obj()); |
| 365 |
| 360 // if tab_crashed_ is already true, just return. e.g. if two tabs share the | 366 // if tab_crashed_ is already true, just return. e.g. if two tabs share the |
| 361 // render process, this will be called for each tab when the render process | 367 // render process, this will be called for each tab when the render process |
| 362 // crashed. If user reload one tab, a new render process is created. It can be | 368 // crashed. If user reload one tab, a new render process is created. It can be |
| 363 // shared by the other tab. But if user closes the tab before reload the other | 369 // shared by the other tab. But if user closes the tab before reload the other |
| 364 // tab, the new render process will be shut down. This will trigger the other | 370 // tab, the new render process will be shut down. This will trigger the other |
| 365 // tab's OnTabCrashed() called again as two tabs share the same | 371 // tab's OnTabCrashed() called again as two tabs share the same |
| 366 // BrowserRenderProcessHost. | 372 // BrowserRenderProcessHost. |
| 367 if (tab_crashed_) | 373 if (tab_crashed_) |
| 368 return; | 374 return; |
| 369 tab_crashed_ = true; | 375 tab_crashed_ = true; |
| 370 JNIEnv* env = AttachCurrentThread(); | |
| 371 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | |
| 372 if (obj.is_null()) | |
| 373 return; | |
| 374 Java_ContentViewCore_onTabCrash(env, obj.obj()); | 376 Java_ContentViewCore_onTabCrash(env, obj.obj()); |
| 375 } | 377 } |
| 376 | 378 |
| 377 // All positions and sizes are in CSS pixels. | 379 // All positions and sizes are in CSS pixels. |
| 378 // Note that viewport_width/height is a best effort based. | 380 // Note that viewport_width/height is a best effort based. |
| 379 // ContentViewCore has the actual information about the physical viewport size. | 381 // ContentViewCore has the actual information about the physical viewport size. |
| 380 void ContentViewCoreImpl::UpdateFrameInfo( | 382 void ContentViewCoreImpl::UpdateFrameInfo( |
| 381 const gfx::Vector2dF& scroll_offset, | 383 const gfx::Vector2dF& scroll_offset, |
| 382 float page_scale_factor, | 384 float page_scale_factor, |
| 383 const gfx::Vector2dF& page_scale_factor_limits, | 385 const gfx::Vector2dF& page_scale_factor_limits, |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 692 void ContentViewCoreImpl::RemoveLayer(scoped_refptr<cc::Layer> layer) { | 694 void ContentViewCoreImpl::RemoveLayer(scoped_refptr<cc::Layer> layer) { |
| 693 layer->RemoveFromParent(); | 695 layer->RemoveFromParent(); |
| 694 } | 696 } |
| 695 | 697 |
| 696 void ContentViewCoreImpl::LoadUrl( | 698 void ContentViewCoreImpl::LoadUrl( |
| 697 NavigationController::LoadURLParams& params) { | 699 NavigationController::LoadURLParams& params) { |
| 698 GetWebContents()->GetController().LoadURLWithParams(params); | 700 GetWebContents()->GetController().LoadURLWithParams(params); |
| 699 tab_crashed_ = false; | 701 tab_crashed_ = false; |
| 700 } | 702 } |
| 701 | 703 |
| 704 void ContentViewCoreImpl::SetVSyncNotificationEnabled(bool enabled) { |
| 705 JNIEnv* env = AttachCurrentThread(); |
| 706 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
| 707 if (obj.is_null()) |
| 708 return; |
| 709 Java_ContentViewCore_setVSyncNotificationEnabled( |
| 710 env, obj.obj(), static_cast<jboolean>(enabled)); |
| 711 } |
| 712 |
| 702 ui::WindowAndroid* ContentViewCoreImpl::GetWindowAndroid() const { | 713 ui::WindowAndroid* ContentViewCoreImpl::GetWindowAndroid() const { |
| 703 // This should never be NULL for Chrome, but will be NULL for WebView. | 714 // This should never be NULL for Chrome, but will be NULL for WebView. |
| 704 DCHECK(window_android_); | 715 DCHECK(window_android_); |
| 705 return window_android_; | 716 return window_android_; |
| 706 } | 717 } |
| 707 | 718 |
| 708 scoped_refptr<cc::Layer> ContentViewCoreImpl::GetLayer() const { | 719 scoped_refptr<cc::Layer> ContentViewCoreImpl::GetLayer() const { |
| 709 return root_layer_.get(); | 720 return root_layer_.get(); |
| 710 } | 721 } |
| 711 | 722 |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1197 return; | 1208 return; |
| 1198 | 1209 |
| 1199 RenderWidgetHostImpl* host = RenderWidgetHostImpl::From( | 1210 RenderWidgetHostImpl* host = RenderWidgetHostImpl::From( |
| 1200 view->GetRenderWidgetHost()); | 1211 view->GetRenderWidgetHost()); |
| 1201 | 1212 |
| 1202 host->UpdateVSyncParameters( | 1213 host->UpdateVSyncParameters( |
| 1203 base::TimeTicks::FromInternalValue(timebase_micros), | 1214 base::TimeTicks::FromInternalValue(timebase_micros), |
| 1204 base::TimeDelta::FromMicroseconds(interval_micros)); | 1215 base::TimeDelta::FromMicroseconds(interval_micros)); |
| 1205 } | 1216 } |
| 1206 | 1217 |
| 1218 void ContentViewCoreImpl::OnVSync(JNIEnv* env, jobject /* obj */, |
| 1219 jlong frame_time_micros) { |
| 1220 RenderWidgetHostViewAndroid* view = GetRenderWidgetHostViewAndroid(); |
| 1221 if (!view) |
| 1222 return; |
| 1223 |
| 1224 view->SendVSync(base::TimeTicks::FromInternalValue(frame_time_micros)); |
| 1225 } |
| 1226 |
| 1207 jboolean ContentViewCoreImpl::PopulateBitmapFromCompositor(JNIEnv* env, | 1227 jboolean ContentViewCoreImpl::PopulateBitmapFromCompositor(JNIEnv* env, |
| 1208 jobject obj, | 1228 jobject obj, |
| 1209 jobject jbitmap) { | 1229 jobject jbitmap) { |
| 1210 RenderWidgetHostViewAndroid* view = GetRenderWidgetHostViewAndroid(); | 1230 RenderWidgetHostViewAndroid* view = GetRenderWidgetHostViewAndroid(); |
| 1211 if (!view) | 1231 if (!view) |
| 1212 return false; | 1232 return false; |
| 1213 | 1233 |
| 1214 return view->PopulateBitmapWithContents(jbitmap); | 1234 return view->PopulateBitmapWithContents(jbitmap); |
| 1215 } | 1235 } |
| 1216 | 1236 |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1500 reinterpret_cast<WebContents*>(native_web_contents), | 1520 reinterpret_cast<WebContents*>(native_web_contents), |
| 1501 reinterpret_cast<ui::WindowAndroid*>(native_window)); | 1521 reinterpret_cast<ui::WindowAndroid*>(native_window)); |
| 1502 return reinterpret_cast<jint>(view); | 1522 return reinterpret_cast<jint>(view); |
| 1503 } | 1523 } |
| 1504 | 1524 |
| 1505 bool RegisterContentViewCore(JNIEnv* env) { | 1525 bool RegisterContentViewCore(JNIEnv* env) { |
| 1506 return RegisterNativesImpl(env); | 1526 return RegisterNativesImpl(env); |
| 1507 } | 1527 } |
| 1508 | 1528 |
| 1509 } // namespace content | 1529 } // namespace content |
| OLD | NEW |