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

Unified Diff: content/browser/android/content_view_core_impl.cc

Issue 2595263002: Introduce ViewRoot forwarding input/view events to native (Closed)
Patch Set: addressed comments Created 3 years, 12 months 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 side-by-side diff with in-line comments
Download patch
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 0e7e53ecd062f22adeb47802398a9810a556d574..56f1126eb7e1cbfb1b98ce14f24ecc9c23311bf7 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"
@@ -274,19 +275,20 @@ ContentViewCoreImpl::~ContentViewCoreImpl() {
void ContentViewCoreImpl::UpdateWindowAndroid(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jobject>& jview_root,
jlong window_android) {
- ui::ViewAndroid* view = GetViewAndroid();
ui::WindowAndroid* window =
boliu 2017/01/04 18:58:06 should DCHECK that window and view root are either
Jinsuk Kim 2017/01/05 11:03:12 Renamed to UpdateViewRoot.
reinterpret_cast<ui::WindowAndroid*>(window_android);
if (window == GetWindowAndroid())
boliu 2017/01/04 18:58:05 this is not enough, what if view_root is different
Jinsuk Kim 2017/01/05 11:03:12 Used view_root instead. ViewRoot and WA always com
return;
+ ui::ViewAndroid* view = GetViewAndroid();
+ view->RemoveFromParent();
boliu 2017/01/04 18:58:06 Remove/AddChild should stay where they used to be
Jinsuk Kim 2017/01/05 11:03:12 Done.
+ ui::ViewRoot::FromJavaObject(env, jview_root)->AddChild(view);
boliu 2017/01/04 18:58:05 probably should match WindowAndroid pattern here t
Jinsuk Kim 2017/01/05 11:03:12 Done.
if (GetWindowAndroid()) {
for (auto& observer : observer_list_)
observer.OnDetachedFromWindow();
- view->RemoveFromParent();
}
if (window) {
- window->AddChild(view);
for (auto& observer : observer_list_)
observer.OnAttachedToWindow();
}
@@ -1532,7 +1534,7 @@ jlong Init(JNIEnv* env,
const JavaParamRef<jobject>& obj,
const JavaParamRef<jobject>& jweb_contents,
const JavaParamRef<jobject>& jview_android_delegate,
- jlong jwindow_android,
+ const JavaParamRef<jobject>& jview_root,
jfloat dipScale,
const JavaParamRef<jobject>& retained_objects_set) {
WebContentsImpl* web_contents = static_cast<WebContentsImpl*>(
@@ -1542,11 +1544,7 @@ jlong Init(JNIEnv* env,
ui::ViewAndroid* view_android = web_contents->GetView()->GetNativeView();
view_android->SetDelegate(jview_android_delegate);
view_android->SetLayer(cc::Layer::Create());
-
- ui::WindowAndroid* window_android =
- reinterpret_cast<ui::WindowAndroid*>(jwindow_android);
- DCHECK(window_android);
- window_android->AddChild(view_android);
+ ui::ViewRoot::FromJavaObject(env, jview_root)->AddChild(view_android);
// TODO: pass dipScale.
ContentViewCoreImpl* view = new ContentViewCoreImpl(

Powered by Google App Engine
This is Rietveld 408576698