Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4512)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java

Issue 2899973002: Hide modal permission prompts on Android upon tab navigation/destruction (Closed)
Patch Set: clean up Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java b/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java
index d38dc9b3f037a8e1b40ff6c7ab74d08d726a0701..a4aec34a85852a353d4406f844a7eacf7024b291 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java
@@ -89,6 +89,7 @@ public class PermissionDialogController implements AndroidPermissionRequester.Re
*/
private void queueDialog(PermissionDialogDelegate delegate) {
mRequestQueue.add(delegate);
+ delegate.setDialogController(this);
scheduleDisplay();
}
@@ -101,6 +102,11 @@ public class PermissionDialogController implements AndroidPermissionRequester.Re
return mDialog;
}
+ @VisibleForTesting
+ public int getQueueLengthForTesting() {
+ return mRequestQueue.size();
+ }
+
@Override
public void onAndroidPermissionAccepted() {
mDialogDelegate.onAccept(mSwitchView.isChecked());
@@ -196,6 +202,7 @@ public class PermissionDialogController implements AndroidPermissionRequester.Re
// For some reason this is ocassionally null. See crbug.com/708562.
if (mDialogDelegate == null) {
scheduleDisplay();
+ return;
}
mDialog = null;
@@ -253,6 +260,18 @@ public class PermissionDialogController implements AndroidPermissionRequester.Re
return fullString;
}
+ public void destroyFromNative(PermissionDialogDelegate delegate) {
dominickn 2017/05/24 03:33:38 Nit: I would call this dismissFromNative. "Destroy
Timothy Loh 2017/05/24 04:59:33 Done.
+ if (mDialogDelegate == delegate) {
dominickn 2017/05/24 03:33:38 Maybe compare the native pointer to be safe.
Timothy Loh 2017/05/24 04:59:33 Not sure what you want, do you mean that the C++ P
+ mDialogDelegate = null;
+ AlertDialog dialog = mDialog;
dominickn 2017/05/24 03:33:38 Nit: is it problematic to do: mDialog.dismiss();
Timothy Loh 2017/05/24 04:59:33 Probably not but I think we end up in a weird stat
+ mDialog = null;
+ dialog.dismiss();
+ } else {
+ assert mRequestQueue.contains(delegate);
dominickn 2017/05/24 03:33:38 I don't think remove() fails if delegate isn't in
Timothy Loh 2017/05/24 04:59:33 I added it as a sanity check because remove() does
+ mRequestQueue.remove(delegate);
+ }
+ }
+
private void destroyDelegate() {
mDialogDelegate.destroy();
mDialogDelegate = null;

Powered by Google App Engine
This is Rietveld 408576698