Commit 5c8f1412 authored by Amirhossein Simjour's avatar Amirhossein Simjour Committed by Commit Bot

VR: close dialog on outside click

DismissHandler is set in VrShellImpl to make it possible to close
the dialog when native sends the request.

Bug: 843325
Change-Id: I2e83840a77fa47cab0275a1710591bae23627b96
Reviewed-on: https://chromium-review.googlesource.com/1125085Reviewed-by: default avatarMichael Thiessen <mthiesse@chromium.org>
Commit-Queue: Amirhossein Simjour <asimjour@chromium.org>
Cr-Commit-Position: refs/heads/master@{#572324}
parent 5cc21d3d
...@@ -54,4 +54,14 @@ public interface VrDialogManager { ...@@ -54,4 +54,14 @@ public interface VrDialogManager {
* @param floating indicates if the dialog is floating. * @param floating indicates if the dialog is floating.
*/ */
void setDialogFloating(boolean floating); void setDialogFloating(boolean floating);
/**
* Set dismiss handler for dialog. When VrDialogManager wants to close the
* dialog should call dismissHandler. This is used to close the dialog when
* native wants to dismiss.
*
* @param dismissHandler is called when VrDialogManager wants to dismiss the
* current dialog.
*/
void setVrDialogDismissHandler(Runnable dismissHandler);
} }
\ No newline at end of file
...@@ -46,6 +46,13 @@ public class VrPopupWindow extends PopupWindow { ...@@ -46,6 +46,13 @@ public class VrPopupWindow extends PopupWindow {
mVrDialogManager.setDialogView(mVrPopupContainer); mVrDialogManager.setDialogView(mVrPopupContainer);
mVrDialogManager.initVrDialog(mWidth, mHeight); mVrDialogManager.initVrDialog(mWidth, mHeight);
mVrDialogManager.setDialogLocation(x, y); mVrDialogManager.setDialogLocation(x, y);
mVrDialogManager.setVrDialogDismissHandler(new Runnable() {
@Override
public void run() {
dismiss();
}
});
mIsShowing = true; mIsShowing = true;
} }
......
...@@ -126,6 +126,7 @@ public class VrShellImpl ...@@ -126,6 +126,7 @@ public class VrShellImpl
private ModalDialogManager mNonVrModalDialogManager; private ModalDialogManager mNonVrModalDialogManager;
private ModalDialogManager mVrModalDialogManager; private ModalDialogManager mVrModalDialogManager;
private VrModalPresenter mVrModalPresenter; private VrModalPresenter mVrModalPresenter;
private Runnable mVrDialogDismissHandler;
private VrInputMethodManagerWrapper mInputMethodManagerWrapper; private VrInputMethodManagerWrapper mInputMethodManagerWrapper;
...@@ -587,6 +588,18 @@ public class VrShellImpl ...@@ -587,6 +588,18 @@ public class VrShellImpl
@CalledByNative @CalledByNative
public void closeCurrentDialog() { public void closeCurrentDialog() {
mVrModalPresenter.closeCurrentDialog(); mVrModalPresenter.closeCurrentDialog();
if (mVrDialogDismissHandler != null) {
mVrDialogDismissHandler.run();
mVrDialogDismissHandler = null;
}
}
/**
* @param vrDialogDismissHandler the mVrDialogDismissHandler to set
*/
@Override
public void setVrDialogDismissHandler(Runnable vrDialogDismissHandler) {
mVrDialogDismissHandler = vrDialogDismissHandler;
} }
@Override @Override
...@@ -796,6 +809,7 @@ public class VrShellImpl ...@@ -796,6 +809,7 @@ public class VrShellImpl
public void closeVrDialog() { public void closeVrDialog() {
nativeCloseAlertDialog(mNativeVrShell); nativeCloseAlertDialog(mNativeVrShell);
mVrUiViewContainer.removeAllViews(); mVrUiViewContainer.removeAllViews();
mVrDialogDismissHandler = null;
} }
/** /**
......
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