OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/render_frame_impl.h" | 5 #include "content/renderer/render_frame_impl.h" |
6 | 6 |
7 #include "content/renderer/render_thread_impl.h" | |
8 #include "content/renderer/render_view_impl.h" | 7 #include "content/renderer/render_view_impl.h" |
| 8 #include "content/renderer/renderer_webapplicationcachehost_impl.h" |
9 | 9 |
10 namespace content { | 10 namespace content { |
11 | 11 |
| 12 static RenderFrameImpl* (*g_create_render_frame_impl)(RenderViewImpl*, int32) = |
| 13 NULL; |
| 14 |
| 15 // static |
| 16 RenderFrameImpl* RenderFrameImpl::Create( |
| 17 RenderViewImpl* render_view, |
| 18 int32 routing_id) { |
| 19 DCHECK(routing_id != MSG_ROUTING_NONE); |
| 20 |
| 21 RenderFrameImpl* render_frame = NULL; |
| 22 if (g_create_render_frame_impl) |
| 23 render_frame = g_create_render_frame_impl(render_view, routing_id); |
| 24 else |
| 25 render_frame = new RenderFrameImpl(render_view, routing_id); |
| 26 |
| 27 return render_frame; |
| 28 } |
| 29 |
| 30 // static |
| 31 void RenderFrameImpl::InstallCreateHook( |
| 32 RenderFrameImpl* (*create_render_frame_impl)(RenderViewImpl*, int32)) { |
| 33 CHECK(!g_create_render_frame_impl); |
| 34 g_create_render_frame_impl = create_render_frame_impl; |
| 35 } |
| 36 |
12 RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id) | 37 RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id) |
13 : render_view_(render_view), | 38 : render_view_(render_view), |
14 routing_id_(routing_id) { | 39 routing_id_(routing_id) { |
15 } | 40 } |
16 | 41 |
17 RenderFrameImpl::~RenderFrameImpl() { | 42 RenderFrameImpl::~RenderFrameImpl() { |
18 } | 43 } |
19 | 44 |
20 bool RenderFrameImpl::Send(IPC::Message* message) { | 45 bool RenderFrameImpl::Send(IPC::Message* message) { |
21 // TODO(nasko): Move away from using the RenderView's Send method once we | 46 // TODO(nasko): Move away from using the RenderView's Send method once we |
22 // have enough infrastructure and state to make the right checks here. | 47 // have enough infrastructure and state to make the right checks here. |
23 return render_view_->Send(message); | 48 return render_view_->Send(message); |
24 } | 49 } |
25 | 50 |
26 bool RenderFrameImpl::OnMessageReceived(const IPC::Message &msg) { | 51 bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) { |
27 // Pass the message up to the RenderView, until we have enough | 52 // Pass the message up to the RenderView, until we have enough |
28 // infrastructure to start processing messages in this object. | 53 // infrastructure to start processing messages in this object. |
29 return render_view_->OnMessageReceived(msg); | 54 return render_view_->OnMessageReceived(msg); |
30 } | 55 } |
31 | 56 |
| 57 // WebKit::WebFrameClient implementation ------------------------------------- |
| 58 |
| 59 WebKit::WebPlugin* RenderFrameImpl::createPlugin( |
| 60 WebKit::WebFrame* frame, |
| 61 const WebKit::WebPluginParams& params) { |
| 62 return render_view_->createPlugin(frame, params); |
| 63 } |
| 64 |
| 65 WebKit::WebSharedWorker* RenderFrameImpl::createSharedWorker( |
| 66 WebKit::WebFrame* frame, |
| 67 const WebKit::WebURL& url, |
| 68 const WebKit::WebString& name, |
| 69 unsigned long long document_id) { |
| 70 return render_view_->createSharedWorker(frame, url, name, document_id); |
| 71 } |
| 72 |
| 73 WebKit::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
| 74 WebKit::WebFrame* frame, |
| 75 const WebKit::WebURL& url, |
| 76 WebKit::WebMediaPlayerClient* client) { |
| 77 return render_view_->createMediaPlayer(frame, url, client); |
| 78 } |
| 79 |
| 80 WebKit::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( |
| 81 WebKit::WebFrame* frame, |
| 82 WebKit::WebApplicationCacheHostClient* client) { |
| 83 return render_view_->createApplicationCacheHost(frame, client); |
| 84 } |
| 85 |
| 86 WebKit::WebCookieJar* RenderFrameImpl::cookieJar(WebKit::WebFrame* frame) { |
| 87 return render_view_->cookieJar(frame); |
| 88 } |
| 89 |
| 90 void RenderFrameImpl::didAccessInitialDocument(WebKit::WebFrame* frame) { |
| 91 render_view_->didAccessInitialDocument(frame); |
| 92 } |
| 93 |
| 94 void RenderFrameImpl::didCreateFrame(WebKit::WebFrame* parent, |
| 95 WebKit::WebFrame* child) { |
| 96 render_view_->didCreateFrame(parent, child); |
| 97 } |
| 98 |
| 99 void RenderFrameImpl::didDisownOpener(WebKit::WebFrame* frame) { |
| 100 render_view_->didDisownOpener(frame); |
| 101 } |
| 102 |
| 103 void RenderFrameImpl::frameDetached(WebKit::WebFrame* frame) { |
| 104 render_view_->frameDetached(frame); |
| 105 } |
| 106 |
| 107 void RenderFrameImpl::willClose(WebKit::WebFrame* frame) { |
| 108 render_view_->willClose(frame); |
| 109 } |
| 110 |
| 111 void RenderFrameImpl::didChangeName(WebKit::WebFrame* frame, |
| 112 const WebKit::WebString& name) { |
| 113 render_view_->didChangeName(frame, name); |
| 114 } |
| 115 |
| 116 void RenderFrameImpl::loadURLExternally(WebKit::WebFrame* frame, |
| 117 const WebKit::WebURLRequest& request, |
| 118 WebKit::WebNavigationPolicy policy) { |
| 119 render_view_->loadURLExternally(frame, request, policy); |
| 120 } |
| 121 |
| 122 void RenderFrameImpl::loadURLExternally( |
| 123 WebKit::WebFrame* frame, |
| 124 const WebKit::WebURLRequest& request, |
| 125 WebKit::WebNavigationPolicy policy, |
| 126 const WebKit::WebString& suggested_name) { |
| 127 render_view_->loadURLExternally(frame, request, policy, suggested_name); |
| 128 } |
| 129 |
| 130 WebKit::WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( |
| 131 WebKit::WebFrame* frame, |
| 132 WebKit::WebDataSource::ExtraData* extraData, |
| 133 const WebKit::WebURLRequest& request, |
| 134 WebKit::WebNavigationType type, |
| 135 WebKit::WebNavigationPolicy default_policy, |
| 136 bool is_redirect) { |
| 137 return render_view_->decidePolicyForNavigation( |
| 138 frame, extraData, request, type, default_policy, is_redirect); |
| 139 } |
| 140 |
| 141 WebKit::WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( |
| 142 WebKit::WebFrame* frame, |
| 143 const WebKit::WebURLRequest& request, |
| 144 WebKit::WebNavigationType type, |
| 145 WebKit::WebNavigationPolicy default_policy, |
| 146 bool is_redirect) { |
| 147 return render_view_->decidePolicyForNavigation( |
| 148 frame, request, type, default_policy, is_redirect); |
| 149 } |
| 150 |
| 151 WebKit::WebURLError RenderFrameImpl::cannotHandleRequestError( |
| 152 WebKit::WebFrame* frame, |
| 153 const WebKit::WebURLRequest& request) { |
| 154 return render_view_->cannotHandleRequestError(frame, request); |
| 155 } |
| 156 |
| 157 WebKit::WebURLError RenderFrameImpl::cancelledError( |
| 158 WebKit::WebFrame* frame, |
| 159 const WebKit::WebURLRequest& request) { |
| 160 return render_view_->cancelledError(frame, request); |
| 161 } |
| 162 |
| 163 void RenderFrameImpl::unableToImplementPolicyWithError( |
| 164 WebKit::WebFrame* frame, |
| 165 const WebKit::WebURLError& error) { |
| 166 render_view_->unableToImplementPolicyWithError(frame, error); |
| 167 } |
| 168 |
| 169 void RenderFrameImpl::willSendSubmitEvent(WebKit::WebFrame* frame, |
| 170 const WebKit::WebFormElement& form) { |
| 171 render_view_->willSendSubmitEvent(frame, form); |
| 172 } |
| 173 |
| 174 void RenderFrameImpl::willSubmitForm(WebKit::WebFrame* frame, |
| 175 const WebKit::WebFormElement& form) { |
| 176 render_view_->willSubmitForm(frame, form); |
| 177 } |
| 178 |
| 179 void RenderFrameImpl::willPerformClientRedirect(WebKit::WebFrame* frame, |
| 180 const WebKit::WebURL& from, |
| 181 const WebKit::WebURL& to, |
| 182 double interval, |
| 183 double fire_time) { |
| 184 render_view_->willPerformClientRedirect(frame, from, to, interval, fire_time); |
| 185 } |
| 186 |
| 187 void RenderFrameImpl::didCancelClientRedirect(WebKit::WebFrame* frame) { |
| 188 render_view_->didCancelClientRedirect(frame); |
| 189 } |
| 190 |
| 191 void RenderFrameImpl::didCompleteClientRedirect(WebKit::WebFrame* frame, |
| 192 const WebKit::WebURL& from) { |
| 193 render_view_->didCompleteClientRedirect(frame, from); |
| 194 } |
| 195 |
| 196 void RenderFrameImpl::didCreateDataSource(WebKit::WebFrame* frame, |
| 197 WebKit::WebDataSource* datasource) { |
| 198 render_view_->didCreateDataSource(frame, datasource); |
| 199 } |
| 200 |
| 201 void RenderFrameImpl::didStartProvisionalLoad(WebKit::WebFrame* frame) { |
| 202 render_view_->didStartProvisionalLoad(frame); |
| 203 } |
| 204 |
| 205 void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad( |
| 206 WebKit::WebFrame* frame) { |
| 207 render_view_->didReceiveServerRedirectForProvisionalLoad(frame); |
| 208 } |
| 209 |
| 210 void RenderFrameImpl::didFailProvisionalLoad( |
| 211 WebKit::WebFrame* frame, |
| 212 const WebKit::WebURLError& error) { |
| 213 render_view_->didFailProvisionalLoad(frame, error); |
| 214 } |
| 215 |
| 216 void RenderFrameImpl::didReceiveDocumentData(WebKit::WebFrame* frame, |
| 217 const char* data, |
| 218 size_t length, |
| 219 bool& prevent_default) { |
| 220 render_view_->didReceiveDocumentData(frame, data, length, prevent_default); |
| 221 } |
| 222 |
| 223 void RenderFrameImpl::didCommitProvisionalLoad(WebKit::WebFrame* frame, |
| 224 bool is_new_navigation) { |
| 225 render_view_->didCommitProvisionalLoad(frame, is_new_navigation); |
| 226 } |
| 227 |
| 228 void RenderFrameImpl::didClearWindowObject(WebKit::WebFrame* frame) { |
| 229 render_view_->didClearWindowObject(frame); |
| 230 } |
| 231 |
| 232 void RenderFrameImpl::didCreateDocumentElement(WebKit::WebFrame* frame) { |
| 233 render_view_->didCreateDocumentElement(frame); |
| 234 } |
| 235 |
| 236 void RenderFrameImpl::didReceiveTitle(WebKit::WebFrame* frame, |
| 237 const WebKit::WebString& title, |
| 238 WebKit::WebTextDirection direction) { |
| 239 render_view_->didReceiveTitle(frame, title, direction); |
| 240 } |
| 241 |
| 242 void RenderFrameImpl::didChangeIcon(WebKit::WebFrame* frame, |
| 243 WebKit::WebIconURL::Type icon_type) { |
| 244 render_view_->didChangeIcon(frame, icon_type); |
| 245 } |
| 246 |
| 247 void RenderFrameImpl::didFinishDocumentLoad(WebKit::WebFrame* frame) { |
| 248 render_view_->didFinishDocumentLoad(frame); |
| 249 } |
| 250 |
| 251 void RenderFrameImpl::didHandleOnloadEvents(WebKit::WebFrame* frame) { |
| 252 render_view_->didHandleOnloadEvents(frame); |
| 253 } |
| 254 |
| 255 void RenderFrameImpl::didFailLoad(WebKit::WebFrame* frame, |
| 256 const WebKit::WebURLError& error) { |
| 257 render_view_->didFailLoad(frame, error); |
| 258 } |
| 259 |
| 260 void RenderFrameImpl::didFinishLoad(WebKit::WebFrame* frame) { |
| 261 render_view_->didFinishLoad(frame); |
| 262 } |
| 263 |
| 264 void RenderFrameImpl::didNavigateWithinPage(WebKit::WebFrame* frame, |
| 265 bool is_new_navigation) { |
| 266 render_view_->didNavigateWithinPage(frame, is_new_navigation); |
| 267 } |
| 268 |
| 269 void RenderFrameImpl::didUpdateCurrentHistoryItem(WebKit::WebFrame* frame) { |
| 270 render_view_->didUpdateCurrentHistoryItem(frame); |
| 271 } |
| 272 |
| 273 void RenderFrameImpl::willSendRequest( |
| 274 WebKit::WebFrame* frame, |
| 275 unsigned identifier, |
| 276 WebKit::WebURLRequest& request, |
| 277 const WebKit::WebURLResponse& redirect_response) { |
| 278 render_view_->willSendRequest(frame, identifier, request, redirect_response); |
| 279 } |
| 280 |
| 281 void RenderFrameImpl::didReceiveResponse( |
| 282 WebKit::WebFrame* frame, |
| 283 unsigned identifier, |
| 284 const WebKit::WebURLResponse& response) { |
| 285 render_view_->didReceiveResponse(frame, identifier, response); |
| 286 } |
| 287 |
| 288 void RenderFrameImpl::didFinishResourceLoad(WebKit::WebFrame* frame, |
| 289 unsigned identifier) { |
| 290 render_view_->didFinishResourceLoad(frame, identifier); |
| 291 } |
| 292 |
| 293 void RenderFrameImpl::didFailResourceLoad(WebKit::WebFrame* frame, |
| 294 unsigned identifier, |
| 295 const WebKit::WebURLError& error) { |
| 296 render_view_->didFailResourceLoad(frame, identifier, error); |
| 297 } |
| 298 |
| 299 void RenderFrameImpl::didLoadResourceFromMemoryCache( |
| 300 WebKit::WebFrame* frame, |
| 301 const WebKit::WebURLRequest& request, |
| 302 const WebKit::WebURLResponse& response) { |
| 303 render_view_->didLoadResourceFromMemoryCache(frame, request, response); |
| 304 } |
| 305 |
| 306 void RenderFrameImpl::didDisplayInsecureContent(WebKit::WebFrame* frame) { |
| 307 render_view_->didDisplayInsecureContent(frame); |
| 308 } |
| 309 |
| 310 void RenderFrameImpl::didRunInsecureContent( |
| 311 WebKit::WebFrame* frame, |
| 312 const WebKit::WebSecurityOrigin& origin, |
| 313 const WebKit::WebURL& target) { |
| 314 render_view_->didRunInsecureContent(frame, origin, target); |
| 315 } |
| 316 |
| 317 void RenderFrameImpl::didExhaustMemoryAvailableForScript( |
| 318 WebKit::WebFrame* frame) { |
| 319 render_view_->didExhaustMemoryAvailableForScript(frame); |
| 320 } |
| 321 |
| 322 void RenderFrameImpl::didCreateScriptContext(WebKit::WebFrame* frame, |
| 323 v8::Handle<v8::Context> context, |
| 324 int extension_group, |
| 325 int world_id) { |
| 326 render_view_->didCreateScriptContext( |
| 327 frame, context, extension_group, world_id); |
| 328 } |
| 329 |
| 330 void RenderFrameImpl::willReleaseScriptContext(WebKit::WebFrame* frame, |
| 331 v8::Handle<v8::Context> context, |
| 332 int world_id) { |
| 333 render_view_->willReleaseScriptContext(frame, context, world_id); |
| 334 } |
| 335 |
| 336 void RenderFrameImpl::didFirstVisuallyNonEmptyLayout(WebKit::WebFrame* frame) { |
| 337 render_view_->didFirstVisuallyNonEmptyLayout(frame); |
| 338 } |
| 339 |
| 340 void RenderFrameImpl::didChangeContentsSize(WebKit::WebFrame* frame, |
| 341 const WebKit::WebSize& size) { |
| 342 render_view_->didChangeContentsSize(frame, size); |
| 343 } |
| 344 |
| 345 void RenderFrameImpl::didChangeScrollOffset(WebKit::WebFrame* frame) { |
| 346 render_view_->didChangeScrollOffset(frame); |
| 347 } |
| 348 |
| 349 void RenderFrameImpl::willInsertBody(WebKit::WebFrame* frame) { |
| 350 render_view_->willInsertBody(frame); |
| 351 } |
| 352 |
| 353 void RenderFrameImpl::reportFindInPageMatchCount(int request_id, |
| 354 int count, |
| 355 bool final_update) { |
| 356 render_view_->reportFindInPageMatchCount(request_id, count, final_update); |
| 357 } |
| 358 |
| 359 void RenderFrameImpl::reportFindInPageSelection(int request_id, |
| 360 int active_match_ordinal, |
| 361 const WebKit::WebRect& sel) { |
| 362 render_view_->reportFindInPageSelection( |
| 363 request_id, active_match_ordinal, sel); |
| 364 } |
| 365 |
| 366 void RenderFrameImpl::openFileSystem( |
| 367 WebKit::WebFrame* frame, |
| 368 WebKit::WebFileSystemType type, |
| 369 long long size, |
| 370 bool create, |
| 371 WebKit::WebFileSystemCallbacks* callbacks) { |
| 372 render_view_->openFileSystem(frame, type, size, create, callbacks); |
| 373 } |
| 374 |
| 375 void RenderFrameImpl::deleteFileSystem( |
| 376 WebKit::WebFrame* frame, |
| 377 WebKit::WebFileSystemType type, |
| 378 WebKit::WebFileSystemCallbacks* callbacks) { |
| 379 render_view_->deleteFileSystem(frame, type, callbacks); |
| 380 } |
| 381 |
| 382 void RenderFrameImpl::queryStorageUsageAndQuota( |
| 383 WebKit::WebFrame* frame, |
| 384 WebKit::WebStorageQuotaType type, |
| 385 WebKit::WebStorageQuotaCallbacks* callbacks) { |
| 386 render_view_->queryStorageUsageAndQuota(frame, type, callbacks); |
| 387 } |
| 388 |
| 389 void RenderFrameImpl::requestStorageQuota( |
| 390 WebKit::WebFrame* frame, |
| 391 WebKit::WebStorageQuotaType type, |
| 392 unsigned long long requested_size, |
| 393 WebKit::WebStorageQuotaCallbacks* callbacks) { |
| 394 render_view_->requestStorageQuota(frame, type, requested_size, callbacks); |
| 395 } |
| 396 |
| 397 void RenderFrameImpl::willOpenSocketStream( |
| 398 WebKit::WebSocketStreamHandle* handle) { |
| 399 render_view_->willOpenSocketStream(handle); |
| 400 } |
| 401 |
| 402 void RenderFrameImpl::willStartUsingPeerConnectionHandler( |
| 403 WebKit::WebFrame* frame, |
| 404 WebKit::WebRTCPeerConnectionHandler* handler) { |
| 405 render_view_->willStartUsingPeerConnectionHandler(frame, handler); |
| 406 } |
| 407 |
| 408 bool RenderFrameImpl::willCheckAndDispatchMessageEvent( |
| 409 WebKit::WebFrame* sourceFrame, |
| 410 WebKit::WebFrame* targetFrame, |
| 411 WebKit::WebSecurityOrigin targetOrigin, |
| 412 WebKit::WebDOMMessageEvent event) { |
| 413 return render_view_->willCheckAndDispatchMessageEvent( |
| 414 sourceFrame, targetFrame, targetOrigin, event); |
| 415 } |
| 416 |
| 417 WebKit::WebString RenderFrameImpl::userAgentOverride( |
| 418 WebKit::WebFrame* frame, |
| 419 const WebKit::WebURL& url) { |
| 420 return render_view_->userAgentOverride(frame, url); |
| 421 } |
| 422 |
| 423 WebKit::WebString RenderFrameImpl::doNotTrackValue(WebKit::WebFrame* frame) { |
| 424 return render_view_->doNotTrackValue(frame); |
| 425 } |
| 426 |
| 427 bool RenderFrameImpl::allowWebGL(WebKit::WebFrame* frame, bool default_value) { |
| 428 return render_view_->allowWebGL(frame, default_value); |
| 429 } |
| 430 |
| 431 void RenderFrameImpl::didLoseWebGLContext(WebKit::WebFrame* frame, |
| 432 int arb_robustness_status_code) { |
| 433 render_view_->didLoseWebGLContext(frame, arb_robustness_status_code); |
| 434 } |
| 435 |
32 } // namespace content | 436 } // namespace content |
OLD | NEW |