Commit 41b2c841 authored by Dominick Ng's avatar Dominick Ng Committed by Commit Bot

Combine AddToHomescreenDialog.Delegate#{onDialogCancelled(),onDialogDismised()}.

This CL addresses an inconsistency in behaviour between explicitly
tapping "Cancel" in the add to home screen dialog and tapping outside
the dialog to dismiss it (also effectively cancelling).

Explicitly tapping on "Cancel" allowed the site to receive a new
beforeinstallpromptevent to trigger a new dialog, but tapping outside
the dialog did not. This CL removes the inconsistency by eliminating the
AddToHomescreenDialog.Delegate#onDialogCancelled() method (previously
only called when explicitly tapping "Cancel"), and maintaining state in
the AppBannerUiDelegateAndroid to determine whether or not to call
AppBannerUiDelegateAndroid#nativeOnUiCancelled(). This ensures a fresh
beforeinstallpromptevent is dispatched when the dialog isn't accepted -
whether it was explicitly cancelled or implicitly dismissed by tapping
elsewhere on the screen.

BUG=867465

Change-Id: I4e37d4a34e2b25797ee5bc386010de0b995e3d93
Reviewed-on: https://chromium-review.googlesource.com/1157945
Commit-Queue: Dominick Ng <dominickn@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#580685}
parent 911cdce5
...@@ -31,6 +31,8 @@ public class AppBannerUiDelegateAndroid ...@@ -31,6 +31,8 @@ public class AppBannerUiDelegateAndroid
private AddToHomescreenDialog mDialog; private AddToHomescreenDialog mDialog;
private boolean mAddedToHomescreen;
private AppBannerUiDelegateAndroid(long nativePtr, Tab tab) { private AppBannerUiDelegateAndroid(long nativePtr, Tab tab) {
mNativePointer = nativePtr; mNativePointer = nativePtr;
mTab = tab; mTab = tab;
...@@ -38,15 +40,11 @@ public class AppBannerUiDelegateAndroid ...@@ -38,15 +40,11 @@ public class AppBannerUiDelegateAndroid
@Override @Override
public void addToHomescreen(String title) { public void addToHomescreen(String title) {
mAddedToHomescreen = true;
// The title is ignored for app banners as we respect the developer-provided title. // The title is ignored for app banners as we respect the developer-provided title.
nativeAddToHomescreen(mNativePointer); nativeAddToHomescreen(mNativePointer);
} }
@Override
public void onDialogCancelled() {
nativeOnUiCancelled(mNativePointer);
}
@Override @Override
public void onNativeAppDetailsRequested() { public void onNativeAppDetailsRequested() {
nativeShowNativeAppDetails(mNativePointer); nativeShowNativeAppDetails(mNativePointer);
...@@ -54,8 +52,13 @@ public class AppBannerUiDelegateAndroid ...@@ -54,8 +52,13 @@ public class AppBannerUiDelegateAndroid
@Override @Override
public void onDialogDismissed() { public void onDialogDismissed() {
if (!mAddedToHomescreen) {
nativeOnUiCancelled(mNativePointer);
}
mDialog = null; mDialog = null;
mInstallerDelegate = null; mInstallerDelegate = null;
mAddedToHomescreen = false;
} }
@Override @Override
...@@ -91,6 +94,7 @@ public class AppBannerUiDelegateAndroid ...@@ -91,6 +94,7 @@ public class AppBannerUiDelegateAndroid
} }
mInstallerDelegate = null; mInstallerDelegate = null;
mNativePointer = 0; mNativePointer = 0;
mAddedToHomescreen = false;
} }
@CalledByNative @CalledByNative
......
...@@ -42,11 +42,6 @@ public class AddToHomescreenDialog implements View.OnClickListener { ...@@ -42,11 +42,6 @@ public class AddToHomescreenDialog implements View.OnClickListener {
*/ */
void addToHomescreen(String title); void addToHomescreen(String title);
/**
* Called when the dialog is explicitly cancelled by the user.
*/
void onDialogCancelled();
/** /**
* Called when the user wants to view a native app in the Play Store. * Called when the user wants to view a native app in the Play Store.
*/ */
...@@ -101,7 +96,6 @@ public class AddToHomescreenDialog implements View.OnClickListener { ...@@ -101,7 +96,6 @@ public class AddToHomescreenDialog implements View.OnClickListener {
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int id) { public void onClick(DialogInterface dialog, int id) {
mDelegate.onDialogCancelled();
dialog.cancel(); dialog.cancel();
} }
}); });
......
...@@ -62,11 +62,6 @@ public class AddToHomescreenManager implements AddToHomescreenDialog.Delegate { ...@@ -62,11 +62,6 @@ public class AddToHomescreenManager implements AddToHomescreenDialog.Delegate {
nativeAddToHomescreen(mNativeAddToHomescreenManager, userRequestedTitle); nativeAddToHomescreen(mNativeAddToHomescreenManager, userRequestedTitle);
} }
@Override
public void onDialogCancelled() {
// Do nothing.
}
@Override @Override
public void onNativeAppDetailsRequested() { public void onNativeAppDetailsRequested() {
// This should never be called. // This should never be called.
......
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