| 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 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 #endif | 102 #endif |
| 103 | 103 |
| 104 using blink::WebContextMenuData; | 104 using blink::WebContextMenuData; |
| 105 using blink::WebData; | 105 using blink::WebData; |
| 106 using blink::WebDataSource; | 106 using blink::WebDataSource; |
| 107 using blink::WebDocument; | 107 using blink::WebDocument; |
| 108 using blink::WebElement; | 108 using blink::WebElement; |
| 109 using blink::WebFrame; | 109 using blink::WebFrame; |
| 110 using blink::WebHistoryItem; | 110 using blink::WebHistoryItem; |
| 111 using blink::WebHTTPBody; | 111 using blink::WebHTTPBody; |
| 112 using blink::WebLocalFrame; |
| 112 using blink::WebNavigationPolicy; | 113 using blink::WebNavigationPolicy; |
| 113 using blink::WebNavigationType; | 114 using blink::WebNavigationType; |
| 114 using blink::WebNode; | 115 using blink::WebNode; |
| 115 using blink::WebPluginParams; | 116 using blink::WebPluginParams; |
| 116 using blink::WebRange; | 117 using blink::WebRange; |
| 117 using blink::WebReferrerPolicy; | 118 using blink::WebReferrerPolicy; |
| 118 using blink::WebScriptSource; | 119 using blink::WebScriptSource; |
| 119 using blink::WebSearchableFormData; | 120 using blink::WebSearchableFormData; |
| 120 using blink::WebSecurityOrigin; | 121 using blink::WebSecurityOrigin; |
| 121 using blink::WebSecurityPolicy; | 122 using blink::WebSecurityPolicy; |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 new JavaBridgeDispatcher(this); | 324 new JavaBridgeDispatcher(this); |
| 324 #endif | 325 #endif |
| 325 } | 326 } |
| 326 | 327 |
| 327 RenderFrameImpl::~RenderFrameImpl() { | 328 RenderFrameImpl::~RenderFrameImpl() { |
| 328 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone()); | 329 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone()); |
| 329 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct()); | 330 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct()); |
| 330 RenderThread::Get()->RemoveRoute(routing_id_); | 331 RenderThread::Get()->RemoveRoute(routing_id_); |
| 331 } | 332 } |
| 332 | 333 |
| 333 void RenderFrameImpl::SetWebFrame(blink::WebFrame* web_frame) { | 334 void RenderFrameImpl::SetWebFrame(blink::WebLocalFrame* web_frame) { |
| 334 DCHECK(!frame_); | 335 DCHECK(!frame_); |
| 335 | 336 |
| 336 std::pair<FrameMap::iterator, bool> result = g_frame_map.Get().insert( | 337 std::pair<FrameMap::iterator, bool> result = g_frame_map.Get().insert( |
| 337 std::make_pair(web_frame, this)); | 338 std::make_pair(web_frame, this)); |
| 338 CHECK(result.second) << "Inserting a duplicate item."; | 339 CHECK(result.second) << "Inserting a duplicate item."; |
| 339 | 340 |
| 340 frame_ = web_frame; | 341 frame_ = web_frame; |
| 341 | 342 |
| 342 #if defined(ENABLE_PLUGINS) | 343 #if defined(ENABLE_PLUGINS) |
| 343 new PepperBrowserConnection(this); | 344 new PepperBrowserConnection(this); |
| (...skipping 805 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 return NULL; | 1150 return NULL; |
| 1150 #else | 1151 #else |
| 1151 // TODO(jam): change to take RenderFrame. | 1152 // TODO(jam): change to take RenderFrame. |
| 1152 return new WebPluginImpl(frame, params, info.path, render_view_, this); | 1153 return new WebPluginImpl(frame, params, info.path, render_view_, this); |
| 1153 #endif | 1154 #endif |
| 1154 #else | 1155 #else |
| 1155 return NULL; | 1156 return NULL; |
| 1156 #endif | 1157 #endif |
| 1157 } | 1158 } |
| 1158 | 1159 |
| 1159 void RenderFrameImpl::LoadURLExternally( | 1160 void RenderFrameImpl::LoadURLExternally(blink::WebLocalFrame* frame, |
| 1160 blink::WebFrame* frame, | 1161 const blink::WebURLRequest& request, |
| 1161 const blink::WebURLRequest& request, | 1162 blink::WebNavigationPolicy policy) { |
| 1162 blink::WebNavigationPolicy policy) { | |
| 1163 DCHECK(!frame_ || frame_ == frame); | 1163 DCHECK(!frame_ || frame_ == frame); |
| 1164 loadURLExternally(frame, request, policy); | 1164 loadURLExternally(frame, request, policy); |
| 1165 } | 1165 } |
| 1166 | 1166 |
| 1167 void RenderFrameImpl::ExecuteJavaScript(const base::string16& javascript) { | 1167 void RenderFrameImpl::ExecuteJavaScript(const base::string16& javascript) { |
| 1168 OnJavaScriptExecuteRequest(javascript, 0, false); | 1168 OnJavaScriptExecuteRequest(javascript, 0, false); |
| 1169 } | 1169 } |
| 1170 | 1170 |
| 1171 void RenderFrameImpl::OnChildFrameProcessGone() { | 1171 void RenderFrameImpl::OnChildFrameProcessGone() { |
| 1172 if (compositing_helper_) | 1172 if (compositing_helper_) |
| 1173 compositing_helper_->ChildFrameGone(); | 1173 compositing_helper_->ChildFrameGone(); |
| 1174 } | 1174 } |
| 1175 | 1175 |
| 1176 // blink::WebFrameClient implementation ---------------------------------------- | 1176 // blink::WebFrameClient implementation ---------------------------------------- |
| 1177 | 1177 |
| 1178 blink::WebPlugin* RenderFrameImpl::createPlugin( | 1178 blink::WebPlugin* RenderFrameImpl::createPlugin( |
| 1179 blink::WebFrame* frame, | 1179 blink::WebLocalFrame* frame, |
| 1180 const blink::WebPluginParams& params) { | 1180 const blink::WebPluginParams& params) { |
| 1181 DCHECK_EQ(frame_, frame); | 1181 DCHECK_EQ(frame_, frame); |
| 1182 blink::WebPlugin* plugin = NULL; | 1182 blink::WebPlugin* plugin = NULL; |
| 1183 if (GetContentClient()->renderer()->OverrideCreatePlugin( | 1183 if (GetContentClient()->renderer()->OverrideCreatePlugin( |
| 1184 this, frame, params, &plugin)) { | 1184 this, frame, params, &plugin)) { |
| 1185 return plugin; | 1185 return plugin; |
| 1186 } | 1186 } |
| 1187 | 1187 |
| 1188 if (base::UTF16ToASCII(params.mimeType) == kBrowserPluginMimeType) { | 1188 if (base::UTF16ToASCII(params.mimeType) == kBrowserPluginMimeType) { |
| 1189 return render_view_->GetBrowserPluginManager()->CreateBrowserPlugin( | 1189 return render_view_->GetBrowserPluginManager()->CreateBrowserPlugin( |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1202 | 1202 |
| 1203 WebPluginParams params_to_use = params; | 1203 WebPluginParams params_to_use = params; |
| 1204 params_to_use.mimeType = WebString::fromUTF8(mime_type); | 1204 params_to_use.mimeType = WebString::fromUTF8(mime_type); |
| 1205 return CreatePlugin(frame, info, params_to_use); | 1205 return CreatePlugin(frame, info, params_to_use); |
| 1206 #else | 1206 #else |
| 1207 return NULL; | 1207 return NULL; |
| 1208 #endif // defined(ENABLE_PLUGINS) | 1208 #endif // defined(ENABLE_PLUGINS) |
| 1209 } | 1209 } |
| 1210 | 1210 |
| 1211 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( | 1211 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
| 1212 blink::WebFrame* frame, | 1212 blink::WebLocalFrame* frame, |
| 1213 const blink::WebURL& url, | 1213 const blink::WebURL& url, |
| 1214 blink::WebMediaPlayerClient* client) { | 1214 blink::WebMediaPlayerClient* client) { |
| 1215 DCHECK(!frame_ || frame_ == frame); | 1215 DCHECK(!frame_ || frame_ == frame); |
| 1216 // TODO(nasko): Moving the implementation here involves moving a few media | 1216 // TODO(nasko): Moving the implementation here involves moving a few media |
| 1217 // related client objects here or referencing them in the RenderView. Needs | 1217 // related client objects here or referencing them in the RenderView. Needs |
| 1218 // more work to understand where the proper place for those objects is. | 1218 // more work to understand where the proper place for those objects is. |
| 1219 return render_view_->CreateMediaPlayer(this, frame, url, client); | 1219 return render_view_->CreateMediaPlayer(this, frame, url, client); |
| 1220 } | 1220 } |
| 1221 | 1221 |
| 1222 blink::WebContentDecryptionModule* | 1222 blink::WebContentDecryptionModule* |
| 1223 RenderFrameImpl::createContentDecryptionModule( | 1223 RenderFrameImpl::createContentDecryptionModule( |
| 1224 blink::WebFrame* frame, | 1224 blink::WebLocalFrame* frame, |
| 1225 const blink::WebSecurityOrigin& security_origin, | 1225 const blink::WebSecurityOrigin& security_origin, |
| 1226 const blink::WebString& key_system) { | 1226 const blink::WebString& key_system) { |
| 1227 DCHECK(!frame_ || frame_ == frame); | 1227 DCHECK(!frame_ || frame_ == frame); |
| 1228 return WebContentDecryptionModuleImpl::Create( | 1228 return WebContentDecryptionModuleImpl::Create( |
| 1229 frame, security_origin, key_system); | 1229 frame, security_origin, key_system); |
| 1230 } | 1230 } |
| 1231 | 1231 |
| 1232 blink::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( | 1232 blink::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( |
| 1233 blink::WebFrame* frame, | 1233 blink::WebLocalFrame* frame, |
| 1234 blink::WebApplicationCacheHostClient* client) { | 1234 blink::WebApplicationCacheHostClient* client) { |
| 1235 if (!frame || !frame->view()) | 1235 if (!frame || !frame->view()) |
| 1236 return NULL; | 1236 return NULL; |
| 1237 DCHECK(!frame_ || frame_ == frame); | 1237 DCHECK(!frame_ || frame_ == frame); |
| 1238 return new RendererWebApplicationCacheHostImpl( | 1238 return new RendererWebApplicationCacheHostImpl( |
| 1239 RenderViewImpl::FromWebView(frame->view()), client, | 1239 RenderViewImpl::FromWebView(frame->view()), client, |
| 1240 RenderThreadImpl::current()->appcache_dispatcher()->backend_proxy()); | 1240 RenderThreadImpl::current()->appcache_dispatcher()->backend_proxy()); |
| 1241 } | 1241 } |
| 1242 | 1242 |
| 1243 blink::WebWorkerPermissionClientProxy* | 1243 blink::WebWorkerPermissionClientProxy* |
| 1244 RenderFrameImpl::createWorkerPermissionClientProxy(blink::WebFrame* frame) { | 1244 RenderFrameImpl::createWorkerPermissionClientProxy( |
| 1245 blink::WebLocalFrame* frame) { |
| 1245 if (!frame || !frame->view()) | 1246 if (!frame || !frame->view()) |
| 1246 return NULL; | 1247 return NULL; |
| 1247 DCHECK(!frame_ || frame_ == frame); | 1248 DCHECK(!frame_ || frame_ == frame); |
| 1248 return GetContentClient()->renderer()->CreateWorkerPermissionClientProxy( | 1249 return GetContentClient()->renderer()->CreateWorkerPermissionClientProxy( |
| 1249 this, frame); | 1250 this, frame); |
| 1250 } | 1251 } |
| 1251 | 1252 |
| 1252 blink::WebCookieJar* RenderFrameImpl::cookieJar(blink::WebFrame* frame) { | 1253 blink::WebCookieJar* RenderFrameImpl::cookieJar(blink::WebLocalFrame* frame) { |
| 1253 DCHECK(!frame_ || frame_ == frame); | 1254 DCHECK(!frame_ || frame_ == frame); |
| 1254 return &cookie_jar_; | 1255 return &cookie_jar_; |
| 1255 } | 1256 } |
| 1256 | 1257 |
| 1257 blink::WebServiceWorkerProvider* RenderFrameImpl::createServiceWorkerProvider( | 1258 blink::WebServiceWorkerProvider* RenderFrameImpl::createServiceWorkerProvider( |
| 1258 blink::WebFrame* frame) { | 1259 blink::WebLocalFrame* frame) { |
| 1259 DCHECK(!frame_ || frame_ == frame); | 1260 DCHECK(!frame_ || frame_ == frame); |
| 1260 // At this point we should have non-null data source. | 1261 // At this point we should have non-null data source. |
| 1261 DCHECK(frame->dataSource()); | 1262 DCHECK(frame->dataSource()); |
| 1262 ServiceWorkerNetworkProvider* provider = | 1263 ServiceWorkerNetworkProvider* provider = |
| 1263 ServiceWorkerNetworkProvider::FromDocumentState( | 1264 ServiceWorkerNetworkProvider::FromDocumentState( |
| 1264 DocumentState::FromDataSource(frame->dataSource())); | 1265 DocumentState::FromDataSource(frame->dataSource())); |
| 1265 int provider_id = provider ? | 1266 int provider_id = provider ? |
| 1266 provider->provider_id() : | 1267 provider->provider_id() : |
| 1267 kInvalidServiceWorkerProviderId; | 1268 kInvalidServiceWorkerProviderId; |
| 1268 return new WebServiceWorkerProviderImpl( | 1269 return new WebServiceWorkerProviderImpl( |
| 1269 ChildThread::current()->thread_safe_sender(), provider_id); | 1270 ChildThread::current()->thread_safe_sender(), provider_id); |
| 1270 } | 1271 } |
| 1271 | 1272 |
| 1272 void RenderFrameImpl::didAccessInitialDocument(blink::WebFrame* frame) { | 1273 void RenderFrameImpl::didAccessInitialDocument(blink::WebLocalFrame* frame) { |
| 1273 DCHECK(!frame_ || frame_ == frame); | 1274 DCHECK(!frame_ || frame_ == frame); |
| 1274 render_view_->didAccessInitialDocument(frame); | 1275 render_view_->didAccessInitialDocument(frame); |
| 1275 } | 1276 } |
| 1276 | 1277 |
| 1277 blink::WebFrame* RenderFrameImpl::createChildFrame( | 1278 blink::WebFrame* RenderFrameImpl::createChildFrame( |
| 1278 blink::WebFrame* parent, | 1279 blink::WebLocalFrame* parent, |
| 1279 const blink::WebString& name) { | 1280 const blink::WebString& name) { |
| 1280 // Synchronously notify the browser of a child frame creation to get the | 1281 // Synchronously notify the browser of a child frame creation to get the |
| 1281 // routing_id for the RenderFrame. | 1282 // routing_id for the RenderFrame. |
| 1282 int child_routing_id = MSG_ROUTING_NONE; | 1283 int child_routing_id = MSG_ROUTING_NONE; |
| 1283 Send(new FrameHostMsg_CreateChildFrame(routing_id_, | 1284 Send(new FrameHostMsg_CreateChildFrame(routing_id_, |
| 1284 base::UTF16ToUTF8(name), | 1285 base::UTF16ToUTF8(name), |
| 1285 &child_routing_id)); | 1286 &child_routing_id)); |
| 1286 // Allocation of routing id failed, so we can't create a child frame. This can | 1287 // Allocation of routing id failed, so we can't create a child frame. This can |
| 1287 // happen if this RenderFrameImpl's IPCs are being filtered when in swapped | 1288 // happen if this RenderFrameImpl's IPCs are being filtered when in swapped |
| 1288 // out state. | 1289 // out state. |
| 1289 if (child_routing_id == MSG_ROUTING_NONE) { | 1290 if (child_routing_id == MSG_ROUTING_NONE) { |
| 1290 base::debug::Alias(parent); | 1291 base::debug::Alias(parent); |
| 1291 base::debug::Alias(&routing_id_); | 1292 base::debug::Alias(&routing_id_); |
| 1292 bool render_view_is_swapped_out = GetRenderWidget()->is_swapped_out(); | 1293 bool render_view_is_swapped_out = GetRenderWidget()->is_swapped_out(); |
| 1293 base::debug::Alias(&render_view_is_swapped_out); | 1294 base::debug::Alias(&render_view_is_swapped_out); |
| 1294 bool render_view_is_closing = GetRenderWidget()->closing(); | 1295 bool render_view_is_closing = GetRenderWidget()->closing(); |
| 1295 base::debug::Alias(&render_view_is_closing); | 1296 base::debug::Alias(&render_view_is_closing); |
| 1296 base::debug::Alias(&is_swapped_out_); | 1297 base::debug::Alias(&is_swapped_out_); |
| 1297 base::debug::DumpWithoutCrashing(); | 1298 base::debug::DumpWithoutCrashing(); |
| 1298 return NULL; | 1299 return NULL; |
| 1299 } | 1300 } |
| 1300 | 1301 |
| 1301 RenderFrameImpl* child_render_frame = RenderFrameImpl::Create( | 1302 RenderFrameImpl* child_render_frame = RenderFrameImpl::Create( |
| 1302 render_view_.get(), child_routing_id); | 1303 render_view_.get(), child_routing_id); |
| 1303 blink::WebFrame* web_frame = WebFrame::create(child_render_frame); | 1304 blink::WebLocalFrame* web_frame = WebLocalFrame::create(child_render_frame); |
| 1304 parent->appendChild(web_frame); | 1305 parent->appendChild(web_frame); |
| 1305 child_render_frame->SetWebFrame(web_frame); | 1306 child_render_frame->SetWebFrame(web_frame); |
| 1306 | 1307 |
| 1307 return web_frame; | 1308 return web_frame; |
| 1308 } | 1309 } |
| 1309 | 1310 |
| 1310 void RenderFrameImpl::didDisownOpener(blink::WebFrame* frame) { | 1311 void RenderFrameImpl::didDisownOpener(blink::WebLocalFrame* frame) { |
| 1311 DCHECK(!frame_ || frame_ == frame); | 1312 DCHECK(!frame_ || frame_ == frame); |
| 1312 render_view_->didDisownOpener(frame); | 1313 render_view_->didDisownOpener(frame); |
| 1313 } | 1314 } |
| 1314 | 1315 |
| 1315 void RenderFrameImpl::frameDetached(blink::WebFrame* frame) { | 1316 void RenderFrameImpl::frameDetached(blink::WebFrame* frame) { |
| 1316 // NOTE: This function is called on the frame that is being detached and not | 1317 // NOTE: This function is called on the frame that is being detached and not |
| 1317 // the parent frame. This is different from createChildFrame() which is | 1318 // the parent frame. This is different from createChildFrame() which is |
| 1318 // called on the parent frame. | 1319 // called on the parent frame. |
| 1319 CHECK(!is_detaching_); | 1320 CHECK(!is_detaching_); |
| 1320 DCHECK(!frame_ || frame_ == frame); | 1321 DCHECK(!frame_ || frame_ == frame); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1360 Send(new FrameHostMsg_FrameFocused(routing_id_)); | 1361 Send(new FrameHostMsg_FrameFocused(routing_id_)); |
| 1361 } | 1362 } |
| 1362 | 1363 |
| 1363 void RenderFrameImpl::willClose(blink::WebFrame* frame) { | 1364 void RenderFrameImpl::willClose(blink::WebFrame* frame) { |
| 1364 DCHECK(!frame_ || frame_ == frame); | 1365 DCHECK(!frame_ || frame_ == frame); |
| 1365 // Call back to RenderViewImpl for observers to be notified. | 1366 // Call back to RenderViewImpl for observers to be notified. |
| 1366 // TODO(nasko): Remove once we have RenderFrameObserver. | 1367 // TODO(nasko): Remove once we have RenderFrameObserver. |
| 1367 render_view_->willClose(frame); | 1368 render_view_->willClose(frame); |
| 1368 } | 1369 } |
| 1369 | 1370 |
| 1370 void RenderFrameImpl::didChangeName(blink::WebFrame* frame, | 1371 void RenderFrameImpl::didChangeName(blink::WebLocalFrame* frame, |
| 1371 const blink::WebString& name) { | 1372 const blink::WebString& name) { |
| 1372 DCHECK(!frame_ || frame_ == frame); | 1373 DCHECK(!frame_ || frame_ == frame); |
| 1373 if (!render_view_->renderer_preferences_.report_frame_name_changes) | 1374 if (!render_view_->renderer_preferences_.report_frame_name_changes) |
| 1374 return; | 1375 return; |
| 1375 | 1376 |
| 1376 render_view_->Send( | 1377 render_view_->Send( |
| 1377 new ViewHostMsg_UpdateFrameName(render_view_->GetRoutingID(), | 1378 new ViewHostMsg_UpdateFrameName(render_view_->GetRoutingID(), |
| 1378 routing_id_, | 1379 routing_id_, |
| 1379 !frame->parent(), | 1380 !frame->parent(), |
| 1380 base::UTF16ToUTF8(name))); | 1381 base::UTF16ToUTF8(name))); |
| 1381 } | 1382 } |
| 1382 | 1383 |
| 1383 void RenderFrameImpl::didMatchCSS( | 1384 void RenderFrameImpl::didMatchCSS( |
| 1384 blink::WebFrame* frame, | 1385 blink::WebLocalFrame* frame, |
| 1385 const blink::WebVector<blink::WebString>& newly_matching_selectors, | 1386 const blink::WebVector<blink::WebString>& newly_matching_selectors, |
| 1386 const blink::WebVector<blink::WebString>& stopped_matching_selectors) { | 1387 const blink::WebVector<blink::WebString>& stopped_matching_selectors) { |
| 1387 DCHECK(!frame_ || frame_ == frame); | 1388 DCHECK(!frame_ || frame_ == frame); |
| 1388 render_view_->didMatchCSS( | 1389 render_view_->didMatchCSS( |
| 1389 frame, newly_matching_selectors, stopped_matching_selectors); | 1390 frame, newly_matching_selectors, stopped_matching_selectors); |
| 1390 } | 1391 } |
| 1391 | 1392 |
| 1392 bool RenderFrameImpl::shouldReportDetailedMessageForSource( | 1393 bool RenderFrameImpl::shouldReportDetailedMessageForSource( |
| 1393 const blink::WebString& source) { | 1394 const blink::WebString& source) { |
| 1394 return GetContentClient()->renderer()->ShouldReportDetailedMessageForSource( | 1395 return GetContentClient()->renderer()->ShouldReportDetailedMessageForSource( |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1438 static_cast<int32>(log_severity))); | 1439 static_cast<int32>(log_severity))); |
| 1439 } | 1440 } |
| 1440 | 1441 |
| 1441 Send(new FrameHostMsg_AddMessageToConsole(routing_id_, | 1442 Send(new FrameHostMsg_AddMessageToConsole(routing_id_, |
| 1442 static_cast<int32>(log_severity), | 1443 static_cast<int32>(log_severity), |
| 1443 message.text, | 1444 message.text, |
| 1444 static_cast<int32>(source_line), | 1445 static_cast<int32>(source_line), |
| 1445 source_name)); | 1446 source_name)); |
| 1446 } | 1447 } |
| 1447 | 1448 |
| 1448 void RenderFrameImpl::loadURLExternally(blink::WebFrame* frame, | 1449 void RenderFrameImpl::loadURLExternally(blink::WebLocalFrame* frame, |
| 1449 const blink::WebURLRequest& request, | 1450 const blink::WebURLRequest& request, |
| 1450 blink::WebNavigationPolicy policy) { | 1451 blink::WebNavigationPolicy policy) { |
| 1451 DCHECK(!frame_ || frame_ == frame); | 1452 DCHECK(!frame_ || frame_ == frame); |
| 1452 loadURLExternally(frame, request, policy, WebString()); | 1453 loadURLExternally(frame, request, policy, WebString()); |
| 1453 } | 1454 } |
| 1454 | 1455 |
| 1455 void RenderFrameImpl::loadURLExternally( | 1456 void RenderFrameImpl::loadURLExternally( |
| 1456 blink::WebFrame* frame, | 1457 blink::WebLocalFrame* frame, |
| 1457 const blink::WebURLRequest& request, | 1458 const blink::WebURLRequest& request, |
| 1458 blink::WebNavigationPolicy policy, | 1459 blink::WebNavigationPolicy policy, |
| 1459 const blink::WebString& suggested_name) { | 1460 const blink::WebString& suggested_name) { |
| 1460 DCHECK(!frame_ || frame_ == frame); | 1461 DCHECK(!frame_ || frame_ == frame); |
| 1461 Referrer referrer(RenderViewImpl::GetReferrerFromRequest(frame, request)); | 1462 Referrer referrer(RenderViewImpl::GetReferrerFromRequest(frame, request)); |
| 1462 if (policy == blink::WebNavigationPolicyDownload) { | 1463 if (policy == blink::WebNavigationPolicyDownload) { |
| 1463 render_view_->Send(new ViewHostMsg_DownloadUrl(render_view_->GetRoutingID(), | 1464 render_view_->Send(new ViewHostMsg_DownloadUrl(render_view_->GetRoutingID(), |
| 1464 request.url(), referrer, | 1465 request.url(), referrer, |
| 1465 suggested_name)); | 1466 suggested_name)); |
| 1466 } else { | 1467 } else { |
| 1467 OpenURL(frame, request.url(), referrer, policy); | 1468 OpenURL(frame, request.url(), referrer, policy); |
| 1468 } | 1469 } |
| 1469 } | 1470 } |
| 1470 | 1471 |
| 1471 blink::WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( | 1472 blink::WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( |
| 1472 blink::WebFrame* frame, | 1473 blink::WebLocalFrame* frame, |
| 1473 blink::WebDataSource::ExtraData* extra_data, | 1474 blink::WebDataSource::ExtraData* extra_data, |
| 1474 const blink::WebURLRequest& request, | 1475 const blink::WebURLRequest& request, |
| 1475 blink::WebNavigationType type, | 1476 blink::WebNavigationType type, |
| 1476 blink::WebNavigationPolicy default_policy, | 1477 blink::WebNavigationPolicy default_policy, |
| 1477 bool is_redirect) { | 1478 bool is_redirect) { |
| 1478 DCHECK(!frame_ || frame_ == frame); | 1479 DCHECK(!frame_ || frame_ == frame); |
| 1479 return DecidePolicyForNavigation( | 1480 return DecidePolicyForNavigation( |
| 1480 this, frame, extra_data, request, type, default_policy, is_redirect); | 1481 this, frame, extra_data, request, type, default_policy, is_redirect); |
| 1481 } | 1482 } |
| 1482 | 1483 |
| 1483 blink::WebHistoryItem RenderFrameImpl::historyItemForNewChildFrame( | 1484 blink::WebHistoryItem RenderFrameImpl::historyItemForNewChildFrame( |
| 1484 blink::WebFrame* frame) { | 1485 blink::WebFrame* frame) { |
| 1485 return render_view_->webview()->itemForNewChildFrame(frame); | 1486 return render_view_->webview()->itemForNewChildFrame(frame); |
| 1486 } | 1487 } |
| 1487 | 1488 |
| 1488 void RenderFrameImpl::willSendSubmitEvent(blink::WebFrame* frame, | 1489 void RenderFrameImpl::willSendSubmitEvent(blink::WebLocalFrame* frame, |
| 1489 const blink::WebFormElement& form) { | 1490 const blink::WebFormElement& form) { |
| 1490 DCHECK(!frame_ || frame_ == frame); | 1491 DCHECK(!frame_ || frame_ == frame); |
| 1491 // Call back to RenderViewImpl for observers to be notified. | 1492 // Call back to RenderViewImpl for observers to be notified. |
| 1492 // TODO(nasko): Remove once we have RenderFrameObserver. | 1493 // TODO(nasko): Remove once we have RenderFrameObserver. |
| 1493 render_view_->willSendSubmitEvent(frame, form); | 1494 render_view_->willSendSubmitEvent(frame, form); |
| 1494 } | 1495 } |
| 1495 | 1496 |
| 1496 void RenderFrameImpl::willSubmitForm(blink::WebFrame* frame, | 1497 void RenderFrameImpl::willSubmitForm(blink::WebLocalFrame* frame, |
| 1497 const blink::WebFormElement& form) { | 1498 const blink::WebFormElement& form) { |
| 1498 DCHECK(!frame_ || frame_ == frame); | 1499 DCHECK(!frame_ || frame_ == frame); |
| 1499 DocumentState* document_state = | 1500 DocumentState* document_state = |
| 1500 DocumentState::FromDataSource(frame->provisionalDataSource()); | 1501 DocumentState::FromDataSource(frame->provisionalDataSource()); |
| 1501 NavigationState* navigation_state = document_state->navigation_state(); | 1502 NavigationState* navigation_state = document_state->navigation_state(); |
| 1502 InternalDocumentStateData* internal_data = | 1503 InternalDocumentStateData* internal_data = |
| 1503 InternalDocumentStateData::FromDocumentState(document_state); | 1504 InternalDocumentStateData::FromDocumentState(document_state); |
| 1504 | 1505 |
| 1505 if (PageTransitionCoreTypeIs(navigation_state->transition_type(), | 1506 if (PageTransitionCoreTypeIs(navigation_state->transition_type(), |
| 1506 PAGE_TRANSITION_LINK)) { | 1507 PAGE_TRANSITION_LINK)) { |
| 1507 navigation_state->set_transition_type(PAGE_TRANSITION_FORM_SUBMIT); | 1508 navigation_state->set_transition_type(PAGE_TRANSITION_FORM_SUBMIT); |
| 1508 } | 1509 } |
| 1509 | 1510 |
| 1510 // Save these to be processed when the ensuing navigation is committed. | 1511 // Save these to be processed when the ensuing navigation is committed. |
| 1511 WebSearchableFormData web_searchable_form_data(form); | 1512 WebSearchableFormData web_searchable_form_data(form); |
| 1512 internal_data->set_searchable_form_url(web_searchable_form_data.url()); | 1513 internal_data->set_searchable_form_url(web_searchable_form_data.url()); |
| 1513 internal_data->set_searchable_form_encoding( | 1514 internal_data->set_searchable_form_encoding( |
| 1514 web_searchable_form_data.encoding().utf8()); | 1515 web_searchable_form_data.encoding().utf8()); |
| 1515 | 1516 |
| 1516 // Call back to RenderViewImpl for observers to be notified. | 1517 // Call back to RenderViewImpl for observers to be notified. |
| 1517 // TODO(nasko): Remove once we have RenderFrameObserver. | 1518 // TODO(nasko): Remove once we have RenderFrameObserver. |
| 1518 render_view_->willSubmitForm(frame, form); | 1519 render_view_->willSubmitForm(frame, form); |
| 1519 } | 1520 } |
| 1520 | 1521 |
| 1521 void RenderFrameImpl::didCreateDataSource(blink::WebFrame* frame, | 1522 void RenderFrameImpl::didCreateDataSource(blink::WebLocalFrame* frame, |
| 1522 blink::WebDataSource* datasource) { | 1523 blink::WebDataSource* datasource) { |
| 1523 DCHECK(!frame_ || frame_ == frame); | 1524 DCHECK(!frame_ || frame_ == frame); |
| 1524 | 1525 |
| 1525 // TODO(nasko): Move implementation here. Needed state: | 1526 // TODO(nasko): Move implementation here. Needed state: |
| 1526 // * pending_navigation_params_ | 1527 // * pending_navigation_params_ |
| 1527 // * webview | 1528 // * webview |
| 1528 // Needed methods: | 1529 // Needed methods: |
| 1529 // * PopulateDocumentStateFromPending | 1530 // * PopulateDocumentStateFromPending |
| 1530 // * CreateNavigationStateFromPending | 1531 // * CreateNavigationStateFromPending |
| 1531 render_view_->didCreateDataSource(frame, datasource); | 1532 render_view_->didCreateDataSource(frame, datasource); |
| 1532 | 1533 |
| 1533 // Create the serviceworker's per-document network observing object. | 1534 // Create the serviceworker's per-document network observing object. |
| 1534 scoped_ptr<ServiceWorkerNetworkProvider> | 1535 scoped_ptr<ServiceWorkerNetworkProvider> |
| 1535 network_provider(new ServiceWorkerNetworkProvider()); | 1536 network_provider(new ServiceWorkerNetworkProvider()); |
| 1536 ServiceWorkerNetworkProvider::AttachToDocumentState( | 1537 ServiceWorkerNetworkProvider::AttachToDocumentState( |
| 1537 DocumentState::FromDataSource(datasource), | 1538 DocumentState::FromDataSource(datasource), |
| 1538 network_provider.Pass()); | 1539 network_provider.Pass()); |
| 1539 } | 1540 } |
| 1540 | 1541 |
| 1541 void RenderFrameImpl::didStartProvisionalLoad(blink::WebFrame* frame) { | 1542 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame) { |
| 1542 DCHECK(!frame_ || frame_ == frame); | 1543 DCHECK(!frame_ || frame_ == frame); |
| 1543 WebDataSource* ds = frame->provisionalDataSource(); | 1544 WebDataSource* ds = frame->provisionalDataSource(); |
| 1544 | 1545 |
| 1545 // In fast/loader/stop-provisional-loads.html, we abort the load before this | 1546 // In fast/loader/stop-provisional-loads.html, we abort the load before this |
| 1546 // callback is invoked. | 1547 // callback is invoked. |
| 1547 if (!ds) | 1548 if (!ds) |
| 1548 return; | 1549 return; |
| 1549 | 1550 |
| 1550 DocumentState* document_state = DocumentState::FromDataSource(ds); | 1551 DocumentState* document_state = DocumentState::FromDataSource(ds); |
| 1551 | 1552 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1586 RenderFrameObserver, observers_, | 1587 RenderFrameObserver, observers_, |
| 1587 DidStartProvisionalLoad()); | 1588 DidStartProvisionalLoad()); |
| 1588 | 1589 |
| 1589 int parent_routing_id = frame->parent() ? | 1590 int parent_routing_id = frame->parent() ? |
| 1590 FromWebFrame(frame->parent())->GetRoutingID() : -1; | 1591 FromWebFrame(frame->parent())->GetRoutingID() : -1; |
| 1591 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( | 1592 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( |
| 1592 routing_id_, parent_routing_id, ds->request().url())); | 1593 routing_id_, parent_routing_id, ds->request().url())); |
| 1593 } | 1594 } |
| 1594 | 1595 |
| 1595 void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad( | 1596 void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad( |
| 1596 blink::WebFrame* frame) { | 1597 blink::WebLocalFrame* frame) { |
| 1597 DCHECK(!frame_ || frame_ == frame); | 1598 DCHECK(!frame_ || frame_ == frame); |
| 1598 render_view_->webview()->removeChildrenForRedirect(frame); | 1599 render_view_->webview()->removeChildrenForRedirect(frame); |
| 1599 if (frame->parent()) | 1600 if (frame->parent()) |
| 1600 return; | 1601 return; |
| 1601 // Received a redirect on the main frame. | 1602 // Received a redirect on the main frame. |
| 1602 WebDataSource* data_source = frame->provisionalDataSource(); | 1603 WebDataSource* data_source = frame->provisionalDataSource(); |
| 1603 if (!data_source) { | 1604 if (!data_source) { |
| 1604 // Should only be invoked when we have a data source. | 1605 // Should only be invoked when we have a data source. |
| 1605 NOTREACHED(); | 1606 NOTREACHED(); |
| 1606 return; | 1607 return; |
| 1607 } | 1608 } |
| 1608 std::vector<GURL> redirects; | 1609 std::vector<GURL> redirects; |
| 1609 GetRedirectChain(data_source, &redirects); | 1610 GetRedirectChain(data_source, &redirects); |
| 1610 if (redirects.size() >= 2) { | 1611 if (redirects.size() >= 2) { |
| 1611 Send(new FrameHostMsg_DidRedirectProvisionalLoad( | 1612 Send(new FrameHostMsg_DidRedirectProvisionalLoad( |
| 1612 routing_id_, | 1613 routing_id_, |
| 1613 render_view_->page_id_, | 1614 render_view_->page_id_, |
| 1614 redirects[redirects.size() - 2], | 1615 redirects[redirects.size() - 2], |
| 1615 redirects.back())); | 1616 redirects.back())); |
| 1616 } | 1617 } |
| 1617 } | 1618 } |
| 1618 | 1619 |
| 1619 void RenderFrameImpl::didFailProvisionalLoad( | 1620 void RenderFrameImpl::didFailProvisionalLoad(blink::WebLocalFrame* frame, |
| 1620 blink::WebFrame* frame, | 1621 const blink::WebURLError& error) { |
| 1621 const blink::WebURLError& error) { | |
| 1622 DCHECK(!frame_ || frame_ == frame); | 1622 DCHECK(!frame_ || frame_ == frame); |
| 1623 WebDataSource* ds = frame->provisionalDataSource(); | 1623 WebDataSource* ds = frame->provisionalDataSource(); |
| 1624 DCHECK(ds); | 1624 DCHECK(ds); |
| 1625 | 1625 |
| 1626 const WebURLRequest& failed_request = ds->request(); | 1626 const WebURLRequest& failed_request = ds->request(); |
| 1627 | 1627 |
| 1628 // Call out to RenderViewImpl, so observers are notified. | 1628 // Call out to RenderViewImpl, so observers are notified. |
| 1629 render_view_->didFailProvisionalLoad(frame, error); | 1629 render_view_->didFailProvisionalLoad(frame, error); |
| 1630 | 1630 |
| 1631 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, | 1631 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1722 const blink::WebHistoryItem& item, | 1722 const blink::WebHistoryItem& item, |
| 1723 blink::WebHistoryCommitType commit_type) { | 1723 blink::WebHistoryCommitType commit_type) { |
| 1724 DocumentState* document_state = | 1724 DocumentState* document_state = |
| 1725 DocumentState::FromDataSource(frame->dataSource()); | 1725 DocumentState::FromDataSource(frame->dataSource()); |
| 1726 render_view_->webview()->updateForCommit(frame, item, commit_type, | 1726 render_view_->webview()->updateForCommit(frame, item, commit_type, |
| 1727 document_state->navigation_state()->was_within_same_page()); | 1727 document_state->navigation_state()->was_within_same_page()); |
| 1728 | 1728 |
| 1729 didCommitProvisionalLoad(frame, commit_type == blink::WebStandardCommit); | 1729 didCommitProvisionalLoad(frame, commit_type == blink::WebStandardCommit); |
| 1730 } | 1730 } |
| 1731 | 1731 |
| 1732 void RenderFrameImpl::didCommitProvisionalLoad(blink::WebFrame* frame, | 1732 void RenderFrameImpl::didCommitProvisionalLoad(blink::WebLocalFrame* frame, |
| 1733 bool is_new_navigation) { | 1733 bool is_new_navigation) { |
| 1734 DCHECK(!frame_ || frame_ == frame); | 1734 DCHECK(!frame_ || frame_ == frame); |
| 1735 DocumentState* document_state = | 1735 DocumentState* document_state = |
| 1736 DocumentState::FromDataSource(frame->dataSource()); | 1736 DocumentState::FromDataSource(frame->dataSource()); |
| 1737 NavigationState* navigation_state = document_state->navigation_state(); | 1737 NavigationState* navigation_state = document_state->navigation_state(); |
| 1738 InternalDocumentStateData* internal_data = | 1738 InternalDocumentStateData* internal_data = |
| 1739 InternalDocumentStateData::FromDocumentState(document_state); | 1739 InternalDocumentStateData::FromDocumentState(document_state); |
| 1740 | 1740 |
| 1741 if (document_state->commit_load_time().is_null()) | 1741 if (document_state->commit_load_time().is_null()) |
| 1742 document_state->set_commit_load_time(Time::Now()); | 1742 document_state->set_commit_load_time(Time::Now()); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1815 // navigation without valid HistoryItem state, WebCore will think it is a | 1815 // navigation without valid HistoryItem state, WebCore will think it is a |
| 1816 // new navigation. | 1816 // new navigation. |
| 1817 navigation_state->set_request_committed(true); | 1817 navigation_state->set_request_committed(true); |
| 1818 | 1818 |
| 1819 UpdateURL(frame); | 1819 UpdateURL(frame); |
| 1820 | 1820 |
| 1821 // Check whether we have new encoding name. | 1821 // Check whether we have new encoding name. |
| 1822 render_view_->UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); | 1822 render_view_->UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); |
| 1823 } | 1823 } |
| 1824 | 1824 |
| 1825 void RenderFrameImpl::didClearWindowObject(blink::WebFrame* frame, | 1825 void RenderFrameImpl::didClearWindowObject(blink::WebLocalFrame* frame, |
| 1826 int world_id) { | 1826 int world_id) { |
| 1827 DCHECK(!frame_ || frame_ == frame); | 1827 DCHECK(!frame_ || frame_ == frame); |
| 1828 // TODO(nasko): Move implementation here. Needed state: | 1828 // TODO(nasko): Move implementation here. Needed state: |
| 1829 // * enabled_bindings_ | 1829 // * enabled_bindings_ |
| 1830 // * dom_automation_controller_ | 1830 // * dom_automation_controller_ |
| 1831 // * stats_collection_controller_ | 1831 // * stats_collection_controller_ |
| 1832 | 1832 |
| 1833 render_view_->didClearWindowObject(frame, world_id); | 1833 render_view_->didClearWindowObject(frame, world_id); |
| 1834 | 1834 |
| 1835 // Only install controllers into the main world. | 1835 // Only install controllers into the main world. |
| 1836 if (world_id) | 1836 if (world_id) |
| 1837 return; | 1837 return; |
| 1838 | 1838 |
| 1839 if (render_view_->GetEnabledBindings() & BINDINGS_POLICY_DOM_AUTOMATION) | 1839 if (render_view_->GetEnabledBindings() & BINDINGS_POLICY_DOM_AUTOMATION) |
| 1840 DomAutomationController::Install(this, frame); | 1840 DomAutomationController::Install(this, frame); |
| 1841 | 1841 |
| 1842 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, | 1842 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, |
| 1843 DidClearWindowObject(world_id)); | 1843 DidClearWindowObject(world_id)); |
| 1844 } | 1844 } |
| 1845 | 1845 |
| 1846 void RenderFrameImpl::didCreateDocumentElement(blink::WebFrame* frame) { | 1846 void RenderFrameImpl::didCreateDocumentElement(blink::WebLocalFrame* frame) { |
| 1847 DCHECK(!frame_ || frame_ == frame); | 1847 DCHECK(!frame_ || frame_ == frame); |
| 1848 | 1848 |
| 1849 // Notify the browser about non-blank documents loading in the top frame. | 1849 // Notify the browser about non-blank documents loading in the top frame. |
| 1850 GURL url = frame->document().url(); | 1850 GURL url = frame->document().url(); |
| 1851 if (url.is_valid() && url.spec() != kAboutBlankURL) { | 1851 if (url.is_valid() && url.spec() != kAboutBlankURL) { |
| 1852 // TODO(nasko): Check if webview()->mainFrame() is the same as the | 1852 // TODO(nasko): Check if webview()->mainFrame() is the same as the |
| 1853 // frame->tree()->top(). | 1853 // frame->tree()->top(). |
| 1854 if (frame == render_view_->webview()->mainFrame()) { | 1854 if (frame == render_view_->webview()->mainFrame()) { |
| 1855 render_view_->Send(new ViewHostMsg_DocumentAvailableInMainFrame( | 1855 render_view_->Send(new ViewHostMsg_DocumentAvailableInMainFrame( |
| 1856 render_view_->GetRoutingID())); | 1856 render_view_->GetRoutingID())); |
| 1857 } | 1857 } |
| 1858 } | 1858 } |
| 1859 | 1859 |
| 1860 // Call back to RenderViewImpl for observers to be notified. | 1860 // Call back to RenderViewImpl for observers to be notified. |
| 1861 // TODO(nasko): Remove once we have RenderFrameObserver. | 1861 // TODO(nasko): Remove once we have RenderFrameObserver. |
| 1862 render_view_->didCreateDocumentElement(frame); | 1862 render_view_->didCreateDocumentElement(frame); |
| 1863 } | 1863 } |
| 1864 | 1864 |
| 1865 void RenderFrameImpl::didReceiveTitle(blink::WebFrame* frame, | 1865 void RenderFrameImpl::didReceiveTitle(blink::WebLocalFrame* frame, |
| 1866 const blink::WebString& title, | 1866 const blink::WebString& title, |
| 1867 blink::WebTextDirection direction) { | 1867 blink::WebTextDirection direction) { |
| 1868 DCHECK(!frame_ || frame_ == frame); | 1868 DCHECK(!frame_ || frame_ == frame); |
| 1869 // TODO(nasko): Investigate wheather implementation should move here. | 1869 // TODO(nasko): Investigate wheather implementation should move here. |
| 1870 render_view_->didReceiveTitle(frame, title, direction); | 1870 render_view_->didReceiveTitle(frame, title, direction); |
| 1871 } | 1871 } |
| 1872 | 1872 |
| 1873 void RenderFrameImpl::didChangeIcon(blink::WebFrame* frame, | 1873 void RenderFrameImpl::didChangeIcon(blink::WebLocalFrame* frame, |
| 1874 blink::WebIconURL::Type icon_type) { | 1874 blink::WebIconURL::Type icon_type) { |
| 1875 DCHECK(!frame_ || frame_ == frame); | 1875 DCHECK(!frame_ || frame_ == frame); |
| 1876 // TODO(nasko): Investigate wheather implementation should move here. | 1876 // TODO(nasko): Investigate wheather implementation should move here. |
| 1877 render_view_->didChangeIcon(frame, icon_type); | 1877 render_view_->didChangeIcon(frame, icon_type); |
| 1878 } | 1878 } |
| 1879 | 1879 |
| 1880 void RenderFrameImpl::didFinishDocumentLoad(blink::WebFrame* frame) { | 1880 void RenderFrameImpl::didFinishDocumentLoad(blink::WebLocalFrame* frame) { |
| 1881 DCHECK(!frame_ || frame_ == frame); | 1881 DCHECK(!frame_ || frame_ == frame); |
| 1882 WebDataSource* ds = frame->dataSource(); | 1882 WebDataSource* ds = frame->dataSource(); |
| 1883 DocumentState* document_state = DocumentState::FromDataSource(ds); | 1883 DocumentState* document_state = DocumentState::FromDataSource(ds); |
| 1884 document_state->set_finish_document_load_time(Time::Now()); | 1884 document_state->set_finish_document_load_time(Time::Now()); |
| 1885 | 1885 |
| 1886 Send(new FrameHostMsg_DidFinishDocumentLoad(routing_id_)); | 1886 Send(new FrameHostMsg_DidFinishDocumentLoad(routing_id_)); |
| 1887 | 1887 |
| 1888 // Call back to RenderViewImpl for observers to be notified. | 1888 // Call back to RenderViewImpl for observers to be notified. |
| 1889 // TODO(nasko): Remove once we have RenderFrameObserver for this method. | 1889 // TODO(nasko): Remove once we have RenderFrameObserver for this method. |
| 1890 render_view_->didFinishDocumentLoad(frame); | 1890 render_view_->didFinishDocumentLoad(frame); |
| 1891 | 1891 |
| 1892 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidFinishDocumentLoad()); | 1892 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidFinishDocumentLoad()); |
| 1893 | 1893 |
| 1894 // Check whether we have new encoding name. | 1894 // Check whether we have new encoding name. |
| 1895 render_view_->UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); | 1895 render_view_->UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); |
| 1896 } | 1896 } |
| 1897 | 1897 |
| 1898 void RenderFrameImpl::didHandleOnloadEvents(blink::WebFrame* frame) { | 1898 void RenderFrameImpl::didHandleOnloadEvents(blink::WebLocalFrame* frame) { |
| 1899 DCHECK(!frame_ || frame_ == frame); | 1899 DCHECK(!frame_ || frame_ == frame); |
| 1900 // TODO(nasko): Move implementation here. Needed state: | 1900 // TODO(nasko): Move implementation here. Needed state: |
| 1901 // * page_id_ | 1901 // * page_id_ |
| 1902 render_view_->didHandleOnloadEvents(frame); | 1902 render_view_->didHandleOnloadEvents(frame); |
| 1903 } | 1903 } |
| 1904 | 1904 |
| 1905 void RenderFrameImpl::didFailLoad(blink::WebFrame* frame, | 1905 void RenderFrameImpl::didFailLoad(blink::WebLocalFrame* frame, |
| 1906 const blink::WebURLError& error) { | 1906 const blink::WebURLError& error) { |
| 1907 DCHECK(!frame_ || frame_ == frame); | 1907 DCHECK(!frame_ || frame_ == frame); |
| 1908 // TODO(nasko): Move implementation here. No state needed. | 1908 // TODO(nasko): Move implementation here. No state needed. |
| 1909 WebDataSource* ds = frame->dataSource(); | 1909 WebDataSource* ds = frame->dataSource(); |
| 1910 DCHECK(ds); | 1910 DCHECK(ds); |
| 1911 | 1911 |
| 1912 render_view_->didFailLoad(frame, error); | 1912 render_view_->didFailLoad(frame, error); |
| 1913 | 1913 |
| 1914 const WebURLRequest& failed_request = ds->request(); | 1914 const WebURLRequest& failed_request = ds->request(); |
| 1915 base::string16 error_description; | 1915 base::string16 error_description; |
| 1916 GetContentClient()->renderer()->GetNavigationErrorStrings( | 1916 GetContentClient()->renderer()->GetNavigationErrorStrings( |
| 1917 render_view_.get(), | 1917 render_view_.get(), |
| 1918 frame, | 1918 frame, |
| 1919 failed_request, | 1919 failed_request, |
| 1920 error, | 1920 error, |
| 1921 NULL, | 1921 NULL, |
| 1922 &error_description); | 1922 &error_description); |
| 1923 Send(new FrameHostMsg_DidFailLoadWithError(routing_id_, | 1923 Send(new FrameHostMsg_DidFailLoadWithError(routing_id_, |
| 1924 failed_request.url(), | 1924 failed_request.url(), |
| 1925 error.reason, | 1925 error.reason, |
| 1926 error_description)); | 1926 error_description)); |
| 1927 } | 1927 } |
| 1928 | 1928 |
| 1929 void RenderFrameImpl::didFinishLoad(blink::WebFrame* frame) { | 1929 void RenderFrameImpl::didFinishLoad(blink::WebLocalFrame* frame) { |
| 1930 DCHECK(!frame_ || frame_ == frame); | 1930 DCHECK(!frame_ || frame_ == frame); |
| 1931 WebDataSource* ds = frame->dataSource(); | 1931 WebDataSource* ds = frame->dataSource(); |
| 1932 DocumentState* document_state = DocumentState::FromDataSource(ds); | 1932 DocumentState* document_state = DocumentState::FromDataSource(ds); |
| 1933 if (document_state->finish_load_time().is_null()) { | 1933 if (document_state->finish_load_time().is_null()) { |
| 1934 if (!frame->parent()) { | 1934 if (!frame->parent()) { |
| 1935 TRACE_EVENT_INSTANT0("WebCore", "LoadFinished", | 1935 TRACE_EVENT_INSTANT0("WebCore", "LoadFinished", |
| 1936 TRACE_EVENT_SCOPE_PROCESS); | 1936 TRACE_EVENT_SCOPE_PROCESS); |
| 1937 } | 1937 } |
| 1938 document_state->set_finish_load_time(Time::Now()); | 1938 document_state->set_finish_load_time(Time::Now()); |
| 1939 } | 1939 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1963 didCreateDataSource(frame, frame->dataSource()); | 1963 didCreateDataSource(frame, frame->dataSource()); |
| 1964 | 1964 |
| 1965 DocumentState* document_state = | 1965 DocumentState* document_state = |
| 1966 DocumentState::FromDataSource(frame->dataSource()); | 1966 DocumentState::FromDataSource(frame->dataSource()); |
| 1967 NavigationState* new_state = document_state->navigation_state(); | 1967 NavigationState* new_state = document_state->navigation_state(); |
| 1968 new_state->set_was_within_same_page(true); | 1968 new_state->set_was_within_same_page(true); |
| 1969 | 1969 |
| 1970 didCommitProvisionalLoad(frame, item, commit_type); | 1970 didCommitProvisionalLoad(frame, item, commit_type); |
| 1971 } | 1971 } |
| 1972 | 1972 |
| 1973 void RenderFrameImpl::didNavigateWithinPage(blink::WebFrame* frame, | 1973 void RenderFrameImpl::didNavigateWithinPage(blink::WebLocalFrame* frame, |
| 1974 bool is_new_navigation) { | 1974 bool is_new_navigation) { |
| 1975 DCHECK(!frame_ || frame_ == frame); | 1975 DCHECK(!frame_ || frame_ == frame); |
| 1976 // If this was a reference fragment navigation that we initiated, then we | 1976 // If this was a reference fragment navigation that we initiated, then we |
| 1977 // could end up having a non-null pending navigation params. We just need to | 1977 // could end up having a non-null pending navigation params. We just need to |
| 1978 // update the ExtraData on the datasource so that others who read the | 1978 // update the ExtraData on the datasource so that others who read the |
| 1979 // ExtraData will get the new NavigationState. Similarly, if we did not | 1979 // ExtraData will get the new NavigationState. Similarly, if we did not |
| 1980 // initiate this navigation, then we need to take care to reset any pre- | 1980 // initiate this navigation, then we need to take care to reset any pre- |
| 1981 // existing navigation state to a content-initiated navigation state. | 1981 // existing navigation state to a content-initiated navigation state. |
| 1982 // DidCreateDataSource conveniently takes care of this for us. | 1982 // DidCreateDataSource conveniently takes care of this for us. |
| 1983 didCreateDataSource(frame, frame->dataSource()); | 1983 didCreateDataSource(frame, frame->dataSource()); |
| 1984 | 1984 |
| 1985 DocumentState* document_state = | 1985 DocumentState* document_state = |
| 1986 DocumentState::FromDataSource(frame->dataSource()); | 1986 DocumentState::FromDataSource(frame->dataSource()); |
| 1987 NavigationState* new_state = document_state->navigation_state(); | 1987 NavigationState* new_state = document_state->navigation_state(); |
| 1988 new_state->set_was_within_same_page(true); | 1988 new_state->set_was_within_same_page(true); |
| 1989 | 1989 |
| 1990 didCommitProvisionalLoad(frame, is_new_navigation); | 1990 didCommitProvisionalLoad(frame, is_new_navigation); |
| 1991 } | 1991 } |
| 1992 | 1992 |
| 1993 void RenderFrameImpl::didUpdateCurrentHistoryItem(blink::WebFrame* frame) { | 1993 void RenderFrameImpl::didUpdateCurrentHistoryItem(blink::WebLocalFrame* frame) { |
| 1994 DCHECK(!frame_ || frame_ == frame); | 1994 DCHECK(!frame_ || frame_ == frame); |
| 1995 // TODO(nasko): Move implementation here. Needed methods: | 1995 // TODO(nasko): Move implementation here. Needed methods: |
| 1996 // * StartNavStateSyncTimerIfNecessary | 1996 // * StartNavStateSyncTimerIfNecessary |
| 1997 render_view_->didUpdateCurrentHistoryItem(frame); | 1997 render_view_->didUpdateCurrentHistoryItem(frame); |
| 1998 } | 1998 } |
| 1999 | 1999 |
| 2000 void RenderFrameImpl::didChangeSelection(bool is_empty_selection) { | 2000 void RenderFrameImpl::didChangeSelection(bool is_empty_selection) { |
| 2001 if (!GetRenderWidget()->handling_input_event() && !handling_select_range_) | 2001 if (!GetRenderWidget()->handling_input_event() && !handling_select_range_) |
| 2002 return; | 2002 return; |
| 2003 | 2003 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2060 #endif | 2060 #endif |
| 2061 | 2061 |
| 2062 Send(new FrameHostMsg_ContextMenu(routing_id_, params)); | 2062 Send(new FrameHostMsg_ContextMenu(routing_id_, params)); |
| 2063 } | 2063 } |
| 2064 | 2064 |
| 2065 void RenderFrameImpl::clearContextMenu() { | 2065 void RenderFrameImpl::clearContextMenu() { |
| 2066 context_menu_node_.reset(); | 2066 context_menu_node_.reset(); |
| 2067 } | 2067 } |
| 2068 | 2068 |
| 2069 void RenderFrameImpl::willRequestAfterPreconnect( | 2069 void RenderFrameImpl::willRequestAfterPreconnect( |
| 2070 blink::WebFrame* frame, | 2070 blink::WebLocalFrame* frame, |
| 2071 blink::WebURLRequest& request) { | 2071 blink::WebURLRequest& request) { |
| 2072 DCHECK(!frame_ || frame_ == frame); | 2072 DCHECK(!frame_ || frame_ == frame); |
| 2073 // FIXME(kohei): This will never be set. | 2073 // FIXME(kohei): This will never be set. |
| 2074 WebString custom_user_agent; | 2074 WebString custom_user_agent; |
| 2075 | 2075 |
| 2076 DCHECK(!request.extraData()); | 2076 DCHECK(!request.extraData()); |
| 2077 | 2077 |
| 2078 bool was_after_preconnect_request = true; | 2078 bool was_after_preconnect_request = true; |
| 2079 // The args after |was_after_preconnect_request| are not used, and set to | 2079 // The args after |was_after_preconnect_request| are not used, and set to |
| 2080 // correct values at |willSendRequest|. | 2080 // correct values at |willSendRequest|. |
| 2081 RequestExtraData* extra_data = new RequestExtraData(); | 2081 RequestExtraData* extra_data = new RequestExtraData(); |
| 2082 extra_data->set_custom_user_agent(custom_user_agent); | 2082 extra_data->set_custom_user_agent(custom_user_agent); |
| 2083 extra_data->set_was_after_preconnect_request(was_after_preconnect_request); | 2083 extra_data->set_was_after_preconnect_request(was_after_preconnect_request); |
| 2084 request.setExtraData(extra_data); | 2084 request.setExtraData(extra_data); |
| 2085 } | 2085 } |
| 2086 | 2086 |
| 2087 void RenderFrameImpl::willSendRequest( | 2087 void RenderFrameImpl::willSendRequest( |
| 2088 blink::WebFrame* frame, | 2088 blink::WebLocalFrame* frame, |
| 2089 unsigned identifier, | 2089 unsigned identifier, |
| 2090 blink::WebURLRequest& request, | 2090 blink::WebURLRequest& request, |
| 2091 const blink::WebURLResponse& redirect_response) { | 2091 const blink::WebURLResponse& redirect_response) { |
| 2092 DCHECK(!frame_ || frame_ == frame); | 2092 DCHECK(!frame_ || frame_ == frame); |
| 2093 // The request my be empty during tests. | 2093 // The request my be empty during tests. |
| 2094 if (request.url().isEmpty()) | 2094 if (request.url().isEmpty()) |
| 2095 return; | 2095 return; |
| 2096 | 2096 |
| 2097 WebFrame* top_frame = frame->top(); | 2097 WebFrame* top_frame = frame->top(); |
| 2098 if (!top_frame) | 2098 if (!top_frame) |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2236 WebString::fromUTF8(i.values())); | 2236 WebString::fromUTF8(i.values())); |
| 2237 } | 2237 } |
| 2238 } | 2238 } |
| 2239 } | 2239 } |
| 2240 | 2240 |
| 2241 if (!render_view_->renderer_preferences_.enable_referrers) | 2241 if (!render_view_->renderer_preferences_.enable_referrers) |
| 2242 request.setHTTPReferrer(WebString(), blink::WebReferrerPolicyDefault); | 2242 request.setHTTPReferrer(WebString(), blink::WebReferrerPolicyDefault); |
| 2243 } | 2243 } |
| 2244 | 2244 |
| 2245 void RenderFrameImpl::didReceiveResponse( | 2245 void RenderFrameImpl::didReceiveResponse( |
| 2246 blink::WebFrame* frame, | 2246 blink::WebLocalFrame* frame, |
| 2247 unsigned identifier, | 2247 unsigned identifier, |
| 2248 const blink::WebURLResponse& response) { | 2248 const blink::WebURLResponse& response) { |
| 2249 DCHECK(!frame_ || frame_ == frame); | 2249 DCHECK(!frame_ || frame_ == frame); |
| 2250 // Only do this for responses that correspond to a provisional data source | 2250 // Only do this for responses that correspond to a provisional data source |
| 2251 // of the top-most frame. If we have a provisional data source, then we | 2251 // of the top-most frame. If we have a provisional data source, then we |
| 2252 // can't have any sub-resources yet, so we know that this response must | 2252 // can't have any sub-resources yet, so we know that this response must |
| 2253 // correspond to a frame load. | 2253 // correspond to a frame load. |
| 2254 if (!frame->provisionalDataSource() || frame->parent()) | 2254 if (!frame->provisionalDataSource() || frame->parent()) |
| 2255 return; | 2255 return; |
| 2256 | 2256 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 2282 } | 2282 } |
| 2283 InternalDocumentStateData* internal_data = | 2283 InternalDocumentStateData* internal_data = |
| 2284 InternalDocumentStateData::FromDocumentState(document_state); | 2284 InternalDocumentStateData::FromDocumentState(document_state); |
| 2285 internal_data->set_http_status_code(http_status_code); | 2285 internal_data->set_http_status_code(http_status_code); |
| 2286 // Whether or not the http status code actually corresponds to an error is | 2286 // Whether or not the http status code actually corresponds to an error is |
| 2287 // only checked when the page is done loading, if |use_error_page| is | 2287 // only checked when the page is done loading, if |use_error_page| is |
| 2288 // still true. | 2288 // still true. |
| 2289 internal_data->set_use_error_page(true); | 2289 internal_data->set_use_error_page(true); |
| 2290 } | 2290 } |
| 2291 | 2291 |
| 2292 void RenderFrameImpl::didFinishResourceLoad(blink::WebFrame* frame, | 2292 void RenderFrameImpl::didFinishResourceLoad(blink::WebLocalFrame* frame, |
| 2293 unsigned identifier) { | 2293 unsigned identifier) { |
| 2294 DCHECK(!frame_ || frame_ == frame); | 2294 DCHECK(!frame_ || frame_ == frame); |
| 2295 // TODO(nasko): Move implementation here. Needed state: | 2295 // TODO(nasko): Move implementation here. Needed state: |
| 2296 // * devtools_agent_ | 2296 // * devtools_agent_ |
| 2297 // Needed methods: | 2297 // Needed methods: |
| 2298 // * LoadNavigationErrorPage | 2298 // * LoadNavigationErrorPage |
| 2299 render_view_->didFinishResourceLoad(frame, identifier); | 2299 render_view_->didFinishResourceLoad(frame, identifier); |
| 2300 } | 2300 } |
| 2301 | 2301 |
| 2302 void RenderFrameImpl::didLoadResourceFromMemoryCache( | 2302 void RenderFrameImpl::didLoadResourceFromMemoryCache( |
| 2303 blink::WebFrame* frame, | 2303 blink::WebLocalFrame* frame, |
| 2304 const blink::WebURLRequest& request, | 2304 const blink::WebURLRequest& request, |
| 2305 const blink::WebURLResponse& response) { | 2305 const blink::WebURLResponse& response) { |
| 2306 DCHECK(!frame_ || frame_ == frame); | 2306 DCHECK(!frame_ || frame_ == frame); |
| 2307 // The recipients of this message have no use for data: URLs: they don't | 2307 // The recipients of this message have no use for data: URLs: they don't |
| 2308 // affect the page's insecure content list and are not in the disk cache. To | 2308 // affect the page's insecure content list and are not in the disk cache. To |
| 2309 // prevent large (1M+) data: URLs from crashing in the IPC system, we simply | 2309 // prevent large (1M+) data: URLs from crashing in the IPC system, we simply |
| 2310 // filter them out here. | 2310 // filter them out here. |
| 2311 GURL url(request.url()); | 2311 GURL url(request.url()); |
| 2312 if (url.SchemeIs("data")) | 2312 if (url.SchemeIs("data")) |
| 2313 return; | 2313 return; |
| 2314 | 2314 |
| 2315 // Let the browser know we loaded a resource from the memory cache. This | 2315 // Let the browser know we loaded a resource from the memory cache. This |
| 2316 // message is needed to display the correct SSL indicators. | 2316 // message is needed to display the correct SSL indicators. |
| 2317 render_view_->Send(new ViewHostMsg_DidLoadResourceFromMemoryCache( | 2317 render_view_->Send(new ViewHostMsg_DidLoadResourceFromMemoryCache( |
| 2318 render_view_->GetRoutingID(), | 2318 render_view_->GetRoutingID(), |
| 2319 url, | 2319 url, |
| 2320 response.securityInfo(), | 2320 response.securityInfo(), |
| 2321 request.httpMethod().utf8(), | 2321 request.httpMethod().utf8(), |
| 2322 response.mimeType().utf8(), | 2322 response.mimeType().utf8(), |
| 2323 ResourceType::FromTargetType(request.targetType()))); | 2323 ResourceType::FromTargetType(request.targetType()))); |
| 2324 } | 2324 } |
| 2325 | 2325 |
| 2326 void RenderFrameImpl::didDisplayInsecureContent(blink::WebFrame* frame) { | 2326 void RenderFrameImpl::didDisplayInsecureContent(blink::WebLocalFrame* frame) { |
| 2327 DCHECK(!frame_ || frame_ == frame); | 2327 DCHECK(!frame_ || frame_ == frame); |
| 2328 render_view_->Send(new ViewHostMsg_DidDisplayInsecureContent( | 2328 render_view_->Send(new ViewHostMsg_DidDisplayInsecureContent( |
| 2329 render_view_->GetRoutingID())); | 2329 render_view_->GetRoutingID())); |
| 2330 } | 2330 } |
| 2331 | 2331 |
| 2332 void RenderFrameImpl::didRunInsecureContent( | 2332 void RenderFrameImpl::didRunInsecureContent( |
| 2333 blink::WebFrame* frame, | 2333 blink::WebLocalFrame* frame, |
| 2334 const blink::WebSecurityOrigin& origin, | 2334 const blink::WebSecurityOrigin& origin, |
| 2335 const blink::WebURL& target) { | 2335 const blink::WebURL& target) { |
| 2336 DCHECK(!frame_ || frame_ == frame); | 2336 DCHECK(!frame_ || frame_ == frame); |
| 2337 render_view_->Send(new ViewHostMsg_DidRunInsecureContent( | 2337 render_view_->Send(new ViewHostMsg_DidRunInsecureContent( |
| 2338 render_view_->GetRoutingID(), | 2338 render_view_->GetRoutingID(), |
| 2339 origin.toString().utf8(), | 2339 origin.toString().utf8(), |
| 2340 target)); | 2340 target)); |
| 2341 } | 2341 } |
| 2342 | 2342 |
| 2343 void RenderFrameImpl::didAbortLoading(blink::WebFrame* frame) { | 2343 void RenderFrameImpl::didAbortLoading(blink::WebLocalFrame* frame) { |
| 2344 DCHECK(!frame_ || frame_ == frame); | 2344 DCHECK(!frame_ || frame_ == frame); |
| 2345 #if defined(ENABLE_PLUGINS) | 2345 #if defined(ENABLE_PLUGINS) |
| 2346 if (frame != render_view_->webview()->mainFrame()) | 2346 if (frame != render_view_->webview()->mainFrame()) |
| 2347 return; | 2347 return; |
| 2348 PluginChannelHost::Broadcast( | 2348 PluginChannelHost::Broadcast( |
| 2349 new PluginHostMsg_DidAbortLoading(render_view_->GetRoutingID())); | 2349 new PluginHostMsg_DidAbortLoading(render_view_->GetRoutingID())); |
| 2350 #endif | 2350 #endif |
| 2351 } | 2351 } |
| 2352 | 2352 |
| 2353 void RenderFrameImpl::didCreateScriptContext(blink::WebFrame* frame, | 2353 void RenderFrameImpl::didCreateScriptContext(blink::WebLocalFrame* frame, |
| 2354 v8::Handle<v8::Context> context, | 2354 v8::Handle<v8::Context> context, |
| 2355 int extension_group, | 2355 int extension_group, |
| 2356 int world_id) { | 2356 int world_id) { |
| 2357 DCHECK(!frame_ || frame_ == frame); | 2357 DCHECK(!frame_ || frame_ == frame); |
| 2358 GetContentClient()->renderer()->DidCreateScriptContext( | 2358 GetContentClient()->renderer()->DidCreateScriptContext( |
| 2359 frame, context, extension_group, world_id); | 2359 frame, context, extension_group, world_id); |
| 2360 } | 2360 } |
| 2361 | 2361 |
| 2362 void RenderFrameImpl::willReleaseScriptContext(blink::WebFrame* frame, | 2362 void RenderFrameImpl::willReleaseScriptContext(blink::WebLocalFrame* frame, |
| 2363 v8::Handle<v8::Context> context, | 2363 v8::Handle<v8::Context> context, |
| 2364 int world_id) { | 2364 int world_id) { |
| 2365 DCHECK(!frame_ || frame_ == frame); | 2365 DCHECK(!frame_ || frame_ == frame); |
| 2366 | 2366 |
| 2367 FOR_EACH_OBSERVER(RenderFrameObserver, | 2367 FOR_EACH_OBSERVER(RenderFrameObserver, |
| 2368 observers_, | 2368 observers_, |
| 2369 WillReleaseScriptContext(context, world_id)); | 2369 WillReleaseScriptContext(context, world_id)); |
| 2370 } | 2370 } |
| 2371 | 2371 |
| 2372 void RenderFrameImpl::didFirstVisuallyNonEmptyLayout(blink::WebFrame* frame) { | 2372 void RenderFrameImpl::didFirstVisuallyNonEmptyLayout( |
| 2373 blink::WebLocalFrame* frame) { |
| 2373 DCHECK(!frame_ || frame_ == frame); | 2374 DCHECK(!frame_ || frame_ == frame); |
| 2374 render_view_->didFirstVisuallyNonEmptyLayout(frame); | 2375 render_view_->didFirstVisuallyNonEmptyLayout(frame); |
| 2375 } | 2376 } |
| 2376 | 2377 |
| 2377 void RenderFrameImpl::didChangeContentsSize(blink::WebFrame* frame, | 2378 void RenderFrameImpl::didChangeContentsSize(blink::WebLocalFrame* frame, |
| 2378 const blink::WebSize& size) { | 2379 const blink::WebSize& size) { |
| 2379 DCHECK(!frame_ || frame_ == frame); | 2380 DCHECK(!frame_ || frame_ == frame); |
| 2380 // TODO(nasko): Move implementation here. Needed state: | 2381 // TODO(nasko): Move implementation here. Needed state: |
| 2381 // * cached_has_main_frame_horizontal_scrollbar_ | 2382 // * cached_has_main_frame_horizontal_scrollbar_ |
| 2382 // * cached_has_main_frame_vertical_scrollbar_ | 2383 // * cached_has_main_frame_vertical_scrollbar_ |
| 2383 render_view_->didChangeContentsSize(frame, size); | 2384 render_view_->didChangeContentsSize(frame, size); |
| 2384 } | 2385 } |
| 2385 | 2386 |
| 2386 void RenderFrameImpl::didChangeScrollOffset(blink::WebFrame* frame) { | 2387 void RenderFrameImpl::didChangeScrollOffset(blink::WebLocalFrame* frame) { |
| 2387 DCHECK(!frame_ || frame_ == frame); | 2388 DCHECK(!frame_ || frame_ == frame); |
| 2388 // TODO(nasko): Move implementation here. Needed methods: | 2389 // TODO(nasko): Move implementation here. Needed methods: |
| 2389 // * StartNavStateSyncTimerIfNecessary | 2390 // * StartNavStateSyncTimerIfNecessary |
| 2390 render_view_->didChangeScrollOffset(frame); | 2391 render_view_->didChangeScrollOffset(frame); |
| 2391 } | 2392 } |
| 2392 | 2393 |
| 2393 void RenderFrameImpl::willInsertBody(blink::WebFrame* frame) { | 2394 void RenderFrameImpl::willInsertBody(blink::WebLocalFrame* frame) { |
| 2394 DCHECK(!frame_ || frame_ == frame); | 2395 DCHECK(!frame_ || frame_ == frame); |
| 2395 if (!frame->parent()) { | 2396 if (!frame->parent()) { |
| 2396 render_view_->Send(new ViewHostMsg_WillInsertBody( | 2397 render_view_->Send(new ViewHostMsg_WillInsertBody( |
| 2397 render_view_->GetRoutingID())); | 2398 render_view_->GetRoutingID())); |
| 2398 } | 2399 } |
| 2399 } | 2400 } |
| 2400 | 2401 |
| 2401 void RenderFrameImpl::reportFindInPageMatchCount(int request_id, | 2402 void RenderFrameImpl::reportFindInPageMatchCount(int request_id, |
| 2402 int count, | 2403 int count, |
| 2403 bool final_update) { | 2404 bool final_update) { |
| 2404 int active_match_ordinal = -1; // -1 = don't update active match ordinal | 2405 int active_match_ordinal = -1; // -1 = don't update active match ordinal |
| 2405 if (!count) | 2406 if (!count) |
| 2406 active_match_ordinal = 0; | 2407 active_match_ordinal = 0; |
| 2407 | 2408 |
| 2408 render_view_->Send(new ViewHostMsg_Find_Reply( | 2409 render_view_->Send(new ViewHostMsg_Find_Reply( |
| 2409 render_view_->GetRoutingID(), request_id, count, | 2410 render_view_->GetRoutingID(), request_id, count, |
| 2410 gfx::Rect(), active_match_ordinal, final_update)); | 2411 gfx::Rect(), active_match_ordinal, final_update)); |
| 2411 } | 2412 } |
| 2412 | 2413 |
| 2413 void RenderFrameImpl::reportFindInPageSelection( | 2414 void RenderFrameImpl::reportFindInPageSelection( |
| 2414 int request_id, | 2415 int request_id, |
| 2415 int active_match_ordinal, | 2416 int active_match_ordinal, |
| 2416 const blink::WebRect& selection_rect) { | 2417 const blink::WebRect& selection_rect) { |
| 2417 render_view_->Send(new ViewHostMsg_Find_Reply( | 2418 render_view_->Send(new ViewHostMsg_Find_Reply( |
| 2418 render_view_->GetRoutingID(), request_id, -1, selection_rect, | 2419 render_view_->GetRoutingID(), request_id, -1, selection_rect, |
| 2419 active_match_ordinal, false)); | 2420 active_match_ordinal, false)); |
| 2420 } | 2421 } |
| 2421 | 2422 |
| 2422 void RenderFrameImpl::requestStorageQuota( | 2423 void RenderFrameImpl::requestStorageQuota( |
| 2423 blink::WebFrame* frame, | 2424 blink::WebLocalFrame* frame, |
| 2424 blink::WebStorageQuotaType type, | 2425 blink::WebStorageQuotaType type, |
| 2425 unsigned long long requested_size, | 2426 unsigned long long requested_size, |
| 2426 blink::WebStorageQuotaCallbacks callbacks) { | 2427 blink::WebStorageQuotaCallbacks callbacks) { |
| 2427 DCHECK(!frame_ || frame_ == frame); | 2428 DCHECK(!frame_ || frame_ == frame); |
| 2428 WebSecurityOrigin origin = frame->document().securityOrigin(); | 2429 WebSecurityOrigin origin = frame->document().securityOrigin(); |
| 2429 if (origin.isUnique()) { | 2430 if (origin.isUnique()) { |
| 2430 // Unique origins cannot store persistent state. | 2431 // Unique origins cannot store persistent state. |
| 2431 callbacks.didFail(blink::WebStorageQuotaErrorAbort); | 2432 callbacks.didFail(blink::WebStorageQuotaErrorAbort); |
| 2432 return; | 2433 return; |
| 2433 } | 2434 } |
| 2434 ChildThread::current()->quota_dispatcher()->RequestStorageQuota( | 2435 ChildThread::current()->quota_dispatcher()->RequestStorageQuota( |
| 2435 render_view_->GetRoutingID(), GURL(origin.toString()), | 2436 render_view_->GetRoutingID(), GURL(origin.toString()), |
| 2436 static_cast<quota::StorageType>(type), requested_size, | 2437 static_cast<quota::StorageType>(type), requested_size, |
| 2437 QuotaDispatcher::CreateWebStorageQuotaCallbacksWrapper(callbacks)); | 2438 QuotaDispatcher::CreateWebStorageQuotaCallbacksWrapper(callbacks)); |
| 2438 } | 2439 } |
| 2439 | 2440 |
| 2440 void RenderFrameImpl::willOpenSocketStream( | 2441 void RenderFrameImpl::willOpenSocketStream( |
| 2441 blink::WebSocketStreamHandle* handle) { | 2442 blink::WebSocketStreamHandle* handle) { |
| 2442 WebSocketStreamHandleImpl* impl = | 2443 WebSocketStreamHandleImpl* impl = |
| 2443 static_cast<WebSocketStreamHandleImpl*>(handle); | 2444 static_cast<WebSocketStreamHandleImpl*>(handle); |
| 2444 impl->SetUserData(handle, new SocketStreamHandleData(routing_id_)); | 2445 impl->SetUserData(handle, new SocketStreamHandleData(routing_id_)); |
| 2445 } | 2446 } |
| 2446 | 2447 |
| 2447 void RenderFrameImpl::willStartUsingPeerConnectionHandler( | 2448 void RenderFrameImpl::willStartUsingPeerConnectionHandler( |
| 2448 blink::WebFrame* frame, | 2449 blink::WebLocalFrame* frame, |
| 2449 blink::WebRTCPeerConnectionHandler* handler) { | 2450 blink::WebRTCPeerConnectionHandler* handler) { |
| 2450 DCHECK(!frame_ || frame_ == frame); | 2451 DCHECK(!frame_ || frame_ == frame); |
| 2451 #if defined(ENABLE_WEBRTC) | 2452 #if defined(ENABLE_WEBRTC) |
| 2452 static_cast<RTCPeerConnectionHandler*>(handler)->associateWithFrame(frame); | 2453 static_cast<RTCPeerConnectionHandler*>(handler)->associateWithFrame(frame); |
| 2453 #endif | 2454 #endif |
| 2454 } | 2455 } |
| 2455 | 2456 |
| 2456 bool RenderFrameImpl::willCheckAndDispatchMessageEvent( | 2457 bool RenderFrameImpl::willCheckAndDispatchMessageEvent( |
| 2457 blink::WebFrame* sourceFrame, | 2458 blink::WebLocalFrame* sourceFrame, |
| 2458 blink::WebFrame* targetFrame, | 2459 blink::WebFrame* targetFrame, |
| 2459 blink::WebSecurityOrigin targetOrigin, | 2460 blink::WebSecurityOrigin targetOrigin, |
| 2460 blink::WebDOMMessageEvent event) { | 2461 blink::WebDOMMessageEvent event) { |
| 2461 DCHECK(!frame_ || frame_ == targetFrame); | 2462 DCHECK(!frame_ || frame_ == targetFrame); |
| 2462 // TODO(nasko): Move implementation here. Needed state: | 2463 // TODO(nasko): Move implementation here. Needed state: |
| 2463 // * is_swapped_out_ | 2464 // * is_swapped_out_ |
| 2464 return render_view_->willCheckAndDispatchMessageEvent( | 2465 return render_view_->willCheckAndDispatchMessageEvent( |
| 2465 sourceFrame, targetFrame, targetOrigin, event); | 2466 sourceFrame, targetFrame, targetOrigin, event); |
| 2466 } | 2467 } |
| 2467 | 2468 |
| 2468 blink::WebString RenderFrameImpl::userAgentOverride( | 2469 blink::WebString RenderFrameImpl::userAgentOverride(blink::WebLocalFrame* frame, |
| 2469 blink::WebFrame* frame, | 2470 const blink::WebURL& url) { |
| 2470 const blink::WebURL& url) { | |
| 2471 DCHECK(!frame_ || frame_ == frame); | 2471 DCHECK(!frame_ || frame_ == frame); |
| 2472 if (!render_view_->webview() || !render_view_->webview()->mainFrame() || | 2472 if (!render_view_->webview() || !render_view_->webview()->mainFrame() || |
| 2473 render_view_->renderer_preferences_.user_agent_override.empty()) { | 2473 render_view_->renderer_preferences_.user_agent_override.empty()) { |
| 2474 return blink::WebString(); | 2474 return blink::WebString(); |
| 2475 } | 2475 } |
| 2476 | 2476 |
| 2477 // If we're in the middle of committing a load, the data source we need | 2477 // If we're in the middle of committing a load, the data source we need |
| 2478 // will still be provisional. | 2478 // will still be provisional. |
| 2479 WebFrame* main_frame = render_view_->webview()->mainFrame(); | 2479 WebFrame* main_frame = render_view_->webview()->mainFrame(); |
| 2480 WebDataSource* data_source = NULL; | 2480 WebDataSource* data_source = NULL; |
| 2481 if (main_frame->provisionalDataSource()) | 2481 if (main_frame->provisionalDataSource()) |
| 2482 data_source = main_frame->provisionalDataSource(); | 2482 data_source = main_frame->provisionalDataSource(); |
| 2483 else | 2483 else |
| 2484 data_source = main_frame->dataSource(); | 2484 data_source = main_frame->dataSource(); |
| 2485 | 2485 |
| 2486 InternalDocumentStateData* internal_data = data_source ? | 2486 InternalDocumentStateData* internal_data = data_source ? |
| 2487 InternalDocumentStateData::FromDataSource(data_source) : NULL; | 2487 InternalDocumentStateData::FromDataSource(data_source) : NULL; |
| 2488 if (internal_data && internal_data->is_overriding_user_agent()) | 2488 if (internal_data && internal_data->is_overriding_user_agent()) |
| 2489 return WebString::fromUTF8( | 2489 return WebString::fromUTF8( |
| 2490 render_view_->renderer_preferences_.user_agent_override); | 2490 render_view_->renderer_preferences_.user_agent_override); |
| 2491 return blink::WebString(); | 2491 return blink::WebString(); |
| 2492 } | 2492 } |
| 2493 | 2493 |
| 2494 blink::WebString RenderFrameImpl::doNotTrackValue(blink::WebFrame* frame) { | 2494 blink::WebString RenderFrameImpl::doNotTrackValue(blink::WebLocalFrame* frame) { |
| 2495 DCHECK(!frame_ || frame_ == frame); | 2495 DCHECK(!frame_ || frame_ == frame); |
| 2496 if (render_view_->renderer_preferences_.enable_do_not_track) | 2496 if (render_view_->renderer_preferences_.enable_do_not_track) |
| 2497 return WebString::fromUTF8("1"); | 2497 return WebString::fromUTF8("1"); |
| 2498 return WebString(); | 2498 return WebString(); |
| 2499 } | 2499 } |
| 2500 | 2500 |
| 2501 bool RenderFrameImpl::allowWebGL(blink::WebFrame* frame, bool default_value) { | 2501 bool RenderFrameImpl::allowWebGL(blink::WebLocalFrame* frame, |
| 2502 bool default_value) { |
| 2502 DCHECK(!frame_ || frame_ == frame); | 2503 DCHECK(!frame_ || frame_ == frame); |
| 2503 if (!default_value) | 2504 if (!default_value) |
| 2504 return false; | 2505 return false; |
| 2505 | 2506 |
| 2506 bool blocked = true; | 2507 bool blocked = true; |
| 2507 render_view_->Send(new ViewHostMsg_Are3DAPIsBlocked( | 2508 render_view_->Send(new ViewHostMsg_Are3DAPIsBlocked( |
| 2508 render_view_->GetRoutingID(), | 2509 render_view_->GetRoutingID(), |
| 2509 GURL(frame->top()->document().securityOrigin().toString()), | 2510 GURL(frame->top()->document().securityOrigin().toString()), |
| 2510 THREE_D_API_TYPE_WEBGL, | 2511 THREE_D_API_TYPE_WEBGL, |
| 2511 &blocked)); | 2512 &blocked)); |
| 2512 return !blocked; | 2513 return !blocked; |
| 2513 } | 2514 } |
| 2514 | 2515 |
| 2515 void RenderFrameImpl::didLoseWebGLContext(blink::WebFrame* frame, | 2516 void RenderFrameImpl::didLoseWebGLContext(blink::WebLocalFrame* frame, |
| 2516 int arb_robustness_status_code) { | 2517 int arb_robustness_status_code) { |
| 2517 DCHECK(!frame_ || frame_ == frame); | 2518 DCHECK(!frame_ || frame_ == frame); |
| 2518 render_view_->Send(new ViewHostMsg_DidLose3DContext( | 2519 render_view_->Send(new ViewHostMsg_DidLose3DContext( |
| 2519 GURL(frame->top()->document().securityOrigin().toString()), | 2520 GURL(frame->top()->document().securityOrigin().toString()), |
| 2520 THREE_D_API_TYPE_WEBGL, | 2521 THREE_D_API_TYPE_WEBGL, |
| 2521 arb_robustness_status_code)); | 2522 arb_robustness_status_code)); |
| 2522 } | 2523 } |
| 2523 | 2524 |
| 2524 void RenderFrameImpl::forwardInputEvent(const blink::WebInputEvent* event) { | 2525 void RenderFrameImpl::forwardInputEvent(const blink::WebInputEvent* event) { |
| 2525 Send(new FrameHostMsg_ForwardInputEvent(routing_id_, event)); | 2526 Send(new FrameHostMsg_ForwardInputEvent(routing_id_, event)); |
| (...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3077 selection_text_offset_ = offset; | 3078 selection_text_offset_ = offset; |
| 3078 selection_range_ = range; | 3079 selection_range_ = range; |
| 3079 // This IPC is dispatched by RenderWidetHost, so use its routing ID. | 3080 // This IPC is dispatched by RenderWidetHost, so use its routing ID. |
| 3080 Send(new ViewHostMsg_SelectionChanged( | 3081 Send(new ViewHostMsg_SelectionChanged( |
| 3081 GetRenderWidget()->routing_id(), text, offset, range)); | 3082 GetRenderWidget()->routing_id(), text, offset, range)); |
| 3082 } | 3083 } |
| 3083 GetRenderWidget()->UpdateSelectionBounds(); | 3084 GetRenderWidget()->UpdateSelectionBounds(); |
| 3084 } | 3085 } |
| 3085 | 3086 |
| 3086 } // namespace content | 3087 } // namespace content |
| OLD | NEW |