#ifndef CHROME_BROWSER_UI_VIEWS_PERMISSIONS_PERMISSION_PROMPT_NOTIFICATIONS_MAC_H_
#define CHROME_BROWSER_UI_VIEWS_PERMISSIONS_PERMISSION_PROMPT_NOTIFICATIONS_MAC_H_
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "chrome/browser/apps/app_shim/app_shim_manager_mac.h"
#include "components/permissions/permission_prompt.h"
#include "components/webapps/common/web_app_id.h"
#include "content/public/browser/weak_document_ptr.h"
class PermissionPromptNotificationsMac : public permissions::PermissionPrompt {
public:
PermissionPromptNotificationsMac(content::WebContents* web_contents,
Delegate* delegate);
PermissionPromptNotificationsMac(const PermissionPromptNotificationsMac&) =
delete;
PermissionPromptNotificationsMac& operator=(
const PermissionPromptNotificationsMac&) = delete;
~PermissionPromptNotificationsMac() override;
static bool CanHandleRequest(content::WebContents* web_contents,
Delegate* delegate);
bool UpdateAnchor() override;
TabSwitchingBehavior GetTabSwitchingBehavior() override;
permissions::PermissionPromptDisposition GetPromptDisposition()
const override;
bool IsAskPrompt() const override;
std::optional<gfx::Rect> GetViewBoundsInScreen() const override;
bool ShouldFinalizeRequestAfterDecided() const override;
std::vector<permissions::ElementAnchoredBubbleVariant> GetPromptVariants()
const override;
std::optional<permissions::feature_params::PermissionElementPromptPosition>
GetPromptPosition() const override;
private:
void ShowPrompt();
void OnPermissionResult(
mac_notifications::mojom::RequestPermissionResult result);
const webapps::AppId app_id_;
const raw_ptr<permissions::PermissionPrompt::Delegate> delegate_;
base::WeakPtrFactory<PermissionPromptNotificationsMac> weak_factory_{this};
};
#endif