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