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

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

Issue 2595263002: Introduce ViewRoot forwarding input/view events to native (Closed)
Patch Set: unittest Created 3 years, 11 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 5ad5b77077b35e11cea299f729d3a9c6781c0349..4a469fcd09fc6c7f0c8992ac78c05999617c5dff 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
@@ -32,7 +32,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;
@@ -73,12 +73,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;
@@ -125,6 +127,7 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal
mTab = currentTab;
mContentCVC = mTab.getContentViewCore();
mContentVrWindowAndroid = new VrWindowAndroid(mActivity, mContentVirtualDisplay);
+ mContentVrViewRoot = ViewRoot.create(mContentVrWindowAndroid);
// Make sure we are not redirecting to another app, i.e. out of VR mode.
mNonVrTabRedirectHandler = mTab.getTabRedirectHandler();
@@ -137,14 +140,16 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal
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);
+ uiContentView, mUiContents, mUiVrViewRoot);
mNativeVrShell = nativeInit(mContentCVC.getWebContents(),
- mContentVrWindowAndroid.getNativePointer(), mUiContents,
- mUiVrWindowAndroid.getNativePointer(), forWebVR, delegate,
+ mContentVrViewRoot.getNativePtr(), mUiContents,
+ mUiVrViewRoot.getNativePtr(), forWebVR, delegate,
getGvrApi().getNativeGvrContext(), mReprojectedRendering);
// Set the UI and content sizes before we load the UI.
@@ -181,8 +186,8 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal
mUiCVC.setTopControlsHeight(0, false);
mUiVrWindowAndroid.onVisibilityChanged(true);
- mOriginalWindowAndroid = mContentCVC.getWindowAndroid();
- mTab.updateWindowAndroid(mContentVrWindowAndroid);
+ mOriginalViewRoot = mTab.getViewRoot();
+ mTab.updateViewRoot(mContentVrViewRoot);
}
@CalledByNative
@@ -264,12 +269,19 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal
mNativeVrShell = 0;
}
mTab.setTabRedirectHandler(mNonVrTabRedirectHandler);
- mTab.updateWindowAndroid(mOriginalWindowAndroid);
+ mTab.updateViewRoot(mOriginalViewRoot);
mContentCVC.onSizeChanged(mContentCVC.getContainerView().getWidth(),
mContentCVC.getContainerView().getHeight(), 0, 0);
mUiContents.destroy();
+
+ mContentVrWindowAndroid.destroy();
+ mContentVrViewRoot.destroy();
+
mContentVirtualDisplay.destroy();
mUiVirtualDisplay.destroy();
+
+ mUiVrWindowAndroid.destroy();
+ mUiVrViewRoot.destroy();
super.shutdown();
}
@@ -322,7 +334,7 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal
}
private native long nativeInit(WebContents contentWebContents,
- long nativeContentWindowAndroid, WebContents uiWebContents, long nativeUiWindowAndroid,
+ 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 nativeLoadUIContent(long nativeVrShell);

Powered by Google App Engine
This is Rietveld 408576698