render_frame_impl.h revision 986a0553b65ddb17fe466f5f201753c0e9060cde
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      WebKit::WebDataSource::ExtraData* extra_data,
75      const WebKit::WebURLRequest& request,
76      WebKit::WebNavigationType type,
77      WebKit::WebNavigationPolicy default_policy,
78      bool is_redirect);
79  // DEPRECATED
80  virtual WebKit::WebNavigationPolicy decidePolicyForNavigation(
81      WebKit::WebFrame* frame,
82      const WebKit::WebURLRequest& request,
83      WebKit::WebNavigationType type,
84      WebKit::WebNavigationPolicy default_policy,
85      bool is_redirect);
86  virtual bool shouldAbortNavigationAfterUrlResolve(const WebKit::WebURL& base,
87                                        const WebKit::WebString& fragment,
88                                        const WebKit::WebURL& result) OVERRIDE;
89  virtual void willSendSubmitEvent(WebKit::WebFrame* frame,
90                                   const WebKit::WebFormElement& form);
91  virtual void willSubmitForm(WebKit::WebFrame* frame,
92                              const WebKit::WebFormElement& form);
93  virtual void didCreateDataSource(WebKit::WebFrame* frame,
94                                   WebKit::WebDataSource* datasource);
95  virtual void didStartProvisionalLoad(WebKit::WebFrame* frame);
96  virtual void didReceiveServerRedirectForProvisionalLoad(
97      WebKit::WebFrame* frame);
98  virtual void didFailProvisionalLoad(
99      WebKit::WebFrame* frame,
100      const WebKit::WebURLError& error);
101  virtual void didCommitProvisionalLoad(WebKit::WebFrame* frame,
102                                        bool is_new_navigation);
103  virtual void didClearWindowObject(WebKit::WebFrame* frame);
104  virtual void didCreateDocumentElement(WebKit::WebFrame* frame);
105  virtual void didReceiveTitle(WebKit::WebFrame* frame,
106                               const WebKit::WebString& title,
107                               WebKit::WebTextDirection direction);
108  virtual void didChangeIcon(WebKit::WebFrame* frame,
109                             WebKit::WebIconURL::Type icon_type);
110  virtual void didFinishDocumentLoad(WebKit::WebFrame* frame);
111  virtual void didHandleOnloadEvents(WebKit::WebFrame* frame);
112  virtual void didFailLoad(WebKit::WebFrame* frame,
113                           const WebKit::WebURLError& error);
114  virtual void didFinishLoad(WebKit::WebFrame* frame);
115  virtual void didNavigateWithinPage(WebKit::WebFrame* frame,
116                                     bool is_new_navigation);
117  virtual void didUpdateCurrentHistoryItem(WebKit::WebFrame* frame);
118  virtual void willRequestAfterPreconnect(WebKit::WebFrame* frame,
119                                          WebKit::WebURLRequest& request);
120  virtual void willSendRequest(
121      WebKit::WebFrame* frame,
122      unsigned identifier,
123      WebKit::WebURLRequest& request,
124      const WebKit::WebURLResponse& redirect_response);
125  virtual void didReceiveResponse(
126      WebKit::WebFrame* frame,
127      unsigned identifier,
128      const WebKit::WebURLResponse& response);
129  virtual void didFinishResourceLoad(WebKit::WebFrame* frame,
130                                     unsigned identifier);
131  virtual void didLoadResourceFromMemoryCache(
132      WebKit::WebFrame* frame,
133      const WebKit::WebURLRequest& request,
134      const WebKit::WebURLResponse& response);
135  virtual void didDisplayInsecureContent(WebKit::WebFrame* frame);
136  virtual void didRunInsecureContent(WebKit::WebFrame* frame,
137                                     const WebKit::WebSecurityOrigin& origin,
138                                     const WebKit::WebURL& target);
139  virtual void didExhaustMemoryAvailableForScript(
140      WebKit::WebFrame* frame);
141  virtual void didCreateScriptContext(WebKit::WebFrame* frame,
142                                      v8::Handle<v8::Context> context,
143                                      int extension_group,
144                                      int world_id);
145  virtual void willReleaseScriptContext(WebKit::WebFrame* frame,
146                                        v8::Handle<v8::Context> context,
147                                        int world_id);
148  virtual void didFirstVisuallyNonEmptyLayout(WebKit::WebFrame* frame);
149  virtual void didChangeContentsSize(WebKit::WebFrame* frame,
150                                     const WebKit::WebSize& size);
151  virtual void didChangeScrollOffset(WebKit::WebFrame* frame);
152  virtual void willInsertBody(WebKit::WebFrame* frame);
153  virtual void reportFindInPageMatchCount(int request_id,
154                                          int count,
155                                          bool final_update);
156  virtual void reportFindInPageSelection(int request_id,
157                                         int active_match_ordinal,
158                                         const WebKit::WebRect& sel);
159  virtual void openFileSystem(
160      WebKit::WebFrame* frame,
161      WebKit::WebFileSystemType type,
162      long long size,
163      bool create,
164      WebKit::WebFileSystemCallbacks* callbacks);
165  virtual void deleteFileSystem(
166      WebKit::WebFrame* frame,
167      WebKit::WebFileSystemType type,
168      WebKit::WebFileSystemCallbacks* callbacks);
169  virtual void requestStorageQuota(
170      WebKit::WebFrame* frame,
171      WebKit::WebStorageQuotaType type,
172      unsigned long long requested_size,
173      WebKit::WebStorageQuotaCallbacks* callbacks);
174  virtual void willOpenSocketStream(
175      WebKit::WebSocketStreamHandle* handle);
176  virtual void willStartUsingPeerConnectionHandler(
177      WebKit::WebFrame* frame,
178      WebKit::WebRTCPeerConnectionHandler* handler);
179  virtual bool willCheckAndDispatchMessageEvent(
180      WebKit::WebFrame* sourceFrame,
181      WebKit::WebFrame* targetFrame,
182      WebKit::WebSecurityOrigin targetOrigin,
183      WebKit::WebDOMMessageEvent event);
184  virtual WebKit::WebString userAgentOverride(
185      WebKit::WebFrame* frame,
186      const WebKit::WebURL& url);
187  virtual WebKit::WebString doNotTrackValue(WebKit::WebFrame* frame);
188  virtual bool allowWebGL(WebKit::WebFrame* frame, bool default_value);
189  virtual void didLoseWebGLContext(WebKit::WebFrame* frame,
190                                   int arb_robustness_status_code);
191
192  // RenderFrameImpl methods
193  int GetRoutingID() const;
194
195 protected:
196  RenderFrameImpl(RenderViewImpl* render_view, int32 routing_id);
197
198 private:
199  RenderViewImpl* render_view_;
200  int routing_id_;
201
202  DISALLOW_COPY_AND_ASSIGN(RenderFrameImpl);
203};
204
205}  // namespace content
206
207#endif  // CONTENT_RENDERER_RENDER_FRAME_IMPL_H_
208