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 b5f9ce36dd28985b4dcb6b00b7c5efa7fafcb7d9..d3faf51f52924b54aaabeac3bd9724d4017def5f 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 |
@@ -43,7 +43,7 @@ import org.chromium.content.browser.ContentViewCore; |
import org.chromium.content_public.browser.WebContents; |
import org.chromium.ui.UiUtils; |
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; |
@@ -92,12 +92,16 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal |
private Tab mTab; |
private NativePage mNativePage; |
- private WindowAndroid mOriginalWindowAndroid; |
+ // The ContentViewCore for the main content rect in VR. |
+ private ContentViewCore mContentCVC; |
mthiesse
2017/02/14 16:54:28
Remove mContentCVC
|
+ private ViewRoot mOriginalViewRoot; |
private VrWindowAndroid mContentVrWindowAndroid; |
+ private ViewRoot mContentVrViewRoot; |
private WebContents mUiContents; |
private ContentViewCore mUiCVC; |
private VrWindowAndroid mUiVrWindowAndroid; |
+ private ViewRoot mUiVrViewRoot; |
private boolean mReprojectedRendering; |
@@ -256,16 +260,19 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal |
@Override |
public void initializeNative(Tab currentTab, boolean forWebVR) { |
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(mUiContents, mContentVrWindowAndroid.getNativePointer(), |
- mUiVrWindowAndroid.getNativePointer(), forWebVR, mDelegate, |
+ mNativeVrShell = nativeInit(mUiContents, mContentVrViewRoot.getNativePointer(), |
+ mUiVrViewRoot.getNativePointer(), forWebVR, mDelegate, |
getGvrApi().getNativeGvrContext(), mReprojectedRendering); |
// Set the UI and content sizes before we load the UI. |
@@ -335,8 +342,10 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal |
} |
private void initializeTabForVR() { |
- mOriginalWindowAndroid = mTab.getWindowAndroid(); |
- mTab.updateWindowAndroid(mContentVrWindowAndroid); |
+ mOriginalViewRoot = mTab.getViewRoot(); |
+ mTab.updateViewRoot(mContentVrViewRoot); |
+ mContentCVC.onAttachedToWindow(); |
mthiesse
2017/02/14 16:54:28
mContentCVC is gone on ToT, we no longer rely on a
|
+ mContentCVC.getContainerView().requestFocus(); |
// Make sure we are not redirecting to another app, i.e. out of VR mode. |
mNonVrTabRedirectHandler = mTab.getTabRedirectHandler(); |
@@ -345,8 +354,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; |
} |
@@ -456,8 +464,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); |
} |
@@ -533,8 +548,8 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal |
}; |
} |
- private native long nativeInit(WebContents uiWebContents, long nativeContentWindowAndroid, |
- long nativeUiWindowAndroid, boolean forWebVR, VrShellDelegate delegate, long gvrApi, |
+ private native long nativeInit(WebContents uiWebContents, long nativeContentViewRoot, |
+ 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); |