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

Unified Diff: chrome/browser/permissions/permission_dialog_delegate.h

Issue 2899973002: Hide modal permission prompts on Android upon tab navigation/destruction (Closed)
Patch Set: fix test (permission request from js goes through mojo so need to poll) 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/browser/permissions/permission_dialog_delegate.h
diff --git a/chrome/browser/permissions/permission_dialog_delegate.h b/chrome/browser/permissions/permission_dialog_delegate.h
index 76c4b6cd0a420be9eb5ca92698ead55599ca7373..9b699eeaa33fb5e2b9977b0ed370bfcf937c3bf8 100644
--- a/chrome/browser/permissions/permission_dialog_delegate.h
+++ b/chrome/browser/permissions/permission_dialog_delegate.h
@@ -13,9 +13,9 @@
#include "chrome/browser/media/webrtc/media_stream_devices_controller.h"
#include "chrome/browser/permissions/permission_util.h"
#include "components/content_settings/core/common/content_settings_types.h"
+#include "content/public/browser/web_contents_observer.h"
using base::android::JavaParamRef;
-using base::android::ScopedJavaLocalRef;
namespace content {
class WebContents;
@@ -34,7 +34,7 @@ class TabAndroid;
// GroupedPermissionInfoBarDelegate, which will then source all of its data from
// an underlying PermissionPromptAndroid object. At that time, this class will
// also change to wrap a PermissionPromptAndroid.
-class PermissionDialogDelegate {
+class PermissionDialogDelegate : public content::WebContentsObserver {
public:
using PermissionSetCallback = base::Callback<void(bool, PermissionAction)>;
@@ -73,9 +73,19 @@ class PermissionDialogDelegate {
PermissionDialogDelegate(
TabAndroid* tab,
std::unique_ptr<PermissionInfoBarDelegate> infobar_delegate_);
- ~PermissionDialogDelegate();
+ ~PermissionDialogDelegate() override;
- ScopedJavaLocalRef<jobject> CreateJavaDelegate(JNIEnv* env);
+ void CreateJavaDelegate(JNIEnv* env);
+
+ // On navigation or page destruction, hide the dialog.
+ void DismissDialog();
+
+ // WebContentsObserver:
+ void DidFinishNavigation(
+ content::NavigationHandle* navigation_handle) override;
+ void WebContentsDestroyed() override;
+
+ base::android::ScopedJavaGlobalRef<jobject> j_delegate_;
TabAndroid* tab_;

Powered by Google App Engine
This is Rietveld 408576698