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. 4 5 #ifndef CHROME_BROWSER_UI_WEBUI_CONSTRAINED_WEB_DIALOG_DELEGATE_BASE_H_ 6 #define CHROME_BROWSER_UI_WEBUI_CONSTRAINED_WEB_DIALOG_DELEGATE_BASE_H_ 7 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" 12 13 namespace content { 14 class BrowserContext; 15 } 16 17 namespace ui { 18 class WebDialogDelegate; 19 } 20 21 // Platform-agnostic base implementation of ConstrainedWebDialogDelegate. 22 class ConstrainedWebDialogDelegateBase 23 : public ConstrainedWebDialogDelegate, 24 public ui::WebDialogWebContentsDelegate { 25 public: 26 ConstrainedWebDialogDelegateBase( 27 content::BrowserContext* browser_context, 28 ui::WebDialogDelegate* delegate, 29 WebDialogWebContentsDelegate* tab_delegate); 30 virtual ~ConstrainedWebDialogDelegateBase(); 31 32 bool closed_via_webui() const; 33 34 // ConstrainedWebDialogDelegate interface. 35 virtual const ui::WebDialogDelegate* 36 GetWebDialogDelegate() const OVERRIDE; 37 virtual ui::WebDialogDelegate* GetWebDialogDelegate() OVERRIDE; 38 virtual void OnDialogCloseFromWebUI() OVERRIDE; 39 virtual void ReleaseWebContentsOnDialogClose() OVERRIDE; 40 virtual web_modal::NativeWebContentsModalDialog GetNativeDialog() OVERRIDE; 41 virtual content::WebContents* GetWebContents() OVERRIDE; 42 43 // WebDialogWebContentsDelegate interface. 44 virtual void HandleKeyboardEvent( 45 content::WebContents* source, 46 const content::NativeWebKeyboardEvent& event) OVERRIDE; 47 48 private: 49 scoped_ptr<ui::WebDialogDelegate> web_dialog_delegate_; 50 51 // Holds the HTML to display in the constrained dialog. 52 scoped_ptr<content::WebContents> web_contents_; 53 54 // Was the dialog closed from WebUI (in which case |web_dialog_delegate_|'s 55 // OnDialogClosed() method has already been called)? 56 bool closed_via_webui_; 57 58 // If true, release |web_contents_| on close instead of destroying it. 59 bool release_contents_on_close_; 60 61 scoped_ptr<WebDialogWebContentsDelegate> override_tab_delegate_; 62 63 DISALLOW_COPY_AND_ASSIGN(ConstrainedWebDialogDelegateBase); 64 }; 65 66 #endif // CHROME_BROWSER_UI_WEBUI_CONSTRAINED_WEB_DIALOG_DELEGATE_BASE_H_ 67