1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_UI_WEBUI_CONSTRAINED_WEB_DIALOG_DELEGATE_BASE_H_
6 #define CHROME_BROWSER_UI_WEBUI_CONSTRAINED_WEB_DIALOG_DELEGATE_BASE_H_
8 #include "base/memory/scoped_ptr.h"
9 #include "chrome/browser/ui/webui/constrained_web_dialog_ui.h"
10 #include "ui/web_dialogs/web_dialog_ui.h"
11 #include "ui/web_dialogs/web_dialog_web_contents_delegate.h"
18 class WebDialogDelegate
;
21 // Platform-agnostic base implementation of ConstrainedWebDialogDelegate.
22 class ConstrainedWebDialogDelegateBase
23 : public ConstrainedWebDialogDelegate
,
24 public ui::WebDialogWebContentsDelegate
{
26 ConstrainedWebDialogDelegateBase(content::BrowserContext
* browser_context
,
27 ui::WebDialogDelegate
* delegate
,
28 WebDialogWebContentsDelegate
* tab_delegate
);
29 ~ConstrainedWebDialogDelegateBase() override
;
31 bool closed_via_webui() const;
33 // ConstrainedWebDialogDelegate interface.
34 const ui::WebDialogDelegate
* GetWebDialogDelegate() const override
;
35 ui::WebDialogDelegate
* GetWebDialogDelegate() override
;
36 void OnDialogCloseFromWebUI() override
;
37 void ReleaseWebContentsOnDialogClose() override
;
38 content::WebContents
* GetWebContents() override
;
39 gfx::NativeWindow
GetNativeDialog() override
;
40 gfx::Size
GetMinimumSize() const override
;
41 gfx::Size
GetMaximumSize() const override
;
42 gfx::Size
GetPreferredSize() const override
;
44 // WebDialogWebContentsDelegate interface.
45 void HandleKeyboardEvent(
46 content::WebContents
* source
,
47 const content::NativeWebKeyboardEvent
& event
) override
;
50 scoped_ptr
<ui::WebDialogDelegate
> web_dialog_delegate_
;
52 // Holds the HTML to display in the constrained dialog.
53 scoped_ptr
<content::WebContents
> web_contents_
;
55 // Was the dialog closed from WebUI (in which case |web_dialog_delegate_|'s
56 // OnDialogClosed() method has already been called)?
57 bool closed_via_webui_
;
59 // If true, release |web_contents_| on close instead of destroying it.
60 bool release_contents_on_close_
;
62 scoped_ptr
<WebDialogWebContentsDelegate
> override_tab_delegate_
;
64 DISALLOW_COPY_AND_ASSIGN(ConstrainedWebDialogDelegateBase
);
67 #endif // CHROME_BROWSER_UI_WEBUI_CONSTRAINED_WEB_DIALOG_DELEGATE_BASE_H_