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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java

Issue 2688113002: Make ViewRoot the top of the ViewAndroid tree (Closed)
Patch Set: - 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: chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java
index 203ccc7dad9f8e948667caca1a47f6b87796f5f8..f1de498958b1bc01eec2bc71afb90f06b0bdbe89 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java
@@ -40,7 +40,7 @@ import org.chromium.content.browser.ContentView;
import org.chromium.content.browser.ContentViewCore;
import org.chromium.content_public.browser.WebContents;
import org.chromium.ui.base.ViewAndroidDelegate;
-import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.base.ViewRoot;
import org.chromium.ui.display.DisplayAndroid;
import org.chromium.ui.display.VirtualDisplayAndroid;
@@ -89,12 +89,14 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal
// The ContentViewCore for the main content rect in VR.
private ContentViewCore mContentCVC;
- private WindowAndroid mOriginalWindowAndroid;
+ private ViewRoot mOriginalViewRoot;
private VrWindowAndroid mContentVrWindowAndroid;
+ private ViewRoot mContentVrViewRoot;
private WebContents mUiContents;
private ContentViewCore mUiCVC;
private VrWindowAndroid mUiVrWindowAndroid;
+ private ViewRoot mUiVrViewRoot;
private boolean mReprojectedRendering;
@@ -212,18 +214,21 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal
mTab = currentTab;
mContentCVC = mTab.getContentViewCore();
mContentVrWindowAndroid = new VrWindowAndroid(mActivity, mContentVirtualDisplay);
+ mContentVrViewRoot = ViewRoot.create(mContentVrWindowAndroid);
mUiVrWindowAndroid = new VrWindowAndroid(mActivity, mUiVirtualDisplay);
mUiContents = WebContentsFactory.createWebContents(true, false);
+ mUiVrViewRoot = ViewRoot.create(mUiVrWindowAndroid);
+
mUiCVC = new ContentViewCore(mActivity, ChromeVersionInfo.getProductVersion());
ContentView uiContentView = ContentView.createContentView(mActivity, mUiCVC);
- mUiCVC.initialize(ViewAndroidDelegate.createBasicDelegate(uiContentView),
- uiContentView, mUiContents, mUiVrWindowAndroid);
+ mUiCVC.initialize(ViewAndroidDelegate.createBasicDelegate(uiContentView), uiContentView,
+ mUiContents, mUiVrViewRoot);
- mNativeVrShell = nativeInit(mContentCVC.getWebContents(),
- mContentVrWindowAndroid.getNativePointer(), mUiContents,
- mUiVrWindowAndroid.getNativePointer(), forWebVR, mDelegate,
- getGvrApi().getNativeGvrContext(), mReprojectedRendering);
+ mNativeVrShell =
+ nativeInit(mContentCVC.getWebContents(), mContentVrViewRoot.getNativePointer(),
+ mUiContents, mUiVrViewRoot.getNativePointer(), forWebVR, mDelegate,
+ getGvrApi().getNativeGvrContext(), mReprojectedRendering);
// Set the UI and content sizes before we load the UI.
setUiCssSize(DEFAULT_UI_WIDTH, DEFAULT_UI_HEIGHT, DEFAULT_DPR);
@@ -294,8 +299,9 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal
}
private void initializeTabForVR() {
- mOriginalWindowAndroid = mContentCVC.getWindowAndroid();
- mTab.updateWindowAndroid(mContentVrWindowAndroid);
+ mOriginalViewRoot = mTab.getViewRoot();
+
+ mTab.updateViewRoot(mContentVrViewRoot);
mContentCVC.onAttachedToWindow();
mContentCVC.getContainerView().requestFocus();
@@ -306,8 +312,7 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal
private void restoreTabFromVR() {
mTab.setTabRedirectHandler(mNonVrTabRedirectHandler);
- mTab.updateWindowAndroid(mOriginalWindowAndroid);
- mOriginalWindowAndroid = null;
+ mTab.updateViewRoot(mOriginalViewRoot);
mNonVrTabRedirectHandler = null;
}
@@ -396,8 +401,15 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal
mTab.removeObserver(mTabObserver);
restoreTabFromVR();
mUiContents.destroy();
+
+ mContentVrViewRoot.destroy();
+ mContentVrWindowAndroid.destroy();
+
mContentVirtualDisplay.destroy();
mUiVirtualDisplay.destroy();
+
+ mUiVrViewRoot.destroy();
+ mUiVrWindowAndroid.destroy();
super.shutdown();
mCompositorViewHolder.onExitVR(mTabModelSelector);
}
@@ -473,9 +485,9 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal
};
}
- private native long nativeInit(WebContents contentWebContents,
- long nativeContentWindowAndroid, WebContents uiWebContents, long nativeUiWindowAndroid,
- boolean forWebVR, VrShellDelegate delegate, long gvrApi, boolean reprojectedRendering);
+ private native long nativeInit(WebContents contentWebContents, long nativeContentViewRoot,
+ WebContents uiWebContents, long nativeUiViewRoot, boolean forWebVR,
+ VrShellDelegate delegate, long gvrApi, boolean reprojectedRendering);
private native void nativeSetSurface(long nativeVrShell, Surface surface);
private native void nativeSwapContents(long nativeVrShell, WebContents webContents);
private native void nativeLoadUIContent(long nativeVrShell);

Powered by Google App Engine
This is Rietveld 408576698