| 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 |