Separate Simple Backend creation from initialization.
[chromium-blink-merge.git] / ui / web_dialogs / web_dialog_delegate.h
blob3a6ec4f1486b09e69bd183f831bae5b09411cfb8
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 UI_WEB_DIALOGS_WEB_DIALOG_DELEGATE_H_
6 #define UI_WEB_DIALOGS_WEB_DIALOG_DELEGATE_H_
8 #include <string>
9 #include <vector>
11 #include "base/string16.h"
12 #include "ui/base/ui_base_types.h"
13 #include "ui/base/window_open_disposition.h"
14 #include "ui/web_dialogs/web_dialogs_export.h"
16 class GURL;
18 namespace content {
19 class RenderViewHost;
20 class WebContents;
21 class WebUI;
22 class WebUIMessageHandler;
23 struct ContextMenuParams;
24 struct OpenURLParams;
27 namespace gfx {
28 class Rect;
29 class Size;
32 namespace ui {
34 // Implement this class to receive notifications.
35 class WEB_DIALOGS_EXPORT WebDialogDelegate {
36 public:
37 // Returns true if the contents needs to be run in a modal dialog.
38 virtual ModalType GetDialogModalType() const = 0;
40 // Returns the title of the dialog.
41 virtual string16 GetDialogTitle() const = 0;
43 // Returns the dialog's name identifier. Used to identify this dialog for
44 // state restoration.
45 virtual std::string GetDialogName() const;
47 // Get the HTML file path for the content to load in the dialog.
48 virtual GURL GetDialogContentURL() const = 0;
50 // Get WebUIMessageHandler objects to handle messages from the HTML/JS page.
51 // The handlers are used to send and receive messages from the page while it
52 // is still open. Ownership of each handler is taken over by the WebUI
53 // hosting the page.
54 virtual void GetWebUIMessageHandlers(
55 std::vector<content::WebUIMessageHandler*>* handlers) const = 0;
57 // Get the size of the dialog.
58 virtual void GetDialogSize(gfx::Size* size) const = 0;
60 // Get the size of the dialog.
61 virtual void GetMinimumDialogSize(gfx::Size* size) const;
63 // Gets the JSON string input to use when showing the dialog.
64 virtual std::string GetDialogArgs() const = 0;
66 // A callback to notify the delegate that |source|'s loading state has
67 // changed.
68 virtual void OnLoadingStateChanged(content::WebContents* source) {}
70 // A callback to notify the delegate that a web dialog has been shown.
71 // |webui| is the WebUI with which the dialog is associated.
72 // |render_view_host| is the RenderViewHost for the shown dialog.
73 virtual void OnDialogShown(content::WebUI* webui,
74 content::RenderViewHost* render_view_host) {}
76 // A callback to notify the delegate that the dialog closed.
77 // IMPORTANT: Implementations should delete |this| here (unless they've
78 // arranged for the delegate to be deleted in some other way, e.g. by
79 // registering it as a message handler in the WebUI object).
80 virtual void OnDialogClosed(const std::string& json_retval) = 0;
82 // A callback to notify the delegate that the dialog is being closed in
83 // response to a "DialogClose" message from WebUI.
84 virtual void OnDialogCloseFromWebUI(const std::string& json_retval);
86 // A callback to notify the delegate that the contents have gone
87 // away. Only relevant if your dialog hosts code that calls
88 // windows.close() and you've allowed that. If the output parameter
89 // is set to true, then the dialog is closed. The default is false.
90 virtual void OnCloseContents(content::WebContents* source,
91 bool* out_close_dialog) = 0;
93 // A callback to allow the delegate to dictate that the window should not
94 // have a title bar. This is useful when presenting branded interfaces.
95 virtual bool ShouldShowDialogTitle() const = 0;
97 // A callback to allow the delegate to inhibit context menu or show
98 // customized menu.
99 // Returns true iff you do NOT want the standard context menu to be
100 // shown (because you want to handle it yourself).
101 virtual bool HandleContextMenu(const content::ContextMenuParams& params);
103 // A callback to allow the delegate to open a new URL inside |source|.
104 // On return |out_new_contents| should contain the WebContents the URL
105 // is opened in. Return false to use the default handler.
106 virtual bool HandleOpenURLFromTab(content::WebContents* source,
107 const content::OpenURLParams& params,
108 content::WebContents** out_new_contents);
110 // A callback to create a new tab with |new_contents|. |source| is the
111 // WebContent where the operation originated. |disposition| controls how the
112 // new tab should be opened. |initial_pos| is the position of the window if a
113 // new window is created. |user_gesture| is true if the operation was started
114 // by a user gesture. Return false to use the default handler.
115 virtual bool HandleAddNewContents(content::WebContents* source,
116 content::WebContents* new_contents,
117 WindowOpenDisposition disposition,
118 const gfx::Rect& initial_pos,
119 bool user_gesture);
121 // Stores the dialog bounds.
122 virtual void StoreDialogSize(const gfx::Size& dialog_size) {}
124 virtual ~WebDialogDelegate() {}
127 } // namespace ui
129 #endif // UI_WEB_DIALOGS_WEB_DIALOG_DELEGATE_H_