| 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 0b45af51a0e0f12a7706702caeadaab1867b8025..e8811ba1069f07ef5aa943516f75dfbe232fe3c6 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
|
| @@ -29,6 +29,7 @@ import org.chromium.chrome.browser.ChromeActivity;
|
| import org.chromium.chrome.browser.ChromeSwitches;
|
| import org.chromium.chrome.browser.NativePage;
|
| import org.chromium.chrome.browser.UrlConstants;
|
| +import org.chromium.chrome.browser.ntp.NewTabPage;
|
| import org.chromium.chrome.browser.tab.EmptyTabObserver;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| import org.chromium.chrome.browser.tab.TabObserver;
|
| @@ -164,9 +165,8 @@ public class VrShellImpl
|
| return;
|
| }
|
| if (mNativePage != null) {
|
| - UiUtils.removeViewFromParent(mNativePage.getView());
|
| + restoreNativePageFromVR();
|
| mNativePage = null;
|
| - mMotionEventSynthesizer = null;
|
| if (tab.getNativePage() == null) {
|
| nativeRestoreContentSurface(mNativeVrShell);
|
| mRenderToSurfaceLayoutParent.setVisibility(View.INVISIBLE);
|
| @@ -176,13 +176,8 @@ public class VrShellImpl
|
| if (tab.getNativePage() != null) {
|
| mRenderToSurfaceLayoutParent.setVisibility(View.VISIBLE);
|
| mNativePage = tab.getNativePage();
|
| + initializeNativePageForVR();
|
| if (mSurface == null) mSurface = nativeTakeContentSurface(mNativeVrShell);
|
| - mRenderToSurfaceLayout.addView(mNativePage.getView(),
|
| - new FrameLayout.LayoutParams(
|
| - LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
|
| - mNativePage.getView().invalidate();
|
| - mMotionEventSynthesizer =
|
| - new MotionEventSynthesizer(mRenderToSurfaceLayout, VrShellImpl.this);
|
| }
|
| setContentCssSize(mLastContentWidth, mLastContentHeight, mLastContentDpr);
|
| if (tab.getNativePage() == null && tab.getContentViewCore() != null) {
|
| @@ -274,6 +269,8 @@ public class VrShellImpl
|
| });
|
| mRenderToSurfaceLayoutParent.addView(mRenderToSurfaceLayout);
|
| addView(mRenderToSurfaceLayoutParent);
|
| + mMotionEventSynthesizer =
|
| + new MotionEventSynthesizer(mRenderToSurfaceLayout, VrShellImpl.this);
|
| }
|
|
|
| @Override
|
| @@ -352,6 +349,23 @@ public class VrShellImpl
|
| mNonVrTabRedirectHandler = null;
|
| }
|
|
|
| + private void initializeNativePageForVR() {
|
| + if (mNativePage instanceof NewTabPage) {
|
| + ((NewTabPage) mNativePage).setUrlBarInputEnabled(false);
|
| + }
|
| + mRenderToSurfaceLayout.addView(mNativePage.getView(),
|
| + new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
|
| + mNativePage.getView().invalidate();
|
| + mRenderToSurfaceLayout.invalidate();
|
| + }
|
| +
|
| + private void restoreNativePageFromVR() {
|
| + if (mNativePage instanceof NewTabPage) {
|
| + ((NewTabPage) mNativePage).setUrlBarInputEnabled(true);
|
| + }
|
| + UiUtils.removeViewFromParent(mNativePage.getView());
|
| + }
|
| +
|
| // Exits VR, telling the user to remove their headset, and returning to Chromium.
|
| @CalledByNative
|
| public void forceExitVr() {
|
| @@ -454,7 +468,7 @@ public class VrShellImpl
|
| nativeDestroy(mNativeVrShell);
|
| mNativeVrShell = 0;
|
| }
|
| - if (mNativePage != null) UiUtils.removeViewFromParent(mNativePage.getView());
|
| + if (mNativePage != null) restoreNativePageFromVR();
|
| mTabModelSelector.removeObserver(mTabModelSelectorObserver);
|
| mTabModelSelectorTabObserver.destroy();
|
| mTab.removeObserver(mTabObserver);
|
|
|