Home | History | Annotate | Download | only in webui
      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