| 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);
|
|
|