[Messages] Refactor notification blocked message delegate
1. Remove web contents user data
2. Permission prompt android will hold a strong reference to the
delegate instead.
Bug: 1230927
Change-Id: Ic7ed1d73ff3ae64211276b94d316bb4ae49a1970
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3221792
Commit-Queue: Lijin Shen <[email protected]>
Reviewed-by: Balazs Engedy <[email protected]>
Cr-Commit-Position: refs/heads/main@{#942187}
diff --git a/chrome/browser/permissions/notification_blocked_message_delegate_android.h b/chrome/browser/permissions/notification_blocked_message_delegate_android.h
index 2fc17bc..f972243 100644
--- a/chrome/browser/permissions/notification_blocked_message_delegate_android.h
+++ b/chrome/browser/permissions/notification_blocked_message_delegate_android.h
@@ -11,7 +11,7 @@
#include "components/content_settings/core/common/content_settings_types.h"
#include "components/messages/android/message_enums.h"
#include "components/messages/android/message_wrapper.h"
-#include "content/public/browser/web_contents_user_data.h"
+#include "components/permissions/permissions_client.h"
namespace content {
class WebContents;
@@ -24,7 +24,7 @@
// A message ui that displays a notification permission request, which is an
// alternative ui to the mini infobar.
class NotificationBlockedMessageDelegate
- : public content::WebContentsUserData<NotificationBlockedMessageDelegate> {
+ : public permissions::PermissionsClient::PermissionMessageDelegate {
public:
// Delegate to mock out the |PermissionPromptAndroid| for testing.
class Delegate {
@@ -43,14 +43,11 @@
base::WeakPtr<permissions::PermissionPromptAndroid> permission_prompt_;
};
+ NotificationBlockedMessageDelegate(content::WebContents* web_contents,
+ std::unique_ptr<Delegate> delegate);
~NotificationBlockedMessageDelegate() override;
- // Returns pointer to the message wrapper if a new message UIs has been
- // created and will be shown. Returns nullptr if not created.
- messages::MessageWrapper* ShowMessage(std::unique_ptr<Delegate> delegate);
-
private:
- friend class content::WebContentsUserData<NotificationBlockedMessageDelegate>;
friend class NotificationBlockedMessageDelegateAndroidTest;
explicit NotificationBlockedMessageDelegate(
@@ -63,10 +60,8 @@
void DismissInternal();
std::unique_ptr<messages::MessageWrapper> message_;
- std::unique_ptr<Delegate> delegate_;
content::WebContents* web_contents_ = nullptr;
-
- WEB_CONTENTS_USER_DATA_KEY_DECL();
+ std::unique_ptr<Delegate> delegate_;
};
#endif // CHROME_BROWSER_PERMISSIONS_NOTIFICATION_BLOCKED_MESSAGE_DELEGATE_ANDROID_H_