ozone: evdev: Sync caps lock LED state to evdev
[chromium-blink-merge.git] / content / browser / renderer_host / render_view_host_delegate.h
blobb6e74b806b03f3270f179dc42fb8df79c67edb2e
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 CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_DELEGATE_H_
6 #define CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_DELEGATE_H_
8 #include <string>
10 #include "base/basictypes.h"
11 #include "base/callback.h"
12 #include "base/process/kill.h"
13 #include "base/strings/string16.h"
14 #include "content/browser/dom_storage/session_storage_namespace_impl.h"
15 #include "content/common/content_export.h"
16 #include "net/base/load_states.h"
17 #include "third_party/WebKit/public/web/WebPopupType.h"
18 #include "ui/base/window_open_disposition.h"
20 class GURL;
21 class SkBitmap;
22 struct ViewHostMsg_CreateWindow_Params;
23 struct FrameHostMsg_DidCommitProvisionalLoad_Params;
24 struct ViewMsg_PostMessage_Params;
26 namespace base {
27 class ListValue;
28 class TimeTicks;
31 namespace IPC {
32 class Message;
35 namespace gfx {
36 class Point;
37 class Rect;
38 class Size;
41 namespace content {
43 class BrowserContext;
44 class CrossSiteTransferringRequest;
45 class FrameTree;
46 class PageState;
47 class RenderViewHost;
48 class RenderViewHostDelegateView;
49 class SessionStorageNamespace;
50 class SiteInstance;
51 class WebContents;
52 class WebContentsImpl;
53 struct FileChooserParams;
54 struct GlobalRequestID;
55 struct NativeWebKeyboardEvent;
56 struct Referrer;
57 struct RendererPreferences;
58 struct WebPreferences;
61 // RenderViewHostDelegate
63 // An interface implemented by an object interested in knowing about the state
64 // of the RenderViewHost.
66 // This interface currently encompasses every type of message that was
67 // previously being sent by WebContents itself. Some of these notifications
68 // may not be relevant to all users of RenderViewHost and we should consider
69 // exposing a more generic Send function on RenderViewHost and a response
70 // listener here to serve that need.
71 class CONTENT_EXPORT RenderViewHostDelegate {
72 public:
73 // Returns the current delegate associated with a feature. May return NULL if
74 // there is no corresponding delegate.
75 virtual RenderViewHostDelegateView* GetDelegateView();
77 // This is used to give the delegate a chance to filter IPC messages.
78 virtual bool OnMessageReceived(RenderViewHost* render_view_host,
79 const IPC::Message& message);
81 // Return this object cast to a WebContents, if it is one. If the object is
82 // not a WebContents, returns NULL. DEPRECATED: Be sure to include brettw or
83 // jam as reviewers before you use this method. http://crbug.com/82582
84 virtual WebContents* GetAsWebContents();
86 // Return the rect where to display the resize corner, if any, otherwise
87 // an empty rect.
88 virtual gfx::Rect GetRootWindowResizerRect() const = 0;
90 // The RenderView is being constructed (message sent to the renderer process
91 // to construct a RenderView). Now is a good time to send other setup events
92 // to the RenderView. This precedes any other commands to the RenderView.
93 virtual void RenderViewCreated(RenderViewHost* render_view_host) {}
95 // The RenderView has been constructed.
96 virtual void RenderViewReady(RenderViewHost* render_view_host) {}
98 // The RenderView died somehow (crashed or was killed by the user).
99 virtual void RenderViewTerminated(RenderViewHost* render_view_host,
100 base::TerminationStatus status,
101 int error_code) {}
103 // The RenderView is going to be deleted. This is called when each
104 // RenderView is going to be destroyed
105 virtual void RenderViewDeleted(RenderViewHost* render_view_host) {}
107 // The state for the page changed and should be updated.
108 virtual void UpdateState(RenderViewHost* render_view_host,
109 int32 page_id,
110 const PageState& state) {}
112 // The destination URL has changed should be updated.
113 virtual void UpdateTargetURL(RenderViewHost* render_view_host,
114 const GURL& url) {}
116 // The page is trying to close the RenderView's representation in the client.
117 virtual void Close(RenderViewHost* render_view_host) {}
119 // The page is trying to move the RenderView's representation in the client.
120 virtual void RequestMove(const gfx::Rect& new_bounds) {}
122 // The pending page load was canceled.
123 virtual void DidCancelLoading() {}
125 // The RenderView's main frame document element is ready. This happens when
126 // the document has finished parsing.
127 virtual void DocumentAvailableInMainFrame(RenderViewHost* render_view_host) {}
129 // The page wants to close the active view in this tab.
130 virtual void RouteCloseEvent(RenderViewHost* rvh) {}
132 // The page wants to post a message to the active view in this tab.
133 virtual void RouteMessageEvent(
134 RenderViewHost* rvh,
135 const ViewMsg_PostMessage_Params& params) {}
137 // Return a dummy RendererPreferences object that will be used by the renderer
138 // associated with the owning RenderViewHost.
139 virtual RendererPreferences GetRendererPrefs(
140 BrowserContext* browser_context) const = 0;
142 // Notification the user has made a gesture while focus was on the
143 // page. This is used to avoid uninitiated user downloads (aka carpet
144 // bombing), see DownloadRequestLimiter for details.
145 virtual void OnUserGesture() {}
147 // Notification from the renderer host that blocked UI event occurred.
148 // This happens when there are tab-modal dialogs. In this case, the
149 // notification is needed to let us draw attention to the dialog (i.e.
150 // refocus on the modal dialog, flash title etc).
151 virtual void OnIgnoredUIEvent() {}
153 // Notification that the renderer has become unresponsive. The
154 // delegate can use this notification to show a warning to the user.
155 virtual void RendererUnresponsive(RenderViewHost* render_view_host) {}
157 // Notification that a previously unresponsive renderer has become
158 // responsive again. The delegate can use this notification to end the
159 // warning shown to the user.
160 virtual void RendererResponsive(RenderViewHost* render_view_host) {}
162 // Notification that the RenderViewHost's load state changed.
163 virtual void LoadStateChanged(const GURL& url,
164 const net::LoadStateWithParam& load_state,
165 uint64 upload_position,
166 uint64 upload_size) {}
168 // The page wants the hosting window to activate/deactivate itself (it
169 // called the JavaScript window.focus()/blur() method).
170 virtual void Activate() {}
171 virtual void Deactivate() {}
173 // Notification that the view has lost capture.
174 virtual void LostCapture() {}
176 // Notifications about mouse events in this view. This is useful for
177 // implementing global 'on hover' features external to the view.
178 virtual void HandleMouseMove() {}
179 virtual void HandleMouseDown() {}
180 virtual void HandleMouseLeave() {}
181 virtual void HandleMouseUp() {}
182 virtual void HandlePointerActivate() {}
183 virtual void HandleGestureBegin() {}
184 virtual void HandleGestureEnd() {}
186 // Called when a file selection is to be done.
187 virtual void RunFileChooser(
188 RenderViewHost* render_view_host,
189 const FileChooserParams& params) {}
191 // Returns whether the associated tab is in fullscreen mode.
192 virtual bool IsFullscreenForCurrentTab() const;
194 // The contents' preferred size changed.
195 virtual void UpdatePreferredSize(const gfx::Size& pref_size) {}
197 // The contents auto-resized and the container should match it.
198 virtual void ResizeDueToAutoResize(const gfx::Size& new_size) {}
200 // Requests to lock the mouse. Once the request is approved or rejected,
201 // GotResponseToLockMouseRequest() will be called on the requesting render
202 // view host.
203 virtual void RequestToLockMouse(bool user_gesture,
204 bool last_unlocked_by_target) {}
206 // Notification that the view has lost the mouse lock.
207 virtual void LostMouseLock() {}
209 // The page is trying to open a new page (e.g. a popup window). The window
210 // should be created associated with the given |route_id| in process
211 // |render_process_id|, but it should not be shown yet. That should happen in
212 // response to ShowCreatedWindow.
213 // |params.window_container_type| describes the type of RenderViewHost
214 // container that is requested -- in particular, the window.open call may
215 // have specified 'background' and 'persistent' in the feature string.
217 // The passed |params.frame_name| parameter is the name parameter that was
218 // passed to window.open(), and will be empty if none was passed.
220 // Note: this is not called "CreateWindow" because that will clash with
221 // the Windows function which is actually a #define.
222 virtual void CreateNewWindow(
223 int render_process_id,
224 int route_id,
225 int main_frame_route_id,
226 const ViewHostMsg_CreateWindow_Params& params,
227 SessionStorageNamespace* session_storage_namespace) {}
229 // The page is trying to open a new widget (e.g. a select popup). The
230 // widget should be created associated with the given |route_id| in the
231 // process |render_process_id|, but it should not be shown yet. That should
232 // happen in response to ShowCreatedWidget.
233 // |popup_type| indicates if the widget is a popup and what kind of popup it
234 // is (select, autofill...).
235 virtual void CreateNewWidget(int render_process_id,
236 int route_id,
237 blink::WebPopupType popup_type) {}
239 // Creates a full screen RenderWidget. Similar to above.
240 virtual void CreateNewFullscreenWidget(int render_process_id, int route_id) {}
242 // Show a previously created page with the specified disposition and bounds.
243 // The window is identified by the route_id passed to CreateNewWindow.
245 // Note: this is not called "ShowWindow" because that will clash with
246 // the Windows function which is actually a #define.
247 virtual void ShowCreatedWindow(int route_id,
248 WindowOpenDisposition disposition,
249 const gfx::Rect& initial_rect,
250 bool user_gesture) {}
252 // Show the newly created widget with the specified bounds.
253 // The widget is identified by the route_id passed to CreateNewWidget.
254 virtual void ShowCreatedWidget(int route_id,
255 const gfx::Rect& initial_rect) {}
257 // Show the newly created full screen widget. Similar to above.
258 virtual void ShowCreatedFullscreenWidget(int route_id) {}
260 // Returns the SessionStorageNamespace the render view should use. Might
261 // create the SessionStorageNamespace on the fly.
262 virtual SessionStorageNamespace* GetSessionStorageNamespace(
263 SiteInstance* instance);
265 // Returns a copy of the map of all session storage namespaces related
266 // to this view.
267 virtual SessionStorageNamespaceMap GetSessionStorageNamespaceMap();
269 // Returns true if the RenderViewHost will never be visible.
270 virtual bool IsNeverVisible();
272 // Returns the FrameTree the render view should use. Guaranteed to be constant
273 // for the lifetime of the render view.
275 // TODO(ajwong): Remove once the main frame RenderFrameHost is no longer
276 // created by the RenderViewHost.
277 virtual FrameTree* GetFrameTree();
279 // Optional state storage for if the Virtual Keyboard has been requested by
280 // this page or not. If it has, this can be used to suppress things like the
281 // link disambiguation dialog, which doesn't interact well with the virtual
282 // keyboard.
283 virtual void SetIsVirtualKeyboardRequested(bool requested) {}
284 virtual bool IsVirtualKeyboardRequested();
286 protected:
287 virtual ~RenderViewHostDelegate() {}
290 } // namespace content
292 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_DELEGATE_H_