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