render_frame_impl.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright 2013 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 CONTENT_RENDERER_RENDER_FRAME_IMPL_H_
6#define CONTENT_RENDERER_RENDER_FRAME_IMPL_H_
7
8#include "base/basictypes.h"
9#include "content/public/renderer/render_frame.h"
10#include "ipc/ipc_message.h"
11#include "third_party/WebKit/public/web/WebDataSource.h"
12#include "third_party/WebKit/public/web/WebFrameClient.h"
13
14namespace content {
15
16class RenderViewImpl;
17
18class CONTENT_EXPORT RenderFrameImpl
19    : public RenderFrame,
20      NON_EXPORTED_BASE(public WebKit::WebFrameClient) {
21 public:
22  // Creates a new RenderFrame. |render_view| is the RenderView object that this
23  // frame belongs to.
24  static RenderFrameImpl* Create(RenderViewImpl* render_view, int32 routing_id);
25
26  // Used by content_layouttest_support to hook into the creation of
27  // RenderFrameImpls.
28  static void InstallCreateHook(
29      RenderFrameImpl* (*create_render_frame_impl)(RenderViewImpl*, int32));
30
31  virtual ~RenderFrameImpl();
32
33  // IPC::Sender
34  virtual bool Send(IPC::Message* msg) OVERRIDE;
35
36  // IPC::Listener
37  virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
38
39  // WebKit::WebFrameClient implementation -------------------------------------
40  virtual WebKit::WebPlugin* createPlugin(
41      WebKit::WebFrame* frame,
42      const WebKit::WebPluginParams& params);
43  virtual WebKit::WebSharedWorker* createSharedWorker(
44      WebKit::WebFrame* frame,
45      const WebKit::WebURL& url,
46      const WebKit::WebString& name,
47      unsigned long long document_id);
48  virtual WebKit::WebMediaPlayer* createMediaPlayer(
49      WebKit::WebFrame* frame,
50      const WebKit::WebURL& url,
51      WebKit::WebMediaPlayerClient* client);
52  virtual WebKit::WebApplicationCacheHost* createApplicationCacheHost(
53      WebKit::WebFrame* frame,
54      WebKit::WebApplicationCacheHostClient* client);
55  virtual WebKit::WebCookieJar* cookieJar(WebKit::WebFrame* frame);
56  virtual void didAccessInitialDocument(WebKit::WebFrame* frame);
57  virtual void didCreateFrame(WebKit::WebFrame* parent,
58                              WebKit::WebFrame* child);
59  virtual void didDisownOpener(WebKit::WebFrame* frame);
60  virtual void frameDetached(WebKit::WebFrame* frame);
61  virtual void willClose(WebKit::WebFrame* frame);
62  virtual void didChangeName(WebKit::WebFrame* frame,
63                             const WebKit::WebString& name);
64  virtual void loadURLExternally(WebKit::WebFrame* frame,
65                                 const WebKit::WebURLRequest& request,
66                                 WebKit::WebNavigationPolicy policy);
67  virtual void loadURLExternally(
68      WebKit::WebFrame* frame,
69      const WebKit::WebURLRequest& request,
70      WebKit::WebNavigationPolicy policy,
71      const WebKit::WebString& suggested_name);
72  virtual WebKit::WebNavigationPolicy decidePolicyForNavigation(
73      WebKit::WebFrame* frame,
74      const WebKit::WebURLRequest& request,
75      WebKit::WebNavigationType type,
76      WebKit::WebNavigationPolicy default_policy,
77      bool is_redirect);
78  virtual WebKit::WebURLError cannotHandleRequestError(
79      WebKit::WebFrame* frame,
80      const WebKit::WebURLRequest& request);
81  virtual WebKit::WebURLError cancelledError(
82      WebKit::WebFrame* frame,
83      const WebKit::WebURLRequest& request);
84  virtual void unableToImplementPolicyWithError(
85      WebKit::WebFrame* frame,
86      const WebKit::WebURLError& error);
87  virtual void willSendSubmitEvent(WebKit::WebFrame* frame,
88                                   const WebKit::WebFormElement& form);
89  virtual void willSubmitForm(WebKit::WebFrame* frame,
90                              const WebKit::WebFormElement& form);
91  virtual void willPerformClientRedirect(WebKit::WebFrame* frame,
92                                         const WebKit::WebURL& from,
93                                         const WebKit::WebURL& to,
94                                         double interval,
95                                         double fire_time);
96  virtual void didCancelClientRedirect(WebKit::WebFrame* frame);
97  virtual void didCompleteClientRedirect(WebKit::WebFrame* frame,
98                                         const WebKit::WebURL& from);
99  virtual void didCreateDataSource(WebKit::WebFrame* frame,
100                                   WebKit::WebDataSource* datasource);
101  virtual void didStartProvisionalLoad(WebKit::WebFrame* frame);
102  virtual void didReceiveServerRedirectForProvisionalLoad(
103      WebKit::WebFrame* frame);
104  virtual void didFailProvisionalLoad(
105      WebKit::WebFrame* frame,
106      const WebKit::WebURLError& error);
107  virtual void didReceiveDocumentData(WebKit::WebFrame* frame,
108                                      const char* data,
109                                      size_t length,
110                                      bool& prevent_default);
111  virtual void didCommitProvisionalLoad(WebKit::WebFrame* frame,
112                                        bool is_new_navigation);
113  virtual void didClearWindowObject(WebKit::WebFrame* frame);
114  virtual void didCreateDocumentElement(WebKit::WebFrame* frame);
115  virtual void didReceiveTitle(WebKit::WebFrame* frame,
116                               const WebKit::WebString& title,
117                               WebKit::WebTextDirection direction);
118  virtual void didChangeIcon(WebKit::WebFrame* frame,
119                             WebKit::WebIconURL::Type icon_type);
120  virtual void didFinishDocumentLoad(WebKit::WebFrame* frame);
121  virtual void didHandleOnloadEvents(WebKit::WebFrame* frame);
122  virtual void didFailLoad(WebKit::WebFrame* frame,
123                           const WebKit::WebURLError& error);
124  virtual void didFinishLoad(WebKit::WebFrame* frame);
125  virtual void didNavigateWithinPage(WebKit::WebFrame* frame,
126                                     bool is_new_navigation);
127  virtual void didUpdateCurrentHistoryItem(WebKit::WebFrame* frame);
128  virtual void willSendRequest(
129      WebKit::WebFrame* frame,
130      unsigned identifier,
131      WebKit::WebURLRequest& request,
132      const WebKit::WebURLResponse& redirect_response);
133  virtual void didReceiveResponse(
134      WebKit::WebFrame* frame,
135      unsigned identifier,
136      const WebKit::WebURLResponse& response);
137  virtual void didFinishResourceLoad(WebKit::WebFrame* frame,
138                                     unsigned identifier);
139  virtual void didFailResourceLoad(WebKit::WebFrame* frame,
140                                   unsigned identifier,
141                                   const WebKit::WebURLError& error);
142  virtual void didLoadResourceFromMemoryCache(
143      WebKit::WebFrame* frame,
144      const WebKit::WebURLRequest& request,
145      const WebKit::WebURLResponse& response);
146  virtual void didDisplayInsecureContent(WebKit::WebFrame* frame);
147  virtual void didRunInsecureContent(WebKit::WebFrame* frame,
148                                     const WebKit::WebSecurityOrigin& origin,
149                                     const WebKit::WebURL& target);
150  virtual void didExhaustMemoryAvailableForScript(
151      WebKit::WebFrame* frame);
152  virtual void didCreateScriptContext(WebKit::WebFrame* frame,
153                                      v8::Handle<v8::Context> context,
154                                      int extension_group,
155                                      int world_id);
156  virtual void willReleaseScriptContext(WebKit::WebFrame* frame,
157                                        v8::Handle<v8::Context> context,
158                                        int world_id);
159  virtual void didFirstVisuallyNonEmptyLayout(WebKit::WebFrame* frame);
160  virtual void didChangeContentsSize(WebKit::WebFrame* frame,
161                                     const WebKit::WebSize& size);
162  virtual void didChangeScrollOffset(WebKit::WebFrame* frame);
163  virtual void willInsertBody(WebKit::WebFrame* frame);
164  virtual void reportFindInPageMatchCount(int request_id,
165                                          int count,
166                                          bool final_update);
167  virtual void reportFindInPageSelection(int request_id,
168                                         int active_match_ordinal,
169                                         const WebKit::WebRect& sel);
170  virtual void openFileSystem(
171      WebKit::WebFrame* frame,
172      WebKit::WebFileSystemType type,
173      long long size,
174      bool create,
175      WebKit::WebFileSystemCallbacks* callbacks);
176  virtual void deleteFileSystem(
177      WebKit::WebFrame* frame,
178      WebKit::WebFileSystemType type,
179      WebKit::WebFileSystemCallbacks* callbacks);
180  virtual void queryStorageUsageAndQuota(
181      WebKit::WebFrame* frame,
182      WebKit::WebStorageQuotaType type,
183      WebKit::WebStorageQuotaCallbacks* callbacks);
184  virtual void requestStorageQuota(
185      WebKit::WebFrame* frame,
186      WebKit::WebStorageQuotaType type,
187      unsigned long long requested_size,
188      WebKit::WebStorageQuotaCallbacks* callbacks);
189  virtual void willOpenSocketStream(
190      WebKit::WebSocketStreamHandle* handle);
191  virtual void willStartUsingPeerConnectionHandler(
192      WebKit::WebFrame* frame,
193      WebKit::WebRTCPeerConnectionHandler* handler);
194  virtual bool willCheckAndDispatchMessageEvent(
195      WebKit::WebFrame* sourceFrame,
196      WebKit::WebFrame* targetFrame,
197      WebKit::WebSecurityOrigin targetOrigin,
198      WebKit::WebDOMMessageEvent event);
199  virtual WebKit::WebString userAgentOverride(
200      WebKit::WebFrame* frame,
201      const WebKit::WebURL& url);
202  virtual WebKit::WebString doNotTrackValue(WebKit::WebFrame* frame);
203  virtual bool allowWebGL(WebKit::WebFrame* frame, bool default_value);
204  virtual void didLoseWebGLContext(WebKit::WebFrame* frame,
205                                   int arb_robustness_status_code);
206
207  // RenderFrameImpl methods
208  int routing_id() { return routing_id_; }
209
210 protected:
211  RenderFrameImpl(RenderViewImpl* render_view, int32 routing_id);
212
213 private:
214  RenderViewImpl* render_view_;
215  int routing_id_;
216
217  DISALLOW_COPY_AND_ASSIGN(RenderFrameImpl);
218};
219
220}  // namespace content
221
222#endif  // CONTENT_RENDERER_RENDER_FRAME_IMPL_H_
223