Chromium Code Reviews| 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 4b5bbdf00af9f1bf40f50dad7e25bf306dc222a0..056ff480cc28581946db0b2bf772254892168daa 100644 |
| --- a/content/browser/android/content_view_core_impl.cc |
| +++ b/content/browser/android/content_view_core_impl.cc |
| @@ -55,6 +55,7 @@ |
| #include "jni/DragEvent_jni.h" |
| #include "third_party/WebKit/public/platform/WebInputEvent.h" |
| #include "ui/android/view_android.h" |
| +#include "ui/android/view_root.h" |
| #include "ui/android/window_android.h" |
| #include "ui/base/clipboard/clipboard.h" |
| #include "ui/base/ui_base_switches_util.h" |
| @@ -230,12 +231,6 @@ ContentViewCoreImpl::ContentViewCoreImpl( |
| dpi_scale_(dpi_scale), |
| device_orientation_(0), |
| accessibility_enabled_(false) { |
| - GetViewAndroid()->SetLayer(cc::Layer::Create()); |
|
boliu
2017/02/13 22:58:08
this code can just stay here, right? nothing here
Jinsuk Kim
2017/02/14 05:09:59
Yes I just wanted to keep all the initialization/s
|
| - gfx::Size physical_size( |
| - Java_ContentViewCore_getPhysicalBackingWidthPix(env, obj), |
| - Java_ContentViewCore_getPhysicalBackingHeightPix(env, obj)); |
| - GetViewAndroid()->GetLayer()->SetBounds(physical_size); |
| - |
| // Currently, the only use case we have for overriding a user agent involves |
| // spoofing a desktop Linux user agent for "Request desktop site". |
| // Automatically set it for all WebContents so that it is available when a |
| @@ -277,22 +272,21 @@ ContentViewCoreImpl::~ContentViewCoreImpl() { |
| } |
| } |
| -void ContentViewCoreImpl::UpdateWindowAndroid( |
| +void ContentViewCoreImpl::UpdateViewRoot( |
| JNIEnv* env, |
| const base::android::JavaParamRef<jobject>& obj, |
| - jlong window_android) { |
| + jlong view_root_ptr) { |
| + ui::ViewRoot* view_root = reinterpret_cast<ui::ViewRoot*>(view_root_ptr); |
| ui::ViewAndroid* view = GetViewAndroid(); |
| - ui::WindowAndroid* window = |
| - reinterpret_cast<ui::WindowAndroid*>(window_android); |
| - if (window == GetWindowAndroid()) |
| + if (view_root == view->GetViewRoot()) |
| return; |
| - if (GetWindowAndroid()) { |
| + if (view->GetViewRoot()) { |
| for (auto& observer : observer_list_) |
| observer.OnDetachedFromWindow(); |
| view->RemoveFromParent(); |
| } |
| - if (window) { |
| - window->AddChild(view); |
| + if (view_root) { |
| + view_root->AddChild(view); |
| for (auto& observer : observer_list_) |
| observer.OnAttachedToWindow(); |
| } |
| @@ -1250,6 +1244,10 @@ void ContentViewCoreImpl::WasResized(JNIEnv* env, |
| Java_ContentViewCore_getPhysicalBackingHeightPix(env, obj)); |
| GetViewAndroid()->GetLayer()->SetBounds(physical_size); |
| + gfx::Size view_size(GetViewSize()); |
| + GetViewAndroid()->SetLayout(0, 0, view_size.width(), view_size.height(), |
| + false); |
| + |
| SendScreenRectsAndResizeWidget(); |
| } |
| @@ -1497,7 +1495,7 @@ jlong Init(JNIEnv* env, |
| const JavaParamRef<jobject>& obj, |
| const JavaParamRef<jobject>& jweb_contents, |
| const JavaParamRef<jobject>& jview_android_delegate, |
| - jlong jwindow_android, |
| + jlong jview_root_ptr, |
| jfloat dipScale, |
| const JavaParamRef<jobject>& retained_objects_set) { |
| WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( |
| @@ -1506,11 +1504,15 @@ jlong Init(JNIEnv* env, |
| "A ContentViewCoreImpl should be created with a valid WebContents."; |
| ui::ViewAndroid* view_android = web_contents->GetView()->GetNativeView(); |
| view_android->SetDelegate(jview_android_delegate); |
| + view_android->SetLayer(cc::Layer::Create()); |
| + gfx::Size physical_size( |
| + Java_ContentViewCore_getPhysicalBackingWidthPix(env, obj), |
| + Java_ContentViewCore_getPhysicalBackingHeightPix(env, obj)); |
| + view_android->GetLayer()->SetBounds(physical_size); |
| - ui::WindowAndroid* window_android = |
| - reinterpret_cast<ui::WindowAndroid*>(jwindow_android); |
| - DCHECK(window_android); |
| - window_android->AddChild(view_android); |
| + ui::ViewRoot* view_root = reinterpret_cast<ui::ViewRoot*>(jview_root_ptr); |
| + DCHECK(view_root->GetWindowAndroid()); |
| + view_root->AddChild(view_android); |
| // TODO: pass dipScale. |
| ContentViewCoreImpl* view = new ContentViewCoreImpl( |