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 <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 #endif | 101 #endif |
102 | 102 |
103 using blink::WebContextMenuData; | 103 using blink::WebContextMenuData; |
104 using blink::WebData; | 104 using blink::WebData; |
105 using blink::WebDataSource; | 105 using blink::WebDataSource; |
106 using blink::WebDocument; | 106 using blink::WebDocument; |
107 using blink::WebElement; | 107 using blink::WebElement; |
108 using blink::WebFrame; | 108 using blink::WebFrame; |
109 using blink::WebHistoryItem; | 109 using blink::WebHistoryItem; |
110 using blink::WebHTTPBody; | 110 using blink::WebHTTPBody; |
| 111 using blink::WebLocalFrame; |
111 using blink::WebNavigationPolicy; | 112 using blink::WebNavigationPolicy; |
112 using blink::WebNavigationType; | 113 using blink::WebNavigationType; |
113 using blink::WebNode; | 114 using blink::WebNode; |
114 using blink::WebPluginParams; | 115 using blink::WebPluginParams; |
115 using blink::WebRange; | 116 using blink::WebRange; |
116 using blink::WebReferrerPolicy; | 117 using blink::WebReferrerPolicy; |
117 using blink::WebScriptSource; | 118 using blink::WebScriptSource; |
118 using blink::WebSearchableFormData; | 119 using blink::WebSearchableFormData; |
119 using blink::WebSecurityOrigin; | 120 using blink::WebSecurityOrigin; |
120 using blink::WebSecurityPolicy; | 121 using blink::WebSecurityPolicy; |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 new JavaBridgeDispatcher(this); | 323 new JavaBridgeDispatcher(this); |
323 #endif | 324 #endif |
324 } | 325 } |
325 | 326 |
326 RenderFrameImpl::~RenderFrameImpl() { | 327 RenderFrameImpl::~RenderFrameImpl() { |
327 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone()); | 328 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone()); |
328 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct()); | 329 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct()); |
329 RenderThread::Get()->RemoveRoute(routing_id_); | 330 RenderThread::Get()->RemoveRoute(routing_id_); |
330 } | 331 } |
331 | 332 |
332 void RenderFrameImpl::SetWebFrame(blink::WebFrame* web_frame) { | 333 void RenderFrameImpl::SetWebFrame(blink::WebLocalFrame* web_frame) { |
333 DCHECK(!frame_); | 334 DCHECK(!frame_); |
334 | 335 |
335 std::pair<FrameMap::iterator, bool> result = g_frame_map.Get().insert( | 336 std::pair<FrameMap::iterator, bool> result = g_frame_map.Get().insert( |
336 std::make_pair(web_frame, this)); | 337 std::make_pair(web_frame, this)); |
337 CHECK(result.second) << "Inserting a duplicate item."; | 338 CHECK(result.second) << "Inserting a duplicate item."; |
338 | 339 |
339 frame_ = web_frame; | 340 frame_ = web_frame; |
340 | 341 |
341 #if defined(ENABLE_PLUGINS) | 342 #if defined(ENABLE_PLUGINS) |
342 new PepperBrowserConnection(this); | 343 new PepperBrowserConnection(this); |
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 return NULL; | 1133 return NULL; |
1133 #else | 1134 #else |
1134 // TODO(jam): change to take RenderFrame. | 1135 // TODO(jam): change to take RenderFrame. |
1135 return new WebPluginImpl(frame, params, info.path, render_view_, this); | 1136 return new WebPluginImpl(frame, params, info.path, render_view_, this); |
1136 #endif | 1137 #endif |
1137 #else | 1138 #else |
1138 return NULL; | 1139 return NULL; |
1139 #endif | 1140 #endif |
1140 } | 1141 } |
1141 | 1142 |
1142 void RenderFrameImpl::LoadURLExternally( | 1143 void RenderFrameImpl::LoadURLExternally(blink::WebLocalFrame* frame, |
1143 blink::WebFrame* frame, | 1144 const blink::WebURLRequest& request, |
1144 const blink::WebURLRequest& request, | 1145 blink::WebNavigationPolicy policy) { |
1145 blink::WebNavigationPolicy policy) { | |
1146 DCHECK(!frame_ || frame_ == frame); | 1146 DCHECK(!frame_ || frame_ == frame); |
1147 loadURLExternally(frame, request, policy); | 1147 loadURLExternally(frame, request, policy); |
1148 } | 1148 } |
1149 | 1149 |
1150 void RenderFrameImpl::ExecuteJavaScript(const base::string16& javascript) { | 1150 void RenderFrameImpl::ExecuteJavaScript(const base::string16& javascript) { |
1151 OnJavaScriptExecuteRequest(javascript, 0, false); | 1151 OnJavaScriptExecuteRequest(javascript, 0, false); |
1152 } | 1152 } |
1153 | 1153 |
1154 void RenderFrameImpl::OnChildFrameProcessGone() { | 1154 void RenderFrameImpl::OnChildFrameProcessGone() { |
1155 if (compositing_helper_) | 1155 if (compositing_helper_) |
1156 compositing_helper_->ChildFrameGone(); | 1156 compositing_helper_->ChildFrameGone(); |
1157 } | 1157 } |
1158 | 1158 |
1159 // blink::WebFrameClient implementation ---------------------------------------- | 1159 // blink::WebFrameClient implementation ---------------------------------------- |
1160 | 1160 |
1161 blink::WebPlugin* RenderFrameImpl::createPlugin( | 1161 blink::WebPlugin* RenderFrameImpl::createPlugin( |
1162 blink::WebFrame* frame, | 1162 blink::WebLocalFrame* frame, |
1163 const blink::WebPluginParams& params) { | 1163 const blink::WebPluginParams& params) { |
1164 DCHECK_EQ(frame_, frame); | 1164 DCHECK_EQ(frame_, frame); |
1165 blink::WebPlugin* plugin = NULL; | 1165 blink::WebPlugin* plugin = NULL; |
1166 if (GetContentClient()->renderer()->OverrideCreatePlugin( | 1166 if (GetContentClient()->renderer()->OverrideCreatePlugin( |
1167 this, frame, params, &plugin)) { | 1167 this, frame, params, &plugin)) { |
1168 return plugin; | 1168 return plugin; |
1169 } | 1169 } |
1170 | 1170 |
1171 if (base::UTF16ToASCII(params.mimeType) == kBrowserPluginMimeType) { | 1171 if (base::UTF16ToASCII(params.mimeType) == kBrowserPluginMimeType) { |
1172 return render_view_->GetBrowserPluginManager()->CreateBrowserPlugin( | 1172 return render_view_->GetBrowserPluginManager()->CreateBrowserPlugin( |
(...skipping 12 matching lines...) Expand all Loading... |
1185 | 1185 |
1186 WebPluginParams params_to_use = params; | 1186 WebPluginParams params_to_use = params; |
1187 params_to_use.mimeType = WebString::fromUTF8(mime_type); | 1187 params_to_use.mimeType = WebString::fromUTF8(mime_type); |
1188 return CreatePlugin(frame, info, params_to_use); | 1188 return CreatePlugin(frame, info, params_to_use); |
1189 #else | 1189 #else |
1190 return NULL; | 1190 return NULL; |
1191 #endif // defined(ENABLE_PLUGINS) | 1191 #endif // defined(ENABLE_PLUGINS) |
1192 } | 1192 } |
1193 | 1193 |
1194 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( | 1194 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
1195 blink::WebFrame* frame, | 1195 blink::WebLocalFrame* frame, |
1196 const blink::WebURL& url, | 1196 const blink::WebURL& url, |
1197 blink::WebMediaPlayerClient* client) { | 1197 blink::WebMediaPlayerClient* client) { |
1198 DCHECK(!frame_ || frame_ == frame); | 1198 DCHECK(!frame_ || frame_ == frame); |
1199 // TODO(nasko): Moving the implementation here involves moving a few media | 1199 // TODO(nasko): Moving the implementation here involves moving a few media |
1200 // related client objects here or referencing them in the RenderView. Needs | 1200 // related client objects here or referencing them in the RenderView. Needs |
1201 // more work to understand where the proper place for those objects is. | 1201 // more work to understand where the proper place for those objects is. |
1202 return render_view_->CreateMediaPlayer(this, frame, url, client); | 1202 return render_view_->CreateMediaPlayer(this, frame, url, client); |
1203 } | 1203 } |
1204 | 1204 |
1205 blink::WebContentDecryptionModule* | 1205 blink::WebContentDecryptionModule* |
1206 RenderFrameImpl::createContentDecryptionModule( | 1206 RenderFrameImpl::createContentDecryptionModule( |
1207 blink::WebFrame* frame, | 1207 blink::WebLocalFrame* frame, |
1208 const blink::WebSecurityOrigin& security_origin, | 1208 const blink::WebSecurityOrigin& security_origin, |
1209 const blink::WebString& key_system) { | 1209 const blink::WebString& key_system) { |
1210 DCHECK(!frame_ || frame_ == frame); | 1210 DCHECK(!frame_ || frame_ == frame); |
1211 return WebContentDecryptionModuleImpl::Create( | 1211 return WebContentDecryptionModuleImpl::Create( |
1212 frame, security_origin, key_system); | 1212 frame, security_origin, key_system); |
1213 } | 1213 } |
1214 | 1214 |
1215 blink::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( | 1215 blink::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( |
1216 blink::WebFrame* frame, | 1216 blink::WebLocalFrame* frame, |
1217 blink::WebApplicationCacheHostClient* client) { | 1217 blink::WebApplicationCacheHostClient* client) { |
1218 if (!frame || !frame->view()) | 1218 if (!frame || !frame->view()) |
1219 return NULL; | 1219 return NULL; |
1220 DCHECK(!frame_ || frame_ == frame); | 1220 DCHECK(!frame_ || frame_ == frame); |
1221 return new RendererWebApplicationCacheHostImpl( | 1221 return new RendererWebApplicationCacheHostImpl( |
1222 RenderViewImpl::FromWebView(frame->view()), client, | 1222 RenderViewImpl::FromWebView(frame->view()), client, |
1223 RenderThreadImpl::current()->appcache_dispatcher()->backend_proxy()); | 1223 RenderThreadImpl::current()->appcache_dispatcher()->backend_proxy()); |
1224 } | 1224 } |
1225 | 1225 |
1226 blink::WebWorkerPermissionClientProxy* | 1226 blink::WebWorkerPermissionClientProxy* |
1227 RenderFrameImpl::createWorkerPermissionClientProxy(blink::WebFrame* frame) { | 1227 RenderFrameImpl::createWorkerPermissionClientProxy( |
| 1228 blink::WebLocalFrame* frame) { |
1228 if (!frame || !frame->view()) | 1229 if (!frame || !frame->view()) |
1229 return NULL; | 1230 return NULL; |
1230 DCHECK(!frame_ || frame_ == frame); | 1231 DCHECK(!frame_ || frame_ == frame); |
1231 return GetContentClient()->renderer()->CreateWorkerPermissionClientProxy( | 1232 return GetContentClient()->renderer()->CreateWorkerPermissionClientProxy( |
1232 this, frame); | 1233 this, frame); |
1233 } | 1234 } |
1234 | 1235 |
1235 blink::WebCookieJar* RenderFrameImpl::cookieJar(blink::WebFrame* frame) { | 1236 blink::WebCookieJar* RenderFrameImpl::cookieJar(blink::WebLocalFrame* frame) { |
1236 DCHECK(!frame_ || frame_ == frame); | 1237 DCHECK(!frame_ || frame_ == frame); |
1237 return &cookie_jar_; | 1238 return &cookie_jar_; |
1238 } | 1239 } |
1239 | 1240 |
1240 blink::WebServiceWorkerProvider* RenderFrameImpl::createServiceWorkerProvider( | 1241 blink::WebServiceWorkerProvider* RenderFrameImpl::createServiceWorkerProvider( |
1241 blink::WebFrame* frame) { | 1242 blink::WebLocalFrame* frame) { |
1242 DCHECK(!frame_ || frame_ == frame); | 1243 DCHECK(!frame_ || frame_ == frame); |
1243 // At this point we should have non-null data source. | 1244 // At this point we should have non-null data source. |
1244 DCHECK(frame->dataSource()); | 1245 DCHECK(frame->dataSource()); |
1245 ServiceWorkerNetworkProvider* provider = | 1246 ServiceWorkerNetworkProvider* provider = |
1246 ServiceWorkerNetworkProvider::FromDocumentState( | 1247 ServiceWorkerNetworkProvider::FromDocumentState( |
1247 DocumentState::FromDataSource(frame->dataSource())); | 1248 DocumentState::FromDataSource(frame->dataSource())); |
1248 int provider_id = provider ? | 1249 int provider_id = provider ? |
1249 provider->provider_id() : | 1250 provider->provider_id() : |
1250 kInvalidServiceWorkerProviderId; | 1251 kInvalidServiceWorkerProviderId; |
1251 return new WebServiceWorkerProviderImpl( | 1252 return new WebServiceWorkerProviderImpl( |
1252 ChildThread::current()->thread_safe_sender(), provider_id); | 1253 ChildThread::current()->thread_safe_sender(), provider_id); |
1253 } | 1254 } |
1254 | 1255 |
1255 void RenderFrameImpl::didAccessInitialDocument(blink::WebFrame* frame) { | 1256 void RenderFrameImpl::didAccessInitialDocument(blink::WebLocalFrame* frame) { |
1256 DCHECK(!frame_ || frame_ == frame); | 1257 DCHECK(!frame_ || frame_ == frame); |
1257 render_view_->didAccessInitialDocument(frame); | 1258 render_view_->didAccessInitialDocument(frame); |
1258 } | 1259 } |
1259 | 1260 |
1260 blink::WebFrame* RenderFrameImpl::createChildFrame( | 1261 blink::WebFrame* RenderFrameImpl::createChildFrame( |
1261 blink::WebFrame* parent, | 1262 blink::WebLocalFrame* parent, |
1262 const blink::WebString& name) { | 1263 const blink::WebString& name) { |
1263 // Synchronously notify the browser of a child frame creation to get the | 1264 // Synchronously notify the browser of a child frame creation to get the |
1264 // routing_id for the RenderFrame. | 1265 // routing_id for the RenderFrame. |
1265 int child_routing_id = MSG_ROUTING_NONE; | 1266 int child_routing_id = MSG_ROUTING_NONE; |
1266 Send(new FrameHostMsg_CreateChildFrame(routing_id_, | 1267 Send(new FrameHostMsg_CreateChildFrame(routing_id_, |
1267 base::UTF16ToUTF8(name), | 1268 base::UTF16ToUTF8(name), |
1268 &child_routing_id)); | 1269 &child_routing_id)); |
1269 // Allocation of routing id failed, so we can't create a child frame. This can | 1270 // Allocation of routing id failed, so we can't create a child frame. This can |
1270 // happen if this RenderFrameImpl's IPCs are being filtered when in swapped | 1271 // happen if this RenderFrameImpl's IPCs are being filtered when in swapped |
1271 // out state. | 1272 // out state. |
1272 if (child_routing_id == MSG_ROUTING_NONE) { | 1273 if (child_routing_id == MSG_ROUTING_NONE) { |
1273 base::debug::Alias(parent); | 1274 base::debug::Alias(parent); |
1274 base::debug::Alias(&routing_id_); | 1275 base::debug::Alias(&routing_id_); |
1275 bool render_view_is_swapped_out = GetRenderWidget()->is_swapped_out(); | 1276 bool render_view_is_swapped_out = GetRenderWidget()->is_swapped_out(); |
1276 base::debug::Alias(&render_view_is_swapped_out); | 1277 base::debug::Alias(&render_view_is_swapped_out); |
1277 bool render_view_is_closing = GetRenderWidget()->closing(); | 1278 bool render_view_is_closing = GetRenderWidget()->closing(); |
1278 base::debug::Alias(&render_view_is_closing); | 1279 base::debug::Alias(&render_view_is_closing); |
1279 base::debug::Alias(&is_swapped_out_); | 1280 base::debug::Alias(&is_swapped_out_); |
1280 base::debug::DumpWithoutCrashing(); | 1281 base::debug::DumpWithoutCrashing(); |
1281 return NULL; | 1282 return NULL; |
1282 } | 1283 } |
1283 | 1284 |
1284 RenderFrameImpl* child_render_frame = RenderFrameImpl::Create( | 1285 RenderFrameImpl* child_render_frame = RenderFrameImpl::Create( |
1285 render_view_.get(), child_routing_id); | 1286 render_view_.get(), child_routing_id); |
1286 blink::WebFrame* web_frame = WebFrame::create(child_render_frame); | 1287 blink::WebLocalFrame* web_frame = WebLocalFrame::create(child_render_frame); |
1287 parent->appendChild(web_frame); | 1288 parent->appendChild(web_frame); |
1288 child_render_frame->SetWebFrame(web_frame); | 1289 child_render_frame->SetWebFrame(web_frame); |
1289 | 1290 |
1290 return web_frame; | 1291 return web_frame; |
1291 } | 1292 } |
1292 | 1293 |
1293 void RenderFrameImpl::didDisownOpener(blink::WebFrame* frame) { | 1294 void RenderFrameImpl::didDisownOpener(blink::WebLocalFrame* frame) { |
1294 DCHECK(!frame_ || frame_ == frame); | 1295 DCHECK(!frame_ || frame_ == frame); |
1295 render_view_->didDisownOpener(frame); | 1296 render_view_->didDisownOpener(frame); |
1296 } | 1297 } |
1297 | 1298 |
1298 void RenderFrameImpl::frameDetached(blink::WebFrame* frame) { | 1299 void RenderFrameImpl::frameDetached(blink::WebFrame* frame) { |
1299 // NOTE: This function is called on the frame that is being detached and not | 1300 // NOTE: This function is called on the frame that is being detached and not |
1300 // the parent frame. This is different from createChildFrame() which is | 1301 // the parent frame. This is different from createChildFrame() which is |
1301 // called on the parent frame. | 1302 // called on the parent frame. |
1302 CHECK(!is_detaching_); | 1303 CHECK(!is_detaching_); |
1303 DCHECK(!frame_ || frame_ == frame); | 1304 DCHECK(!frame_ || frame_ == frame); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1343 Send(new FrameHostMsg_FrameFocused(routing_id_)); | 1344 Send(new FrameHostMsg_FrameFocused(routing_id_)); |
1344 } | 1345 } |
1345 | 1346 |
1346 void RenderFrameImpl::willClose(blink::WebFrame* frame) { | 1347 void RenderFrameImpl::willClose(blink::WebFrame* frame) { |
1347 DCHECK(!frame_ || frame_ == frame); | 1348 DCHECK(!frame_ || frame_ == frame); |
1348 // Call back to RenderViewImpl for observers to be notified. | 1349 // Call back to RenderViewImpl for observers to be notified. |
1349 // TODO(nasko): Remove once we have RenderFrameObserver. | 1350 // TODO(nasko): Remove once we have RenderFrameObserver. |
1350 render_view_->willClose(frame); | 1351 render_view_->willClose(frame); |
1351 } | 1352 } |
1352 | 1353 |
1353 void RenderFrameImpl::didChangeName(blink::WebFrame* frame, | 1354 void RenderFrameImpl::didChangeName(blink::WebLocalFrame* frame, |
1354 const blink::WebString& name) { | 1355 const blink::WebString& name) { |
1355 DCHECK(!frame_ || frame_ == frame); | 1356 DCHECK(!frame_ || frame_ == frame); |
1356 if (!render_view_->renderer_preferences_.report_frame_name_changes) | 1357 if (!render_view_->renderer_preferences_.report_frame_name_changes) |
1357 return; | 1358 return; |
1358 | 1359 |
1359 render_view_->Send( | 1360 render_view_->Send( |
1360 new ViewHostMsg_UpdateFrameName(render_view_->GetRoutingID(), | 1361 new ViewHostMsg_UpdateFrameName(render_view_->GetRoutingID(), |
1361 routing_id_, | 1362 routing_id_, |
1362 !frame->parent(), | 1363 !frame->parent(), |
1363 base::UTF16ToUTF8(name))); | 1364 base::UTF16ToUTF8(name))); |
1364 } | 1365 } |
1365 | 1366 |
1366 void RenderFrameImpl::didMatchCSS( | 1367 void RenderFrameImpl::didMatchCSS( |
1367 blink::WebFrame* frame, | 1368 blink::WebLocalFrame* frame, |
1368 const blink::WebVector<blink::WebString>& newly_matching_selectors, | 1369 const blink::WebVector<blink::WebString>& newly_matching_selectors, |
1369 const blink::WebVector<blink::WebString>& stopped_matching_selectors) { | 1370 const blink::WebVector<blink::WebString>& stopped_matching_selectors) { |
1370 DCHECK(!frame_ || frame_ == frame); | 1371 DCHECK(!frame_ || frame_ == frame); |
1371 render_view_->didMatchCSS( | 1372 render_view_->didMatchCSS( |
1372 frame, newly_matching_selectors, stopped_matching_selectors); | 1373 frame, newly_matching_selectors, stopped_matching_selectors); |
1373 } | 1374 } |
1374 | 1375 |
1375 void RenderFrameImpl::loadURLExternally(blink::WebFrame* frame, | 1376 void RenderFrameImpl::loadURLExternally(blink::WebLocalFrame* frame, |
1376 const blink::WebURLRequest& request, | 1377 const blink::WebURLRequest& request, |
1377 blink::WebNavigationPolicy policy) { | 1378 blink::WebNavigationPolicy policy) { |
1378 DCHECK(!frame_ || frame_ == frame); | 1379 DCHECK(!frame_ || frame_ == frame); |
1379 loadURLExternally(frame, request, policy, WebString()); | 1380 loadURLExternally(frame, request, policy, WebString()); |
1380 } | 1381 } |
1381 | 1382 |
1382 void RenderFrameImpl::loadURLExternally( | 1383 void RenderFrameImpl::loadURLExternally( |
1383 blink::WebFrame* frame, | 1384 blink::WebLocalFrame* frame, |
1384 const blink::WebURLRequest& request, | 1385 const blink::WebURLRequest& request, |
1385 blink::WebNavigationPolicy policy, | 1386 blink::WebNavigationPolicy policy, |
1386 const blink::WebString& suggested_name) { | 1387 const blink::WebString& suggested_name) { |
1387 DCHECK(!frame_ || frame_ == frame); | 1388 DCHECK(!frame_ || frame_ == frame); |
1388 Referrer referrer(RenderViewImpl::GetReferrerFromRequest(frame, request)); | 1389 Referrer referrer(RenderViewImpl::GetReferrerFromRequest(frame, request)); |
1389 if (policy == blink::WebNavigationPolicyDownload) { | 1390 if (policy == blink::WebNavigationPolicyDownload) { |
1390 render_view_->Send(new ViewHostMsg_DownloadUrl(render_view_->GetRoutingID(), | 1391 render_view_->Send(new ViewHostMsg_DownloadUrl(render_view_->GetRoutingID(), |
1391 request.url(), referrer, | 1392 request.url(), referrer, |
1392 suggested_name)); | 1393 suggested_name)); |
1393 } else { | 1394 } else { |
1394 OpenURL(frame, request.url(), referrer, policy); | 1395 OpenURL(frame, request.url(), referrer, policy); |
1395 } | 1396 } |
1396 } | 1397 } |
1397 | 1398 |
1398 blink::WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( | 1399 blink::WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( |
1399 blink::WebFrame* frame, | 1400 blink::WebLocalFrame* frame, |
1400 blink::WebDataSource::ExtraData* extra_data, | 1401 blink::WebDataSource::ExtraData* extra_data, |
1401 const blink::WebURLRequest& request, | 1402 const blink::WebURLRequest& request, |
1402 blink::WebNavigationType type, | 1403 blink::WebNavigationType type, |
1403 blink::WebNavigationPolicy default_policy, | 1404 blink::WebNavigationPolicy default_policy, |
1404 bool is_redirect) { | 1405 bool is_redirect) { |
1405 DCHECK(!frame_ || frame_ == frame); | 1406 DCHECK(!frame_ || frame_ == frame); |
1406 return DecidePolicyForNavigation( | 1407 return DecidePolicyForNavigation( |
1407 this, frame, extra_data, request, type, default_policy, is_redirect); | 1408 this, frame, extra_data, request, type, default_policy, is_redirect); |
1408 } | 1409 } |
1409 | 1410 |
1410 void RenderFrameImpl::willSendSubmitEvent(blink::WebFrame* frame, | 1411 void RenderFrameImpl::willSendSubmitEvent(blink::WebLocalFrame* frame, |
1411 const blink::WebFormElement& form) { | 1412 const blink::WebFormElement& form) { |
1412 DCHECK(!frame_ || frame_ == frame); | 1413 DCHECK(!frame_ || frame_ == frame); |
1413 // Call back to RenderViewImpl for observers to be notified. | 1414 // Call back to RenderViewImpl for observers to be notified. |
1414 // TODO(nasko): Remove once we have RenderFrameObserver. | 1415 // TODO(nasko): Remove once we have RenderFrameObserver. |
1415 render_view_->willSendSubmitEvent(frame, form); | 1416 render_view_->willSendSubmitEvent(frame, form); |
1416 } | 1417 } |
1417 | 1418 |
1418 void RenderFrameImpl::willSubmitForm(blink::WebFrame* frame, | 1419 void RenderFrameImpl::willSubmitForm(blink::WebLocalFrame* frame, |
1419 const blink::WebFormElement& form) { | 1420 const blink::WebFormElement& form) { |
1420 DCHECK(!frame_ || frame_ == frame); | 1421 DCHECK(!frame_ || frame_ == frame); |
1421 DocumentState* document_state = | 1422 DocumentState* document_state = |
1422 DocumentState::FromDataSource(frame->provisionalDataSource()); | 1423 DocumentState::FromDataSource(frame->provisionalDataSource()); |
1423 NavigationState* navigation_state = document_state->navigation_state(); | 1424 NavigationState* navigation_state = document_state->navigation_state(); |
1424 InternalDocumentStateData* internal_data = | 1425 InternalDocumentStateData* internal_data = |
1425 InternalDocumentStateData::FromDocumentState(document_state); | 1426 InternalDocumentStateData::FromDocumentState(document_state); |
1426 | 1427 |
1427 if (PageTransitionCoreTypeIs(navigation_state->transition_type(), | 1428 if (PageTransitionCoreTypeIs(navigation_state->transition_type(), |
1428 PAGE_TRANSITION_LINK)) { | 1429 PAGE_TRANSITION_LINK)) { |
1429 navigation_state->set_transition_type(PAGE_TRANSITION_FORM_SUBMIT); | 1430 navigation_state->set_transition_type(PAGE_TRANSITION_FORM_SUBMIT); |
1430 } | 1431 } |
1431 | 1432 |
1432 // Save these to be processed when the ensuing navigation is committed. | 1433 // Save these to be processed when the ensuing navigation is committed. |
1433 WebSearchableFormData web_searchable_form_data(form); | 1434 WebSearchableFormData web_searchable_form_data(form); |
1434 internal_data->set_searchable_form_url(web_searchable_form_data.url()); | 1435 internal_data->set_searchable_form_url(web_searchable_form_data.url()); |
1435 internal_data->set_searchable_form_encoding( | 1436 internal_data->set_searchable_form_encoding( |
1436 web_searchable_form_data.encoding().utf8()); | 1437 web_searchable_form_data.encoding().utf8()); |
1437 | 1438 |
1438 // Call back to RenderViewImpl for observers to be notified. | 1439 // Call back to RenderViewImpl for observers to be notified. |
1439 // TODO(nasko): Remove once we have RenderFrameObserver. | 1440 // TODO(nasko): Remove once we have RenderFrameObserver. |
1440 render_view_->willSubmitForm(frame, form); | 1441 render_view_->willSubmitForm(frame, form); |
1441 } | 1442 } |
1442 | 1443 |
1443 void RenderFrameImpl::didCreateDataSource(blink::WebFrame* frame, | 1444 void RenderFrameImpl::didCreateDataSource(blink::WebLocalFrame* frame, |
1444 blink::WebDataSource* datasource) { | 1445 blink::WebDataSource* datasource) { |
1445 DCHECK(!frame_ || frame_ == frame); | 1446 DCHECK(!frame_ || frame_ == frame); |
1446 | 1447 |
1447 // TODO(nasko): Move implementation here. Needed state: | 1448 // TODO(nasko): Move implementation here. Needed state: |
1448 // * pending_navigation_params_ | 1449 // * pending_navigation_params_ |
1449 // * webview | 1450 // * webview |
1450 // Needed methods: | 1451 // Needed methods: |
1451 // * PopulateDocumentStateFromPending | 1452 // * PopulateDocumentStateFromPending |
1452 // * CreateNavigationStateFromPending | 1453 // * CreateNavigationStateFromPending |
1453 render_view_->didCreateDataSource(frame, datasource); | 1454 render_view_->didCreateDataSource(frame, datasource); |
1454 | 1455 |
1455 // Create the serviceworker's per-document network observing object. | 1456 // Create the serviceworker's per-document network observing object. |
1456 scoped_ptr<ServiceWorkerNetworkProvider> | 1457 scoped_ptr<ServiceWorkerNetworkProvider> |
1457 network_provider(new ServiceWorkerNetworkProvider()); | 1458 network_provider(new ServiceWorkerNetworkProvider()); |
1458 ServiceWorkerNetworkProvider::AttachToDocumentState( | 1459 ServiceWorkerNetworkProvider::AttachToDocumentState( |
1459 DocumentState::FromDataSource(datasource), | 1460 DocumentState::FromDataSource(datasource), |
1460 network_provider.Pass()); | 1461 network_provider.Pass()); |
1461 } | 1462 } |
1462 | 1463 |
1463 void RenderFrameImpl::didStartProvisionalLoad(blink::WebFrame* frame) { | 1464 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame) { |
1464 DCHECK(!frame_ || frame_ == frame); | 1465 DCHECK(!frame_ || frame_ == frame); |
1465 WebDataSource* ds = frame->provisionalDataSource(); | 1466 WebDataSource* ds = frame->provisionalDataSource(); |
1466 | 1467 |
1467 // In fast/loader/stop-provisional-loads.html, we abort the load before this | 1468 // In fast/loader/stop-provisional-loads.html, we abort the load before this |
1468 // callback is invoked. | 1469 // callback is invoked. |
1469 if (!ds) | 1470 if (!ds) |
1470 return; | 1471 return; |
1471 | 1472 |
1472 DocumentState* document_state = DocumentState::FromDataSource(ds); | 1473 DocumentState* document_state = DocumentState::FromDataSource(ds); |
1473 | 1474 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1508 RenderFrameObserver, observers_, | 1509 RenderFrameObserver, observers_, |
1509 DidStartProvisionalLoad()); | 1510 DidStartProvisionalLoad()); |
1510 | 1511 |
1511 int parent_routing_id = frame->parent() ? | 1512 int parent_routing_id = frame->parent() ? |
1512 FromWebFrame(frame->parent())->GetRoutingID() : -1; | 1513 FromWebFrame(frame->parent())->GetRoutingID() : -1; |
1513 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( | 1514 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( |
1514 routing_id_, parent_routing_id, ds->request().url())); | 1515 routing_id_, parent_routing_id, ds->request().url())); |
1515 } | 1516 } |
1516 | 1517 |
1517 void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad( | 1518 void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad( |
1518 blink::WebFrame* frame) { | 1519 blink::WebLocalFrame* frame) { |
1519 DCHECK(!frame_ || frame_ == frame); | 1520 DCHECK(!frame_ || frame_ == frame); |
1520 if (frame->parent()) | 1521 if (frame->parent()) |
1521 return; | 1522 return; |
1522 // Received a redirect on the main frame. | 1523 // Received a redirect on the main frame. |
1523 WebDataSource* data_source = frame->provisionalDataSource(); | 1524 WebDataSource* data_source = frame->provisionalDataSource(); |
1524 if (!data_source) { | 1525 if (!data_source) { |
1525 // Should only be invoked when we have a data source. | 1526 // Should only be invoked when we have a data source. |
1526 NOTREACHED(); | 1527 NOTREACHED(); |
1527 return; | 1528 return; |
1528 } | 1529 } |
1529 std::vector<GURL> redirects; | 1530 std::vector<GURL> redirects; |
1530 GetRedirectChain(data_source, &redirects); | 1531 GetRedirectChain(data_source, &redirects); |
1531 if (redirects.size() >= 2) { | 1532 if (redirects.size() >= 2) { |
1532 Send(new FrameHostMsg_DidRedirectProvisionalLoad( | 1533 Send(new FrameHostMsg_DidRedirectProvisionalLoad( |
1533 routing_id_, | 1534 routing_id_, |
1534 render_view_->page_id_, | 1535 render_view_->page_id_, |
1535 redirects[redirects.size() - 2], | 1536 redirects[redirects.size() - 2], |
1536 redirects.back())); | 1537 redirects.back())); |
1537 } | 1538 } |
1538 } | 1539 } |
1539 | 1540 |
1540 void RenderFrameImpl::didFailProvisionalLoad( | 1541 void RenderFrameImpl::didFailProvisionalLoad(blink::WebLocalFrame* frame, |
1541 blink::WebFrame* frame, | 1542 const blink::WebURLError& error) { |
1542 const blink::WebURLError& error) { | |
1543 DCHECK(!frame_ || frame_ == frame); | 1543 DCHECK(!frame_ || frame_ == frame); |
1544 WebDataSource* ds = frame->provisionalDataSource(); | 1544 WebDataSource* ds = frame->provisionalDataSource(); |
1545 DCHECK(ds); | 1545 DCHECK(ds); |
1546 | 1546 |
1547 const WebURLRequest& failed_request = ds->request(); | 1547 const WebURLRequest& failed_request = ds->request(); |
1548 | 1548 |
1549 // Call out to RenderViewImpl, so observers are notified. | 1549 // Call out to RenderViewImpl, so observers are notified. |
1550 render_view_->didFailProvisionalLoad(frame, error); | 1550 render_view_->didFailProvisionalLoad(frame, error); |
1551 | 1551 |
1552 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, | 1552 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1631 document_state->request_time(); | 1631 document_state->request_time(); |
1632 render_view_->pending_navigation_params_->should_replace_current_entry = | 1632 render_view_->pending_navigation_params_->should_replace_current_entry = |
1633 replace; | 1633 replace; |
1634 } | 1634 } |
1635 | 1635 |
1636 // Load an error page. | 1636 // Load an error page. |
1637 render_view_->LoadNavigationErrorPage( | 1637 render_view_->LoadNavigationErrorPage( |
1638 frame, failed_request, error, replace); | 1638 frame, failed_request, error, replace); |
1639 } | 1639 } |
1640 | 1640 |
1641 void RenderFrameImpl::didCommitProvisionalLoad(blink::WebFrame* frame, | 1641 void RenderFrameImpl::didCommitProvisionalLoad(blink::WebLocalFrame* frame, |
1642 bool is_new_navigation) { | 1642 bool is_new_navigation) { |
1643 DCHECK(!frame_ || frame_ == frame); | 1643 DCHECK(!frame_ || frame_ == frame); |
1644 DocumentState* document_state = | 1644 DocumentState* document_state = |
1645 DocumentState::FromDataSource(frame->dataSource()); | 1645 DocumentState::FromDataSource(frame->dataSource()); |
1646 NavigationState* navigation_state = document_state->navigation_state(); | 1646 NavigationState* navigation_state = document_state->navigation_state(); |
1647 InternalDocumentStateData* internal_data = | 1647 InternalDocumentStateData* internal_data = |
1648 InternalDocumentStateData::FromDocumentState(document_state); | 1648 InternalDocumentStateData::FromDocumentState(document_state); |
1649 | 1649 |
1650 if (document_state->commit_load_time().is_null()) | 1650 if (document_state->commit_load_time().is_null()) |
1651 document_state->set_commit_load_time(Time::Now()); | 1651 document_state->set_commit_load_time(Time::Now()); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1724 // navigation without valid HistoryItem state, WebCore will think it is a | 1724 // navigation without valid HistoryItem state, WebCore will think it is a |
1725 // new navigation. | 1725 // new navigation. |
1726 navigation_state->set_request_committed(true); | 1726 navigation_state->set_request_committed(true); |
1727 | 1727 |
1728 UpdateURL(frame); | 1728 UpdateURL(frame); |
1729 | 1729 |
1730 // Check whether we have new encoding name. | 1730 // Check whether we have new encoding name. |
1731 render_view_->UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); | 1731 render_view_->UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); |
1732 } | 1732 } |
1733 | 1733 |
1734 void RenderFrameImpl::didClearWindowObject(blink::WebFrame* frame, | 1734 void RenderFrameImpl::didClearWindowObject(blink::WebLocalFrame* frame, |
1735 int world_id) { | 1735 int world_id) { |
1736 DCHECK(!frame_ || frame_ == frame); | 1736 DCHECK(!frame_ || frame_ == frame); |
1737 // TODO(nasko): Move implementation here. Needed state: | 1737 // TODO(nasko): Move implementation here. Needed state: |
1738 // * enabled_bindings_ | 1738 // * enabled_bindings_ |
1739 // * dom_automation_controller_ | 1739 // * dom_automation_controller_ |
1740 // * stats_collection_controller_ | 1740 // * stats_collection_controller_ |
1741 | 1741 |
1742 render_view_->didClearWindowObject(frame, world_id); | 1742 render_view_->didClearWindowObject(frame, world_id); |
1743 | 1743 |
1744 // Only install controllers into the main world. | 1744 // Only install controllers into the main world. |
1745 if (world_id) | 1745 if (world_id) |
1746 return; | 1746 return; |
1747 | 1747 |
1748 if (render_view_->GetEnabledBindings() & BINDINGS_POLICY_DOM_AUTOMATION) | 1748 if (render_view_->GetEnabledBindings() & BINDINGS_POLICY_DOM_AUTOMATION) |
1749 DomAutomationController::Install(this, frame); | 1749 DomAutomationController::Install(this, frame); |
1750 | 1750 |
1751 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, | 1751 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, |
1752 DidClearWindowObject(world_id)); | 1752 DidClearWindowObject(world_id)); |
1753 } | 1753 } |
1754 | 1754 |
1755 void RenderFrameImpl::didCreateDocumentElement(blink::WebFrame* frame) { | 1755 void RenderFrameImpl::didCreateDocumentElement(blink::WebLocalFrame* frame) { |
1756 DCHECK(!frame_ || frame_ == frame); | 1756 DCHECK(!frame_ || frame_ == frame); |
1757 | 1757 |
1758 // Notify the browser about non-blank documents loading in the top frame. | 1758 // Notify the browser about non-blank documents loading in the top frame. |
1759 GURL url = frame->document().url(); | 1759 GURL url = frame->document().url(); |
1760 if (url.is_valid() && url.spec() != kAboutBlankURL) { | 1760 if (url.is_valid() && url.spec() != kAboutBlankURL) { |
1761 // TODO(nasko): Check if webview()->mainFrame() is the same as the | 1761 // TODO(nasko): Check if webview()->mainFrame() is the same as the |
1762 // frame->tree()->top(). | 1762 // frame->tree()->top(). |
1763 if (frame == render_view_->webview()->mainFrame()) { | 1763 if (frame == render_view_->webview()->mainFrame()) { |
1764 render_view_->Send(new ViewHostMsg_DocumentAvailableInMainFrame( | 1764 render_view_->Send(new ViewHostMsg_DocumentAvailableInMainFrame( |
1765 render_view_->GetRoutingID())); | 1765 render_view_->GetRoutingID())); |
1766 } | 1766 } |
1767 } | 1767 } |
1768 | 1768 |
1769 // Call back to RenderViewImpl for observers to be notified. | 1769 // Call back to RenderViewImpl for observers to be notified. |
1770 // TODO(nasko): Remove once we have RenderFrameObserver. | 1770 // TODO(nasko): Remove once we have RenderFrameObserver. |
1771 render_view_->didCreateDocumentElement(frame); | 1771 render_view_->didCreateDocumentElement(frame); |
1772 } | 1772 } |
1773 | 1773 |
1774 void RenderFrameImpl::didReceiveTitle(blink::WebFrame* frame, | 1774 void RenderFrameImpl::didReceiveTitle(blink::WebLocalFrame* frame, |
1775 const blink::WebString& title, | 1775 const blink::WebString& title, |
1776 blink::WebTextDirection direction) { | 1776 blink::WebTextDirection direction) { |
1777 DCHECK(!frame_ || frame_ == frame); | 1777 DCHECK(!frame_ || frame_ == frame); |
1778 // TODO(nasko): Investigate wheather implementation should move here. | 1778 // TODO(nasko): Investigate wheather implementation should move here. |
1779 render_view_->didReceiveTitle(frame, title, direction); | 1779 render_view_->didReceiveTitle(frame, title, direction); |
1780 } | 1780 } |
1781 | 1781 |
1782 void RenderFrameImpl::didChangeIcon(blink::WebFrame* frame, | 1782 void RenderFrameImpl::didChangeIcon(blink::WebLocalFrame* frame, |
1783 blink::WebIconURL::Type icon_type) { | 1783 blink::WebIconURL::Type icon_type) { |
1784 DCHECK(!frame_ || frame_ == frame); | 1784 DCHECK(!frame_ || frame_ == frame); |
1785 // TODO(nasko): Investigate wheather implementation should move here. | 1785 // TODO(nasko): Investigate wheather implementation should move here. |
1786 render_view_->didChangeIcon(frame, icon_type); | 1786 render_view_->didChangeIcon(frame, icon_type); |
1787 } | 1787 } |
1788 | 1788 |
1789 void RenderFrameImpl::didFinishDocumentLoad(blink::WebFrame* frame) { | 1789 void RenderFrameImpl::didFinishDocumentLoad(blink::WebLocalFrame* frame) { |
1790 DCHECK(!frame_ || frame_ == frame); | 1790 DCHECK(!frame_ || frame_ == frame); |
1791 WebDataSource* ds = frame->dataSource(); | 1791 WebDataSource* ds = frame->dataSource(); |
1792 DocumentState* document_state = DocumentState::FromDataSource(ds); | 1792 DocumentState* document_state = DocumentState::FromDataSource(ds); |
1793 document_state->set_finish_document_load_time(Time::Now()); | 1793 document_state->set_finish_document_load_time(Time::Now()); |
1794 | 1794 |
1795 Send(new FrameHostMsg_DidFinishDocumentLoad(routing_id_)); | 1795 Send(new FrameHostMsg_DidFinishDocumentLoad(routing_id_)); |
1796 | 1796 |
1797 // Call back to RenderViewImpl for observers to be notified. | 1797 // Call back to RenderViewImpl for observers to be notified. |
1798 // TODO(nasko): Remove once we have RenderFrameObserver for this method. | 1798 // TODO(nasko): Remove once we have RenderFrameObserver for this method. |
1799 render_view_->didFinishDocumentLoad(frame); | 1799 render_view_->didFinishDocumentLoad(frame); |
1800 | 1800 |
1801 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidFinishDocumentLoad()); | 1801 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidFinishDocumentLoad()); |
1802 | 1802 |
1803 // Check whether we have new encoding name. | 1803 // Check whether we have new encoding name. |
1804 render_view_->UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); | 1804 render_view_->UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); |
1805 } | 1805 } |
1806 | 1806 |
1807 void RenderFrameImpl::didHandleOnloadEvents(blink::WebFrame* frame) { | 1807 void RenderFrameImpl::didHandleOnloadEvents(blink::WebLocalFrame* frame) { |
1808 DCHECK(!frame_ || frame_ == frame); | 1808 DCHECK(!frame_ || frame_ == frame); |
1809 // TODO(nasko): Move implementation here. Needed state: | 1809 // TODO(nasko): Move implementation here. Needed state: |
1810 // * page_id_ | 1810 // * page_id_ |
1811 render_view_->didHandleOnloadEvents(frame); | 1811 render_view_->didHandleOnloadEvents(frame); |
1812 } | 1812 } |
1813 | 1813 |
1814 void RenderFrameImpl::didFailLoad(blink::WebFrame* frame, | 1814 void RenderFrameImpl::didFailLoad(blink::WebLocalFrame* frame, |
1815 const blink::WebURLError& error) { | 1815 const blink::WebURLError& error) { |
1816 DCHECK(!frame_ || frame_ == frame); | 1816 DCHECK(!frame_ || frame_ == frame); |
1817 // TODO(nasko): Move implementation here. No state needed. | 1817 // TODO(nasko): Move implementation here. No state needed. |
1818 WebDataSource* ds = frame->dataSource(); | 1818 WebDataSource* ds = frame->dataSource(); |
1819 DCHECK(ds); | 1819 DCHECK(ds); |
1820 | 1820 |
1821 render_view_->didFailLoad(frame, error); | 1821 render_view_->didFailLoad(frame, error); |
1822 | 1822 |
1823 const WebURLRequest& failed_request = ds->request(); | 1823 const WebURLRequest& failed_request = ds->request(); |
1824 base::string16 error_description; | 1824 base::string16 error_description; |
1825 GetContentClient()->renderer()->GetNavigationErrorStrings( | 1825 GetContentClient()->renderer()->GetNavigationErrorStrings( |
1826 render_view_.get(), | 1826 render_view_.get(), |
1827 frame, | 1827 frame, |
1828 failed_request, | 1828 failed_request, |
1829 error, | 1829 error, |
1830 NULL, | 1830 NULL, |
1831 &error_description); | 1831 &error_description); |
1832 Send(new FrameHostMsg_DidFailLoadWithError(routing_id_, | 1832 Send(new FrameHostMsg_DidFailLoadWithError(routing_id_, |
1833 failed_request.url(), | 1833 failed_request.url(), |
1834 error.reason, | 1834 error.reason, |
1835 error_description)); | 1835 error_description)); |
1836 } | 1836 } |
1837 | 1837 |
1838 void RenderFrameImpl::didFinishLoad(blink::WebFrame* frame) { | 1838 void RenderFrameImpl::didFinishLoad(blink::WebLocalFrame* frame) { |
1839 DCHECK(!frame_ || frame_ == frame); | 1839 DCHECK(!frame_ || frame_ == frame); |
1840 WebDataSource* ds = frame->dataSource(); | 1840 WebDataSource* ds = frame->dataSource(); |
1841 DocumentState* document_state = DocumentState::FromDataSource(ds); | 1841 DocumentState* document_state = DocumentState::FromDataSource(ds); |
1842 if (document_state->finish_load_time().is_null()) { | 1842 if (document_state->finish_load_time().is_null()) { |
1843 if (!frame->parent()) { | 1843 if (!frame->parent()) { |
1844 TRACE_EVENT_INSTANT0("WebCore", "LoadFinished", | 1844 TRACE_EVENT_INSTANT0("WebCore", "LoadFinished", |
1845 TRACE_EVENT_SCOPE_PROCESS); | 1845 TRACE_EVENT_SCOPE_PROCESS); |
1846 } | 1846 } |
1847 document_state->set_finish_load_time(Time::Now()); | 1847 document_state->set_finish_load_time(Time::Now()); |
1848 } | 1848 } |
1849 | 1849 |
1850 render_view_->didFinishLoad(frame); | 1850 render_view_->didFinishLoad(frame); |
1851 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidFinishLoad()); | 1851 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidFinishLoad()); |
1852 | 1852 |
1853 // Don't send this message while the frame is swapped out. | 1853 // Don't send this message while the frame is swapped out. |
1854 if (is_swapped_out()) | 1854 if (is_swapped_out()) |
1855 return; | 1855 return; |
1856 | 1856 |
1857 Send(new FrameHostMsg_DidFinishLoad(routing_id_, | 1857 Send(new FrameHostMsg_DidFinishLoad(routing_id_, |
1858 ds->request().url())); | 1858 ds->request().url())); |
1859 } | 1859 } |
1860 | 1860 |
1861 void RenderFrameImpl::didNavigateWithinPage(blink::WebFrame* frame, | 1861 void RenderFrameImpl::didNavigateWithinPage(blink::WebLocalFrame* frame, |
1862 bool is_new_navigation) { | 1862 bool is_new_navigation) { |
1863 DCHECK(!frame_ || frame_ == frame); | 1863 DCHECK(!frame_ || frame_ == frame); |
1864 // If this was a reference fragment navigation that we initiated, then we | 1864 // If this was a reference fragment navigation that we initiated, then we |
1865 // could end up having a non-null pending navigation params. We just need to | 1865 // could end up having a non-null pending navigation params. We just need to |
1866 // update the ExtraData on the datasource so that others who read the | 1866 // update the ExtraData on the datasource so that others who read the |
1867 // ExtraData will get the new NavigationState. Similarly, if we did not | 1867 // ExtraData will get the new NavigationState. Similarly, if we did not |
1868 // initiate this navigation, then we need to take care to reset any pre- | 1868 // initiate this navigation, then we need to take care to reset any pre- |
1869 // existing navigation state to a content-initiated navigation state. | 1869 // existing navigation state to a content-initiated navigation state. |
1870 // DidCreateDataSource conveniently takes care of this for us. | 1870 // DidCreateDataSource conveniently takes care of this for us. |
1871 didCreateDataSource(frame, frame->dataSource()); | 1871 didCreateDataSource(frame, frame->dataSource()); |
1872 | 1872 |
1873 DocumentState* document_state = | 1873 DocumentState* document_state = |
1874 DocumentState::FromDataSource(frame->dataSource()); | 1874 DocumentState::FromDataSource(frame->dataSource()); |
1875 NavigationState* new_state = document_state->navigation_state(); | 1875 NavigationState* new_state = document_state->navigation_state(); |
1876 new_state->set_was_within_same_page(true); | 1876 new_state->set_was_within_same_page(true); |
1877 | 1877 |
1878 didCommitProvisionalLoad(frame, is_new_navigation); | 1878 didCommitProvisionalLoad(frame, is_new_navigation); |
1879 } | 1879 } |
1880 | 1880 |
1881 void RenderFrameImpl::didUpdateCurrentHistoryItem(blink::WebFrame* frame) { | 1881 void RenderFrameImpl::didUpdateCurrentHistoryItem(blink::WebLocalFrame* frame) { |
1882 DCHECK(!frame_ || frame_ == frame); | 1882 DCHECK(!frame_ || frame_ == frame); |
1883 // TODO(nasko): Move implementation here. Needed methods: | 1883 // TODO(nasko): Move implementation here. Needed methods: |
1884 // * StartNavStateSyncTimerIfNecessary | 1884 // * StartNavStateSyncTimerIfNecessary |
1885 render_view_->didUpdateCurrentHistoryItem(frame); | 1885 render_view_->didUpdateCurrentHistoryItem(frame); |
1886 } | 1886 } |
1887 | 1887 |
1888 void RenderFrameImpl::didChangeSelection(bool is_empty_selection) { | 1888 void RenderFrameImpl::didChangeSelection(bool is_empty_selection) { |
1889 if (!GetRenderWidget()->handling_input_event() && !handling_select_range_) | 1889 if (!GetRenderWidget()->handling_input_event() && !handling_select_range_) |
1890 return; | 1890 return; |
1891 | 1891 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1948 #endif | 1948 #endif |
1949 | 1949 |
1950 Send(new FrameHostMsg_ContextMenu(routing_id_, params)); | 1950 Send(new FrameHostMsg_ContextMenu(routing_id_, params)); |
1951 } | 1951 } |
1952 | 1952 |
1953 void RenderFrameImpl::clearContextMenu() { | 1953 void RenderFrameImpl::clearContextMenu() { |
1954 context_menu_node_.reset(); | 1954 context_menu_node_.reset(); |
1955 } | 1955 } |
1956 | 1956 |
1957 void RenderFrameImpl::willRequestAfterPreconnect( | 1957 void RenderFrameImpl::willRequestAfterPreconnect( |
1958 blink::WebFrame* frame, | 1958 blink::WebLocalFrame* frame, |
1959 blink::WebURLRequest& request) { | 1959 blink::WebURLRequest& request) { |
1960 DCHECK(!frame_ || frame_ == frame); | 1960 DCHECK(!frame_ || frame_ == frame); |
1961 // FIXME(kohei): This will never be set. | 1961 // FIXME(kohei): This will never be set. |
1962 WebString custom_user_agent; | 1962 WebString custom_user_agent; |
1963 | 1963 |
1964 DCHECK(!request.extraData()); | 1964 DCHECK(!request.extraData()); |
1965 | 1965 |
1966 bool was_after_preconnect_request = true; | 1966 bool was_after_preconnect_request = true; |
1967 // The args after |was_after_preconnect_request| are not used, and set to | 1967 // The args after |was_after_preconnect_request| are not used, and set to |
1968 // correct values at |willSendRequest|. | 1968 // correct values at |willSendRequest|. |
1969 RequestExtraData* extra_data = new RequestExtraData(); | 1969 RequestExtraData* extra_data = new RequestExtraData(); |
1970 extra_data->set_custom_user_agent(custom_user_agent); | 1970 extra_data->set_custom_user_agent(custom_user_agent); |
1971 extra_data->set_was_after_preconnect_request(was_after_preconnect_request); | 1971 extra_data->set_was_after_preconnect_request(was_after_preconnect_request); |
1972 request.setExtraData(extra_data); | 1972 request.setExtraData(extra_data); |
1973 } | 1973 } |
1974 | 1974 |
1975 void RenderFrameImpl::willSendRequest( | 1975 void RenderFrameImpl::willSendRequest( |
1976 blink::WebFrame* frame, | 1976 blink::WebLocalFrame* frame, |
1977 unsigned identifier, | 1977 unsigned identifier, |
1978 blink::WebURLRequest& request, | 1978 blink::WebURLRequest& request, |
1979 const blink::WebURLResponse& redirect_response) { | 1979 const blink::WebURLResponse& redirect_response) { |
1980 DCHECK(!frame_ || frame_ == frame); | 1980 DCHECK(!frame_ || frame_ == frame); |
1981 // The request my be empty during tests. | 1981 // The request my be empty during tests. |
1982 if (request.url().isEmpty()) | 1982 if (request.url().isEmpty()) |
1983 return; | 1983 return; |
1984 | 1984 |
1985 WebFrame* top_frame = frame->top(); | 1985 WebFrame* top_frame = frame->top(); |
1986 if (!top_frame) | 1986 if (!top_frame) |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2124 WebString::fromUTF8(i.values())); | 2124 WebString::fromUTF8(i.values())); |
2125 } | 2125 } |
2126 } | 2126 } |
2127 } | 2127 } |
2128 | 2128 |
2129 if (!render_view_->renderer_preferences_.enable_referrers) | 2129 if (!render_view_->renderer_preferences_.enable_referrers) |
2130 request.setHTTPReferrer(WebString(), blink::WebReferrerPolicyDefault); | 2130 request.setHTTPReferrer(WebString(), blink::WebReferrerPolicyDefault); |
2131 } | 2131 } |
2132 | 2132 |
2133 void RenderFrameImpl::didReceiveResponse( | 2133 void RenderFrameImpl::didReceiveResponse( |
2134 blink::WebFrame* frame, | 2134 blink::WebLocalFrame* frame, |
2135 unsigned identifier, | 2135 unsigned identifier, |
2136 const blink::WebURLResponse& response) { | 2136 const blink::WebURLResponse& response) { |
2137 DCHECK(!frame_ || frame_ == frame); | 2137 DCHECK(!frame_ || frame_ == frame); |
2138 // Only do this for responses that correspond to a provisional data source | 2138 // Only do this for responses that correspond to a provisional data source |
2139 // of the top-most frame. If we have a provisional data source, then we | 2139 // of the top-most frame. If we have a provisional data source, then we |
2140 // can't have any sub-resources yet, so we know that this response must | 2140 // can't have any sub-resources yet, so we know that this response must |
2141 // correspond to a frame load. | 2141 // correspond to a frame load. |
2142 if (!frame->provisionalDataSource() || frame->parent()) | 2142 if (!frame->provisionalDataSource() || frame->parent()) |
2143 return; | 2143 return; |
2144 | 2144 |
(...skipping 25 matching lines...) Expand all Loading... |
2170 } | 2170 } |
2171 InternalDocumentStateData* internal_data = | 2171 InternalDocumentStateData* internal_data = |
2172 InternalDocumentStateData::FromDocumentState(document_state); | 2172 InternalDocumentStateData::FromDocumentState(document_state); |
2173 internal_data->set_http_status_code(http_status_code); | 2173 internal_data->set_http_status_code(http_status_code); |
2174 // Whether or not the http status code actually corresponds to an error is | 2174 // Whether or not the http status code actually corresponds to an error is |
2175 // only checked when the page is done loading, if |use_error_page| is | 2175 // only checked when the page is done loading, if |use_error_page| is |
2176 // still true. | 2176 // still true. |
2177 internal_data->set_use_error_page(true); | 2177 internal_data->set_use_error_page(true); |
2178 } | 2178 } |
2179 | 2179 |
2180 void RenderFrameImpl::didFinishResourceLoad(blink::WebFrame* frame, | 2180 void RenderFrameImpl::didFinishResourceLoad(blink::WebLocalFrame* frame, |
2181 unsigned identifier) { | 2181 unsigned identifier) { |
2182 DCHECK(!frame_ || frame_ == frame); | 2182 DCHECK(!frame_ || frame_ == frame); |
2183 // TODO(nasko): Move implementation here. Needed state: | 2183 // TODO(nasko): Move implementation here. Needed state: |
2184 // * devtools_agent_ | 2184 // * devtools_agent_ |
2185 // Needed methods: | 2185 // Needed methods: |
2186 // * LoadNavigationErrorPage | 2186 // * LoadNavigationErrorPage |
2187 render_view_->didFinishResourceLoad(frame, identifier); | 2187 render_view_->didFinishResourceLoad(frame, identifier); |
2188 } | 2188 } |
2189 | 2189 |
2190 void RenderFrameImpl::didLoadResourceFromMemoryCache( | 2190 void RenderFrameImpl::didLoadResourceFromMemoryCache( |
2191 blink::WebFrame* frame, | 2191 blink::WebLocalFrame* frame, |
2192 const blink::WebURLRequest& request, | 2192 const blink::WebURLRequest& request, |
2193 const blink::WebURLResponse& response) { | 2193 const blink::WebURLResponse& response) { |
2194 DCHECK(!frame_ || frame_ == frame); | 2194 DCHECK(!frame_ || frame_ == frame); |
2195 // The recipients of this message have no use for data: URLs: they don't | 2195 // The recipients of this message have no use for data: URLs: they don't |
2196 // affect the page's insecure content list and are not in the disk cache. To | 2196 // affect the page's insecure content list and are not in the disk cache. To |
2197 // prevent large (1M+) data: URLs from crashing in the IPC system, we simply | 2197 // prevent large (1M+) data: URLs from crashing in the IPC system, we simply |
2198 // filter them out here. | 2198 // filter them out here. |
2199 GURL url(request.url()); | 2199 GURL url(request.url()); |
2200 if (url.SchemeIs("data")) | 2200 if (url.SchemeIs("data")) |
2201 return; | 2201 return; |
2202 | 2202 |
2203 // Let the browser know we loaded a resource from the memory cache. This | 2203 // Let the browser know we loaded a resource from the memory cache. This |
2204 // message is needed to display the correct SSL indicators. | 2204 // message is needed to display the correct SSL indicators. |
2205 render_view_->Send(new ViewHostMsg_DidLoadResourceFromMemoryCache( | 2205 render_view_->Send(new ViewHostMsg_DidLoadResourceFromMemoryCache( |
2206 render_view_->GetRoutingID(), | 2206 render_view_->GetRoutingID(), |
2207 url, | 2207 url, |
2208 response.securityInfo(), | 2208 response.securityInfo(), |
2209 request.httpMethod().utf8(), | 2209 request.httpMethod().utf8(), |
2210 response.mimeType().utf8(), | 2210 response.mimeType().utf8(), |
2211 ResourceType::FromTargetType(request.targetType()))); | 2211 ResourceType::FromTargetType(request.targetType()))); |
2212 } | 2212 } |
2213 | 2213 |
2214 void RenderFrameImpl::didDisplayInsecureContent(blink::WebFrame* frame) { | 2214 void RenderFrameImpl::didDisplayInsecureContent(blink::WebLocalFrame* frame) { |
2215 DCHECK(!frame_ || frame_ == frame); | 2215 DCHECK(!frame_ || frame_ == frame); |
2216 render_view_->Send(new ViewHostMsg_DidDisplayInsecureContent( | 2216 render_view_->Send(new ViewHostMsg_DidDisplayInsecureContent( |
2217 render_view_->GetRoutingID())); | 2217 render_view_->GetRoutingID())); |
2218 } | 2218 } |
2219 | 2219 |
2220 void RenderFrameImpl::didRunInsecureContent( | 2220 void RenderFrameImpl::didRunInsecureContent( |
2221 blink::WebFrame* frame, | 2221 blink::WebLocalFrame* frame, |
2222 const blink::WebSecurityOrigin& origin, | 2222 const blink::WebSecurityOrigin& origin, |
2223 const blink::WebURL& target) { | 2223 const blink::WebURL& target) { |
2224 DCHECK(!frame_ || frame_ == frame); | 2224 DCHECK(!frame_ || frame_ == frame); |
2225 render_view_->Send(new ViewHostMsg_DidRunInsecureContent( | 2225 render_view_->Send(new ViewHostMsg_DidRunInsecureContent( |
2226 render_view_->GetRoutingID(), | 2226 render_view_->GetRoutingID(), |
2227 origin.toString().utf8(), | 2227 origin.toString().utf8(), |
2228 target)); | 2228 target)); |
2229 } | 2229 } |
2230 | 2230 |
2231 void RenderFrameImpl::didAbortLoading(blink::WebFrame* frame) { | 2231 void RenderFrameImpl::didAbortLoading(blink::WebLocalFrame* frame) { |
2232 DCHECK(!frame_ || frame_ == frame); | 2232 DCHECK(!frame_ || frame_ == frame); |
2233 #if defined(ENABLE_PLUGINS) | 2233 #if defined(ENABLE_PLUGINS) |
2234 if (frame != render_view_->webview()->mainFrame()) | 2234 if (frame != render_view_->webview()->mainFrame()) |
2235 return; | 2235 return; |
2236 PluginChannelHost::Broadcast( | 2236 PluginChannelHost::Broadcast( |
2237 new PluginHostMsg_DidAbortLoading(render_view_->GetRoutingID())); | 2237 new PluginHostMsg_DidAbortLoading(render_view_->GetRoutingID())); |
2238 #endif | 2238 #endif |
2239 } | 2239 } |
2240 | 2240 |
2241 void RenderFrameImpl::didCreateScriptContext(blink::WebFrame* frame, | 2241 void RenderFrameImpl::didCreateScriptContext(blink::WebLocalFrame* frame, |
2242 v8::Handle<v8::Context> context, | 2242 v8::Handle<v8::Context> context, |
2243 int extension_group, | 2243 int extension_group, |
2244 int world_id) { | 2244 int world_id) { |
2245 DCHECK(!frame_ || frame_ == frame); | 2245 DCHECK(!frame_ || frame_ == frame); |
2246 GetContentClient()->renderer()->DidCreateScriptContext( | 2246 GetContentClient()->renderer()->DidCreateScriptContext( |
2247 frame, context, extension_group, world_id); | 2247 frame, context, extension_group, world_id); |
2248 } | 2248 } |
2249 | 2249 |
2250 void RenderFrameImpl::willReleaseScriptContext(blink::WebFrame* frame, | 2250 void RenderFrameImpl::willReleaseScriptContext(blink::WebLocalFrame* frame, |
2251 v8::Handle<v8::Context> context, | 2251 v8::Handle<v8::Context> context, |
2252 int world_id) { | 2252 int world_id) { |
2253 DCHECK(!frame_ || frame_ == frame); | 2253 DCHECK(!frame_ || frame_ == frame); |
2254 | 2254 |
2255 FOR_EACH_OBSERVER(RenderFrameObserver, | 2255 FOR_EACH_OBSERVER(RenderFrameObserver, |
2256 observers_, | 2256 observers_, |
2257 WillReleaseScriptContext(context, world_id)); | 2257 WillReleaseScriptContext(context, world_id)); |
2258 } | 2258 } |
2259 | 2259 |
2260 void RenderFrameImpl::didFirstVisuallyNonEmptyLayout(blink::WebFrame* frame) { | 2260 void RenderFrameImpl::didFirstVisuallyNonEmptyLayout( |
| 2261 blink::WebLocalFrame* frame) { |
2261 DCHECK(!frame_ || frame_ == frame); | 2262 DCHECK(!frame_ || frame_ == frame); |
2262 render_view_->didFirstVisuallyNonEmptyLayout(frame); | 2263 render_view_->didFirstVisuallyNonEmptyLayout(frame); |
2263 } | 2264 } |
2264 | 2265 |
2265 void RenderFrameImpl::didChangeContentsSize(blink::WebFrame* frame, | 2266 void RenderFrameImpl::didChangeContentsSize(blink::WebLocalFrame* frame, |
2266 const blink::WebSize& size) { | 2267 const blink::WebSize& size) { |
2267 DCHECK(!frame_ || frame_ == frame); | 2268 DCHECK(!frame_ || frame_ == frame); |
2268 // TODO(nasko): Move implementation here. Needed state: | 2269 // TODO(nasko): Move implementation here. Needed state: |
2269 // * cached_has_main_frame_horizontal_scrollbar_ | 2270 // * cached_has_main_frame_horizontal_scrollbar_ |
2270 // * cached_has_main_frame_vertical_scrollbar_ | 2271 // * cached_has_main_frame_vertical_scrollbar_ |
2271 render_view_->didChangeContentsSize(frame, size); | 2272 render_view_->didChangeContentsSize(frame, size); |
2272 } | 2273 } |
2273 | 2274 |
2274 void RenderFrameImpl::didChangeScrollOffset(blink::WebFrame* frame) { | 2275 void RenderFrameImpl::didChangeScrollOffset(blink::WebLocalFrame* frame) { |
2275 DCHECK(!frame_ || frame_ == frame); | 2276 DCHECK(!frame_ || frame_ == frame); |
2276 // TODO(nasko): Move implementation here. Needed methods: | 2277 // TODO(nasko): Move implementation here. Needed methods: |
2277 // * StartNavStateSyncTimerIfNecessary | 2278 // * StartNavStateSyncTimerIfNecessary |
2278 render_view_->didChangeScrollOffset(frame); | 2279 render_view_->didChangeScrollOffset(frame); |
2279 } | 2280 } |
2280 | 2281 |
2281 void RenderFrameImpl::willInsertBody(blink::WebFrame* frame) { | 2282 void RenderFrameImpl::willInsertBody(blink::WebLocalFrame* frame) { |
2282 DCHECK(!frame_ || frame_ == frame); | 2283 DCHECK(!frame_ || frame_ == frame); |
2283 if (!frame->parent()) { | 2284 if (!frame->parent()) { |
2284 render_view_->Send(new ViewHostMsg_WillInsertBody( | 2285 render_view_->Send(new ViewHostMsg_WillInsertBody( |
2285 render_view_->GetRoutingID())); | 2286 render_view_->GetRoutingID())); |
2286 } | 2287 } |
2287 } | 2288 } |
2288 | 2289 |
2289 void RenderFrameImpl::reportFindInPageMatchCount(int request_id, | 2290 void RenderFrameImpl::reportFindInPageMatchCount(int request_id, |
2290 int count, | 2291 int count, |
2291 bool final_update) { | 2292 bool final_update) { |
2292 int active_match_ordinal = -1; // -1 = don't update active match ordinal | 2293 int active_match_ordinal = -1; // -1 = don't update active match ordinal |
2293 if (!count) | 2294 if (!count) |
2294 active_match_ordinal = 0; | 2295 active_match_ordinal = 0; |
2295 | 2296 |
2296 render_view_->Send(new ViewHostMsg_Find_Reply( | 2297 render_view_->Send(new ViewHostMsg_Find_Reply( |
2297 render_view_->GetRoutingID(), request_id, count, | 2298 render_view_->GetRoutingID(), request_id, count, |
2298 gfx::Rect(), active_match_ordinal, final_update)); | 2299 gfx::Rect(), active_match_ordinal, final_update)); |
2299 } | 2300 } |
2300 | 2301 |
2301 void RenderFrameImpl::reportFindInPageSelection( | 2302 void RenderFrameImpl::reportFindInPageSelection( |
2302 int request_id, | 2303 int request_id, |
2303 int active_match_ordinal, | 2304 int active_match_ordinal, |
2304 const blink::WebRect& selection_rect) { | 2305 const blink::WebRect& selection_rect) { |
2305 render_view_->Send(new ViewHostMsg_Find_Reply( | 2306 render_view_->Send(new ViewHostMsg_Find_Reply( |
2306 render_view_->GetRoutingID(), request_id, -1, selection_rect, | 2307 render_view_->GetRoutingID(), request_id, -1, selection_rect, |
2307 active_match_ordinal, false)); | 2308 active_match_ordinal, false)); |
2308 } | 2309 } |
2309 | 2310 |
2310 void RenderFrameImpl::requestStorageQuota( | 2311 void RenderFrameImpl::requestStorageQuota( |
2311 blink::WebFrame* frame, | 2312 blink::WebLocalFrame* frame, |
2312 blink::WebStorageQuotaType type, | 2313 blink::WebStorageQuotaType type, |
2313 unsigned long long requested_size, | 2314 unsigned long long requested_size, |
2314 blink::WebStorageQuotaCallbacks callbacks) { | 2315 blink::WebStorageQuotaCallbacks callbacks) { |
2315 DCHECK(!frame_ || frame_ == frame); | 2316 DCHECK(!frame_ || frame_ == frame); |
2316 WebSecurityOrigin origin = frame->document().securityOrigin(); | 2317 WebSecurityOrigin origin = frame->document().securityOrigin(); |
2317 if (origin.isUnique()) { | 2318 if (origin.isUnique()) { |
2318 // Unique origins cannot store persistent state. | 2319 // Unique origins cannot store persistent state. |
2319 callbacks.didFail(blink::WebStorageQuotaErrorAbort); | 2320 callbacks.didFail(blink::WebStorageQuotaErrorAbort); |
2320 return; | 2321 return; |
2321 } | 2322 } |
2322 ChildThread::current()->quota_dispatcher()->RequestStorageQuota( | 2323 ChildThread::current()->quota_dispatcher()->RequestStorageQuota( |
2323 render_view_->GetRoutingID(), GURL(origin.toString()), | 2324 render_view_->GetRoutingID(), GURL(origin.toString()), |
2324 static_cast<quota::StorageType>(type), requested_size, | 2325 static_cast<quota::StorageType>(type), requested_size, |
2325 QuotaDispatcher::CreateWebStorageQuotaCallbacksWrapper(callbacks)); | 2326 QuotaDispatcher::CreateWebStorageQuotaCallbacksWrapper(callbacks)); |
2326 } | 2327 } |
2327 | 2328 |
2328 void RenderFrameImpl::willOpenSocketStream( | 2329 void RenderFrameImpl::willOpenSocketStream( |
2329 blink::WebSocketStreamHandle* handle) { | 2330 blink::WebSocketStreamHandle* handle) { |
2330 WebSocketStreamHandleImpl* impl = | 2331 WebSocketStreamHandleImpl* impl = |
2331 static_cast<WebSocketStreamHandleImpl*>(handle); | 2332 static_cast<WebSocketStreamHandleImpl*>(handle); |
2332 impl->SetUserData(handle, new SocketStreamHandleData(routing_id_)); | 2333 impl->SetUserData(handle, new SocketStreamHandleData(routing_id_)); |
2333 } | 2334 } |
2334 | 2335 |
2335 void RenderFrameImpl::willStartUsingPeerConnectionHandler( | 2336 void RenderFrameImpl::willStartUsingPeerConnectionHandler( |
2336 blink::WebFrame* frame, | 2337 blink::WebLocalFrame* frame, |
2337 blink::WebRTCPeerConnectionHandler* handler) { | 2338 blink::WebRTCPeerConnectionHandler* handler) { |
2338 DCHECK(!frame_ || frame_ == frame); | 2339 DCHECK(!frame_ || frame_ == frame); |
2339 #if defined(ENABLE_WEBRTC) | 2340 #if defined(ENABLE_WEBRTC) |
2340 static_cast<RTCPeerConnectionHandler*>(handler)->associateWithFrame(frame); | 2341 static_cast<RTCPeerConnectionHandler*>(handler)->associateWithFrame(frame); |
2341 #endif | 2342 #endif |
2342 } | 2343 } |
2343 | 2344 |
2344 bool RenderFrameImpl::willCheckAndDispatchMessageEvent( | 2345 bool RenderFrameImpl::willCheckAndDispatchMessageEvent( |
2345 blink::WebFrame* sourceFrame, | 2346 blink::WebLocalFrame* sourceFrame, |
2346 blink::WebFrame* targetFrame, | 2347 blink::WebFrame* targetFrame, |
2347 blink::WebSecurityOrigin targetOrigin, | 2348 blink::WebSecurityOrigin targetOrigin, |
2348 blink::WebDOMMessageEvent event) { | 2349 blink::WebDOMMessageEvent event) { |
2349 DCHECK(!frame_ || frame_ == targetFrame); | 2350 DCHECK(!frame_ || frame_ == targetFrame); |
2350 // TODO(nasko): Move implementation here. Needed state: | 2351 // TODO(nasko): Move implementation here. Needed state: |
2351 // * is_swapped_out_ | 2352 // * is_swapped_out_ |
2352 return render_view_->willCheckAndDispatchMessageEvent( | 2353 return render_view_->willCheckAndDispatchMessageEvent( |
2353 sourceFrame, targetFrame, targetOrigin, event); | 2354 sourceFrame, targetFrame, targetOrigin, event); |
2354 } | 2355 } |
2355 | 2356 |
2356 blink::WebString RenderFrameImpl::userAgentOverride( | 2357 blink::WebString RenderFrameImpl::userAgentOverride(blink::WebLocalFrame* frame, |
2357 blink::WebFrame* frame, | 2358 const blink::WebURL& url) { |
2358 const blink::WebURL& url) { | |
2359 DCHECK(!frame_ || frame_ == frame); | 2359 DCHECK(!frame_ || frame_ == frame); |
2360 if (!render_view_->webview() || !render_view_->webview()->mainFrame() || | 2360 if (!render_view_->webview() || !render_view_->webview()->mainFrame() || |
2361 render_view_->renderer_preferences_.user_agent_override.empty()) { | 2361 render_view_->renderer_preferences_.user_agent_override.empty()) { |
2362 return blink::WebString(); | 2362 return blink::WebString(); |
2363 } | 2363 } |
2364 | 2364 |
2365 // If we're in the middle of committing a load, the data source we need | 2365 // If we're in the middle of committing a load, the data source we need |
2366 // will still be provisional. | 2366 // will still be provisional. |
2367 WebFrame* main_frame = render_view_->webview()->mainFrame(); | 2367 WebFrame* main_frame = render_view_->webview()->mainFrame(); |
2368 WebDataSource* data_source = NULL; | 2368 WebDataSource* data_source = NULL; |
2369 if (main_frame->provisionalDataSource()) | 2369 if (main_frame->provisionalDataSource()) |
2370 data_source = main_frame->provisionalDataSource(); | 2370 data_source = main_frame->provisionalDataSource(); |
2371 else | 2371 else |
2372 data_source = main_frame->dataSource(); | 2372 data_source = main_frame->dataSource(); |
2373 | 2373 |
2374 InternalDocumentStateData* internal_data = data_source ? | 2374 InternalDocumentStateData* internal_data = data_source ? |
2375 InternalDocumentStateData::FromDataSource(data_source) : NULL; | 2375 InternalDocumentStateData::FromDataSource(data_source) : NULL; |
2376 if (internal_data && internal_data->is_overriding_user_agent()) | 2376 if (internal_data && internal_data->is_overriding_user_agent()) |
2377 return WebString::fromUTF8( | 2377 return WebString::fromUTF8( |
2378 render_view_->renderer_preferences_.user_agent_override); | 2378 render_view_->renderer_preferences_.user_agent_override); |
2379 return blink::WebString(); | 2379 return blink::WebString(); |
2380 } | 2380 } |
2381 | 2381 |
2382 blink::WebString RenderFrameImpl::doNotTrackValue(blink::WebFrame* frame) { | 2382 blink::WebString RenderFrameImpl::doNotTrackValue(blink::WebLocalFrame* frame) { |
2383 DCHECK(!frame_ || frame_ == frame); | 2383 DCHECK(!frame_ || frame_ == frame); |
2384 if (render_view_->renderer_preferences_.enable_do_not_track) | 2384 if (render_view_->renderer_preferences_.enable_do_not_track) |
2385 return WebString::fromUTF8("1"); | 2385 return WebString::fromUTF8("1"); |
2386 return WebString(); | 2386 return WebString(); |
2387 } | 2387 } |
2388 | 2388 |
2389 bool RenderFrameImpl::allowWebGL(blink::WebFrame* frame, bool default_value) { | 2389 bool RenderFrameImpl::allowWebGL(blink::WebLocalFrame* frame, |
| 2390 bool default_value) { |
2390 DCHECK(!frame_ || frame_ == frame); | 2391 DCHECK(!frame_ || frame_ == frame); |
2391 if (!default_value) | 2392 if (!default_value) |
2392 return false; | 2393 return false; |
2393 | 2394 |
2394 bool blocked = true; | 2395 bool blocked = true; |
2395 render_view_->Send(new ViewHostMsg_Are3DAPIsBlocked( | 2396 render_view_->Send(new ViewHostMsg_Are3DAPIsBlocked( |
2396 render_view_->GetRoutingID(), | 2397 render_view_->GetRoutingID(), |
2397 GURL(frame->top()->document().securityOrigin().toString()), | 2398 GURL(frame->top()->document().securityOrigin().toString()), |
2398 THREE_D_API_TYPE_WEBGL, | 2399 THREE_D_API_TYPE_WEBGL, |
2399 &blocked)); | 2400 &blocked)); |
2400 return !blocked; | 2401 return !blocked; |
2401 } | 2402 } |
2402 | 2403 |
2403 void RenderFrameImpl::didLoseWebGLContext(blink::WebFrame* frame, | 2404 void RenderFrameImpl::didLoseWebGLContext(blink::WebLocalFrame* frame, |
2404 int arb_robustness_status_code) { | 2405 int arb_robustness_status_code) { |
2405 DCHECK(!frame_ || frame_ == frame); | 2406 DCHECK(!frame_ || frame_ == frame); |
2406 render_view_->Send(new ViewHostMsg_DidLose3DContext( | 2407 render_view_->Send(new ViewHostMsg_DidLose3DContext( |
2407 GURL(frame->top()->document().securityOrigin().toString()), | 2408 GURL(frame->top()->document().securityOrigin().toString()), |
2408 THREE_D_API_TYPE_WEBGL, | 2409 THREE_D_API_TYPE_WEBGL, |
2409 arb_robustness_status_code)); | 2410 arb_robustness_status_code)); |
2410 } | 2411 } |
2411 | 2412 |
2412 void RenderFrameImpl::forwardInputEvent(const blink::WebInputEvent* event) { | 2413 void RenderFrameImpl::forwardInputEvent(const blink::WebInputEvent* event) { |
2413 Send(new FrameHostMsg_ForwardInputEvent(routing_id_, event)); | 2414 Send(new FrameHostMsg_ForwardInputEvent(routing_id_, event)); |
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2965 selection_text_offset_ = offset; | 2966 selection_text_offset_ = offset; |
2966 selection_range_ = range; | 2967 selection_range_ = range; |
2967 // This IPC is dispatched by RenderWidetHost, so use its routing ID. | 2968 // This IPC is dispatched by RenderWidetHost, so use its routing ID. |
2968 Send(new ViewHostMsg_SelectionChanged( | 2969 Send(new ViewHostMsg_SelectionChanged( |
2969 GetRenderWidget()->routing_id(), text, offset, range)); | 2970 GetRenderWidget()->routing_id(), text, offset, range)); |
2970 } | 2971 } |
2971 GetRenderWidget()->UpdateSelectionBounds(); | 2972 GetRenderWidget()->UpdateSelectionBounds(); |
2972 } | 2973 } |
2973 | 2974 |
2974 } // namespace content | 2975 } // namespace content |
OLD | NEW |