Commit 3937f71c authored by Amirhossein Simjour's avatar Amirhossein Simjour Committed by Commit Bot

Fix Chrome crash when exiting VR

Cancel dialogs before destroying their View.

Bug: 821443
Change-Id: Ifb0eb47cc60efa3e0b7e6354754d5db0fef38cda
Reviewed-on: https://chromium-review.googlesource.com/969584Reviewed-by: default avatarMichael Thiessen <mthiesse@chromium.org>
Commit-Queue: Amirhossein Simjour <asimjour@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544712}
parent 3cb9bc59
...@@ -117,6 +117,7 @@ public class VrShellImpl ...@@ -117,6 +117,7 @@ public class VrShellImpl
private VrViewContainer mVrUiViewContainer; private VrViewContainer mVrUiViewContainer;
private FrameLayout mUiView; private FrameLayout mUiView;
private ModalDialogManager mNonVrModalDialogManager; private ModalDialogManager mNonVrModalDialogManager;
private ModalDialogManager mVrModalDialogManager;
private VrModalPresenter mVrModalPresenter; private VrModalPresenter mVrModalPresenter;
public VrShellImpl( public VrShellImpl(
...@@ -280,8 +281,9 @@ public class VrShellImpl ...@@ -280,8 +281,9 @@ public class VrShellImpl
mNonVrModalDialogManager = mActivity.getModalDialogManager(); mNonVrModalDialogManager = mActivity.getModalDialogManager();
mNonVrModalDialogManager.cancelAllDialogs(); mNonVrModalDialogManager.cancelAllDialogs();
mVrModalPresenter = new VrModalPresenter(this); mVrModalPresenter = new VrModalPresenter(this);
mActivity.setModalDialogManager( mVrModalDialogManager =
new ModalDialogManager(mVrModalPresenter, ModalDialogManager.APP_MODAL)); new ModalDialogManager(mVrModalPresenter, ModalDialogManager.APP_MODAL);
mActivity.setModalDialogManager(mVrModalDialogManager);
ViewGroup decor = (ViewGroup) mActivity.getWindow().getDecorView(); ViewGroup decor = (ViewGroup) mActivity.getWindow().getDecorView();
mUiView = new FrameLayout(decor.getContext()); mUiView = new FrameLayout(decor.getContext());
...@@ -655,6 +657,11 @@ public class VrShellImpl ...@@ -655,6 +657,11 @@ public class VrShellImpl
@Override @Override
public void shutdown() { public void shutdown() {
if (mVrBrowsingEnabled) { if (mVrBrowsingEnabled) {
if (mVrModalDialogManager != null) {
mVrModalDialogManager.cancelAllDialogs();
mActivity.setModalDialogManager(mNonVrModalDialogManager);
mVrModalDialogManager = null;
}
mNonVrViews.destroy(); mNonVrViews.destroy();
if (mVrUiViewContainer != null) mVrUiViewContainer.destroy(); if (mVrUiViewContainer != null) mVrUiViewContainer.destroy();
removeVrRootView(); removeVrRootView();
...@@ -690,10 +697,6 @@ public class VrShellImpl ...@@ -690,10 +697,6 @@ public class VrShellImpl
ChromeFullscreenManager manager = mActivity.getFullscreenManager(); ChromeFullscreenManager manager = mActivity.getFullscreenManager();
manager.getBrowserVisibilityDelegate().showControlsTransient(); manager.getBrowserVisibilityDelegate().showControlsTransient();
if (ChromeFeatureList.isEnabled(ChromeFeatureList.VR_BROWSING_NATIVE_ANDROID_UI)) {
mActivity.getModalDialogManager().cancelAllDialogs();
mActivity.setModalDialogManager(mNonVrModalDialogManager);
}
FrameLayout decor = (FrameLayout) mActivity.getWindow().getDecorView(); FrameLayout decor = (FrameLayout) mActivity.getWindow().getDecorView();
decor.removeView(mUiView); decor.removeView(mUiView);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment