#ifndef UI_WEB_DIALOGS_WEB_DIALOG_UI_H_
#define UI_WEB_DIALOGS_WEB_DIALOG_UI_H_
#include "base/memory/raw_ptr.h"
#include "content/public/browser/web_contents_delegate.h"
#include "content/public/browser/web_ui_controller.h"
#include "ui/base/ui_base_types.h"
#include "ui/web_dialogs/web_dialogs_export.h"
#include "ui/webui/mojo_web_ui_controller.h"
namespace content {
class WebContents;
}
namespace ui {
class WebDialogDelegate;
class WEB_DIALOGS_EXPORT WebDialogUIBase {
public:
static void SetDelegate(content::WebContents* web_contents,
WebDialogDelegate* delegate);
WebDialogUIBase(content::WebUI* web_ui);
WebDialogUIBase(const WebDialogUIBase&) = delete;
WebDialogUIBase& operator=(const WebDialogUIBase&) = delete;
void CloseDialog(const base::Value::List& args);
protected:
virtual ~WebDialogUIBase();
void HandleRenderFrameCreated(content::RenderFrameHost* render_frame_host);
private:
static WebDialogDelegate* GetDelegate(content::WebContents* web_contents);
void OnDialogClosed(const base::Value::List& args);
raw_ptr<content::WebUI> web_ui_;
};
class WEB_DIALOGS_EXPORT WebDialogUI : public WebDialogUIBase,
public content::WebUIController {
public:
explicit WebDialogUI(content::WebUI* web_ui);
~WebDialogUI() override;
WebDialogUI(const WebDialogUI&) = delete;
WebDialogUI& operator=(const WebDialogUI&) = delete;
protected:
void WebUIRenderFrameCreated(
content::RenderFrameHost* render_frame_host) override;
};
class WEB_DIALOGS_EXPORT MojoWebDialogUI : public WebDialogUI,
public ui::EnableMojoWebUI {
public:
explicit MojoWebDialogUI(content::WebUI* web_ui);
~MojoWebDialogUI() override;
MojoWebDialogUI(const MojoWebDialogUI&) = delete;
MojoWebDialogUI& operator=(const MojoWebDialogUI&) = delete;
private:
void WebUIRenderFrameCreated(
content::RenderFrameHost* render_frame_host) override;
};
}
#endif