Commit 7e985d67 authored by Ioana Pandele's avatar Ioana Pandele Committed by Commit Bot

[Android] Make the leak dialog an app modal

The leak detection dialog is currently a tab modal, which allows
interaction with the omnibox and tab switcher. This CL changes it to an
app modal, which blocks interaction with the entire app until it's
dismissed.

Bug: 1008859, 986317
Change-Id: Ie12f3f2bd06c26860ae95ebc11bb7c97e6014571
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1825518
Commit-Queue: Ioana Pandele <ioanap@chromium.org>
Reviewed-by: default avatarFriedrich [CET] <fhorschig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#701033}
parent 50060a0c
...@@ -9,6 +9,7 @@ import org.chromium.chrome.R; ...@@ -9,6 +9,7 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modaldialog.DialogDismissalCause; import org.chromium.ui.modaldialog.DialogDismissalCause;
import org.chromium.ui.modaldialog.ModalDialogManager;
/** JNI call glue between the native password manager CredentialLeak class and Java objects. */ /** JNI call glue between the native password manager CredentialLeak class and Java objects. */
public class CredentialLeakDialogBridge { public class CredentialLeakDialogBridge {
...@@ -37,7 +38,7 @@ public class CredentialLeakDialogBridge { ...@@ -37,7 +38,7 @@ public class CredentialLeakDialogBridge {
boolean primaryButtonFilled = negativeButton != null; boolean primaryButtonFilled = negativeButton != null;
mCredentialLeakDialog.showDialog(credentialLeakTitle, credentialLeakDetails, boldRangeStart, mCredentialLeakDialog.showDialog(credentialLeakTitle, credentialLeakDetails, boldRangeStart,
boldRangeEnd, R.drawable.password_check_warning, positiveButton, negativeButton, boldRangeEnd, R.drawable.password_check_warning, positiveButton, negativeButton,
this::onClick, primaryButtonFilled); this::onClick, primaryButtonFilled, ModalDialogManager.ModalDialogType.APP);
} }
@CalledByNative @CalledByNative
......
...@@ -15,6 +15,7 @@ import org.chromium.chrome.R; ...@@ -15,6 +15,7 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modaldialog.DialogDismissalCause; import org.chromium.ui.modaldialog.DialogDismissalCause;
import org.chromium.ui.modaldialog.ModalDialogManager;
/** JNI call glue between the native password manager onboarding class and Java objects. */ /** JNI call glue between the native password manager onboarding class and Java objects. */
public class OnboardingDialogBridge { public class OnboardingDialogBridge {
...@@ -64,7 +65,8 @@ public class OnboardingDialogBridge { ...@@ -64,7 +65,8 @@ public class OnboardingDialogBridge {
public void showDialog(String onboardingTitle, String onboardingDetails) { public void showDialog(String onboardingTitle, String onboardingDetails) {
mOnboardingDialog.showDialog(onboardingTitle, onboardingDetails, mOnboardingDialog.showDialog(onboardingTitle, onboardingDetails,
getDrawableResourceFromFeature(), mResources.getString(R.string.continue_button), getDrawableResourceFromFeature(), mResources.getString(R.string.continue_button),
mResources.getString(R.string.not_now), this::onClick, true); mResources.getString(R.string.not_now), this::onClick, true,
ModalDialogManager.ModalDialogType.TAB);
} }
@CalledByNative @CalledByNative
......
...@@ -42,18 +42,18 @@ public class PasswordManagerDialogCoordinator { ...@@ -42,18 +42,18 @@ public class PasswordManagerDialogCoordinator {
public void showDialog(String title, String details, int boldRangeStart, int boldRangeEnd, public void showDialog(String title, String details, int boldRangeStart, int boldRangeEnd,
@DrawableRes int drawableId, String positiveButtonText, String negativeButtonText, @DrawableRes int drawableId, String positiveButtonText, String negativeButtonText,
Callback<Integer> onClick, boolean primaryButtonFilled) { Callback<Integer> onClick, boolean primaryButtonFilled,
@ModalDialogManager.ModalDialogType int type) {
mMediator.setContents(title, details, boldRangeStart, boldRangeEnd, drawableId); mMediator.setContents(title, details, boldRangeStart, boldRangeEnd, drawableId);
mMediator.setButtons(positiveButtonText, negativeButtonText, onClick, primaryButtonFilled); mMediator.setButtons(positiveButtonText, negativeButtonText, onClick, primaryButtonFilled);
mMediator.showDialog(); mMediator.showDialog(type);
} }
public void showDialog(String title, String details, @DrawableRes int drawableId, public void showDialog(String title, String details, @DrawableRes int drawableId,
String positiveButtonText, String negativeButtonText, Callback<Integer> onClick, String positiveButtonText, String negativeButtonText, Callback<Integer> onClick,
boolean primaryButtonFilled) { boolean primaryButtonFilled, @ModalDialogManager.ModalDialogType int type) {
mMediator.setContents(title, details, 0, 0, drawableId); showDialog(title, details, 0, 0, drawableId, positiveButtonText, negativeButtonText,
mMediator.setButtons(positiveButtonText, negativeButtonText, onClick, primaryButtonFilled); onClick, primaryButtonFilled, type);
mMediator.showDialog();
} }
public void dismissDialog(@DialogDismissalCause int dismissalCause) { public void dismissDialog(@DialogDismissalCause int dismissalCause) {
......
...@@ -123,11 +123,11 @@ class PasswordManagerDialogMediator implements View.OnLayoutChangeListener { ...@@ -123,11 +123,11 @@ class PasswordManagerDialogMediator implements View.OnLayoutChangeListener {
mModel.set(ILLUSTRATION_VISIBLE, hasSufficientSpaceForIllustration(newHeight)); mModel.set(ILLUSTRATION_VISIBLE, hasSufficientSpaceForIllustration(newHeight));
} }
void showDialog() { void showDialog(@ModalDialogManager.ModalDialogType int type) {
mModel.set(ILLUSTRATION_VISIBLE, mModel.set(ILLUSTRATION_VISIBLE,
hasSufficientSpaceForIllustration(mAndroidContentView.getHeight())); hasSufficientSpaceForIllustration(mAndroidContentView.getHeight()));
mDialogModel = mModalDialogBuilder.build(); mDialogModel = mModalDialogBuilder.build();
mDialogManager.showDialog(mDialogModel, ModalDialogManager.ModalDialogType.TAB); mDialogManager.showDialog(mDialogModel, type);
} }
void dismissDialog(int dismissalClause) { void dismissDialog(int dismissalClause) {
......
...@@ -39,6 +39,7 @@ import org.chromium.chrome.test.ChromeActivityTestRule; ...@@ -39,6 +39,7 @@ import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.content_public.browser.test.util.TestThreadUtils; import org.chromium.content_public.browser.test.util.TestThreadUtils;
import org.chromium.ui.modaldialog.DialogDismissalCause; import org.chromium.ui.modaldialog.DialogDismissalCause;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
/** Test for the password manager illustration modal dialog. */ /** Test for the password manager illustration modal dialog. */
...@@ -75,7 +76,8 @@ public class PasswordManagerDialogTest { ...@@ -75,7 +76,8 @@ public class PasswordManagerDialogTest {
mModel = mMediator.getModelForTesting(); mModel = mMediator.getModelForTesting();
TestThreadUtils.runOnUiThreadBlocking(() -> { TestThreadUtils.runOnUiThreadBlocking(() -> {
mCoordinator.showDialog(TITLE, DETAILS, R.drawable.data_reduction_illustration, mCoordinator.showDialog(TITLE, DETAILS, R.drawable.data_reduction_illustration,
OK_BUTTON, CANCEL_BUTTON, mOnClick, false); OK_BUTTON, CANCEL_BUTTON, mOnClick, false,
ModalDialogManager.ModalDialogType.TAB);
}); });
} }
......
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