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

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

Powered by Google App Engine
This is Rietveld 408576698