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

Unified Diff: android_webview/java/src/org/chromium/android_webview/AwContents.java

Issue 2688113002: Make ViewRoot the top of the ViewAndroid tree (Closed)
Patch Set: comments Created 3 years, 10 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: android_webview/java/src/org/chromium/android_webview/AwContents.java
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java
index 7c8df9fe3e2ddef444d38070d347ed86213215b2..cf682a775f51eb8b64011cd6c610948165e6b420 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
@@ -78,6 +78,7 @@ import org.chromium.net.NetworkChangeNotifier;
import org.chromium.ui.base.ActivityWindowAndroid;
import org.chromium.ui.base.PageTransition;
import org.chromium.ui.base.ViewAndroidDelegate;
+import org.chromium.ui.base.ViewRoot;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.display.DisplayAndroid.DisplayAndroidObserver;
@@ -366,21 +367,26 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess
private static String sCurrentLocales = "";
+ private ViewRoot mViewRoot;
+
private static final class AwContentsDestroyRunnable implements Runnable {
private final long mNativeAwContents;
// Hold onto a reference to the window (via its wrapper), so that it is not destroyed
// until we are done here.
private final WindowAndroidWrapper mWindowAndroid;
+ private final ViewRoot mViewRoot;
private AwContentsDestroyRunnable(
- long nativeAwContents, WindowAndroidWrapper windowAndroid) {
+ long nativeAwContents, WindowAndroidWrapper windowAndroid, ViewRoot viewRoot) {
mNativeAwContents = nativeAwContents;
mWindowAndroid = windowAndroid;
+ mViewRoot = viewRoot;
}
@Override
public void run() {
nativeDestroy(mNativeAwContents);
+ mViewRoot.destroy();
}
}
@@ -809,12 +815,11 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess
onContainerViewChanged();
}
- private void initializeContentViewCore(ContentViewCore contentViewCore,
- Context context, ViewAndroidDelegate viewDelegate,
- InternalAccessDelegate internalDispatcher, WebContents webContents,
- GestureStateListener gestureStateListener, ContentViewClient contentViewClient,
- WindowAndroid windowAndroid) {
- contentViewCore.initialize(viewDelegate, internalDispatcher, webContents, windowAndroid);
+ private void initializeContentViewCore(ContentViewCore contentViewCore, Context context,
+ ViewAndroidDelegate viewDelegate, InternalAccessDelegate internalDispatcher,
+ WebContents webContents, GestureStateListener gestureStateListener,
+ ContentViewClient contentViewClient, ViewRoot viewRoot) {
+ contentViewCore.initialize(viewDelegate, internalDispatcher, webContents, viewRoot);
contentViewCore.setActionModeCallback(
new AwActionModeCallback(mContext, this,
contentViewCore.getActionModeCallbackHelper()));
@@ -1057,9 +1062,10 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess
mContentViewCore = new ContentViewCore(mContext, PRODUCT_VERSION);
mViewAndroidDelegate = new AwViewAndroidDelegate(mContainerView,
mContentsClient, mContentViewCore.getRenderCoordinates());
+ mViewRoot = ViewRoot.create(mWindowAndroid.getWindowAndroid());
initializeContentViewCore(mContentViewCore, mContext, mViewAndroidDelegate,
mInternalAccessAdapter, webContents, new AwGestureStateListener(),
- mContentViewClient, mWindowAndroid.getWindowAndroid());
+ mContentViewClient, mViewRoot);
nativeSetJavaPeers(mNativeAwContents, this, mWebContentsDelegate, mContentsClientBridge,
mIoThreadClient, mInterceptNavigationDelegate);
mWebContents = mContentViewCore.getWebContents();
@@ -1075,7 +1081,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess
// The native side object has been bound to this java instance, so now is the time to
// bind all the native->java relationships.
mCleanupReference = new CleanupReference(
- this, new AwContentsDestroyRunnable(mNativeAwContents, mWindowAndroid));
+ this, new AwContentsDestroyRunnable(mNativeAwContents, mWindowAndroid, mViewRoot));
}
private void installWebContentsObserver() {
@@ -1232,6 +1238,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess
mNativeAwContents = 0;
mWebContents = null;
mNavigationController = null;
+ mViewRoot = null;
mCleanupReference.cleanupNow();
mCleanupReference = null;

Powered by Google App Engine
This is Rietveld 408576698