Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(539)

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 1257553002: [Proof-of-concept] PlzNavigate and Service Worker Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Pass navigation_provider_id Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 406
407 if (url.GetOrigin() != GURL(opener->document().url()).GetOrigin()) 407 if (url.GetOrigin() != GURL(opener->document().url()).GetOrigin())
408 return true; 408 return true;
409 } 409 }
410 return false; 410 return false;
411 } 411 }
412 412
413 WebURLRequest CreateURLRequestForNavigation( 413 WebURLRequest CreateURLRequestForNavigation(
414 const CommonNavigationParams& common_params, 414 const CommonNavigationParams& common_params,
415 scoped_ptr<StreamOverrideParameters> stream_override, 415 scoped_ptr<StreamOverrideParameters> stream_override,
416 int navigation_provider_id,
416 bool is_view_source_mode_enabled) { 417 bool is_view_source_mode_enabled) {
417 WebURLRequest request(common_params.url); 418 WebURLRequest request(common_params.url);
418 if (is_view_source_mode_enabled) 419 if (is_view_source_mode_enabled)
419 request.setCachePolicy(WebURLRequest::ReturnCacheDataElseLoad); 420 request.setCachePolicy(WebURLRequest::ReturnCacheDataElseLoad);
420 421
421 if (common_params.referrer.url.is_valid()) { 422 if (common_params.referrer.url.is_valid()) {
422 WebString web_referrer = WebSecurityPolicy::generateReferrerHeader( 423 WebString web_referrer = WebSecurityPolicy::generateReferrerHeader(
423 common_params.referrer.policy, 424 common_params.referrer.policy,
424 common_params.url, 425 common_params.url,
425 WebString::fromUTF8(common_params.referrer.url.spec())); 426 WebString::fromUTF8(common_params.referrer.url.spec()));
426 if (!web_referrer.isEmpty()) 427 if (!web_referrer.isEmpty())
427 request.setHTTPReferrer(web_referrer, common_params.referrer.policy); 428 request.setHTTPReferrer(web_referrer, common_params.referrer.policy);
428 } 429 }
429 430
430 RequestExtraData* extra_data = new RequestExtraData(); 431 RequestExtraData* extra_data = new RequestExtraData();
431 extra_data->set_stream_override(stream_override.Pass()); 432 extra_data->set_stream_override(stream_override.Pass());
433 extra_data->set_navigation_provider_id(navigation_provider_id);
432 request.setExtraData(extra_data); 434 request.setExtraData(extra_data);
433 435
434 // Set the ui timestamp for this navigation. Currently the timestamp here is 436 // Set the ui timestamp for this navigation. Currently the timestamp here is
435 // only non empty when the navigation was triggered by an Android intent. The 437 // only non empty when the navigation was triggered by an Android intent. The
436 // timestamp is converted to a double version supported by blink. It will be 438 // timestamp is converted to a double version supported by blink. It will be
437 // passed back to the browser in the DidCommitProvisionalLoad and the 439 // passed back to the browser in the DidCommitProvisionalLoad and the
438 // DocumentLoadComplete IPCs. 440 // DocumentLoadComplete IPCs.
439 base::TimeDelta ui_timestamp = common_params.ui_timestamp - base::TimeTicks(); 441 base::TimeDelta ui_timestamp = common_params.ui_timestamp - base::TimeTicks();
440 request.setUiStartTime(ui_timestamp.InSecondsF()); 442 request.setUiStartTime(ui_timestamp.InSecondsF());
441 request.setInputPerfMetricReportPolicy( 443 request.setInputPerfMetricReportPolicy(
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after
1070 1072
1071 void RenderFrameImpl::OnNavigate( 1073 void RenderFrameImpl::OnNavigate(
1072 const CommonNavigationParams& common_params, 1074 const CommonNavigationParams& common_params,
1073 const StartNavigationParams& start_params, 1075 const StartNavigationParams& start_params,
1074 const RequestNavigationParams& request_params) { 1076 const RequestNavigationParams& request_params) {
1075 DCHECK(!base::CommandLine::ForCurrentProcess()->HasSwitch( 1077 DCHECK(!base::CommandLine::ForCurrentProcess()->HasSwitch(
1076 switches::kEnableBrowserSideNavigation)); 1078 switches::kEnableBrowserSideNavigation));
1077 TRACE_EVENT2("navigation", "RenderFrameImpl::OnNavigate", "id", routing_id_, 1079 TRACE_EVENT2("navigation", "RenderFrameImpl::OnNavigate", "id", routing_id_,
1078 "url", common_params.url.possibly_invalid_spec()); 1080 "url", common_params.url.possibly_invalid_spec());
1079 NavigateInternal(common_params, start_params, request_params, 1081 NavigateInternal(common_params, start_params, request_params,
1080 scoped_ptr<StreamOverrideParameters>()); 1082 scoped_ptr<StreamOverrideParameters>(),
1083 kInvalidServiceWorkerProviderId);
1081 } 1084 }
1082 1085
1083 void RenderFrameImpl::NavigateToSwappedOutURL() { 1086 void RenderFrameImpl::NavigateToSwappedOutURL() {
1084 // We use loadRequest instead of loadHTMLString because the former commits 1087 // We use loadRequest instead of loadHTMLString because the former commits
1085 // synchronously. Otherwise a new navigation can interrupt the navigation 1088 // synchronously. Otherwise a new navigation can interrupt the navigation
1086 // to kSwappedOutURL. If that happens to be to the page we had been 1089 // to kSwappedOutURL. If that happens to be to the page we had been
1087 // showing, then WebKit will never send a commit and we'll be left spinning. 1090 // showing, then WebKit will never send a commit and we'll be left spinning.
1088 // Set the is_swapped_out_ bit to true, so IPC filtering is in effect and 1091 // Set the is_swapped_out_ bit to true, so IPC filtering is in effect and
1089 // the navigation to swappedout:// is not announced to the browser side. 1092 // the navigation to swappedout:// is not announced to the browser side.
1090 is_swapped_out_ = true; 1093 is_swapped_out_ = true;
(...skipping 1412 matching lines...) Expand 10 before | Expand all | Expand 10 after
2503 // does not exist (When navigation happens within a page, the provider already 2506 // does not exist (When navigation happens within a page, the provider already
2504 // exists). 2507 // exists).
2505 if (!ServiceWorkerNetworkProvider::FromDocumentState( 2508 if (!ServiceWorkerNetworkProvider::FromDocumentState(
2506 DocumentState::FromDataSource(datasource))) { 2509 DocumentState::FromDataSource(datasource))) {
2507 ServiceWorkerProviderType provider_type = 2510 ServiceWorkerProviderType provider_type =
2508 SERVICE_WORKER_PROVIDER_FOR_WINDOW; 2511 SERVICE_WORKER_PROVIDER_FOR_WINDOW;
2509 if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) == 2512 if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) ==
2510 blink::WebSandboxFlags::Origin) { 2513 blink::WebSandboxFlags::Origin) {
2511 provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME; 2514 provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME;
2512 } 2515 }
2516 const WebURLRequest& original_request = datasource->originalRequest();
2517 int navigation_provider_id = kInvalidServiceWorkerProviderId;
2518 if (original_request.extraData()) {
2519 RequestExtraData* extra_data =
2520 static_cast<RequestExtraData*>(original_request.extraData());
2521 navigation_provider_id = extra_data->navigation_provider_id();
2522 }
2513 scoped_ptr<ServiceWorkerNetworkProvider> network_provider( 2523 scoped_ptr<ServiceWorkerNetworkProvider> network_provider(
2514 new ServiceWorkerNetworkProvider(routing_id_, provider_type)); 2524 new ServiceWorkerNetworkProvider(routing_id_, provider_type,
2525 navigation_provider_id));
2526
2515 ServiceWorkerNetworkProvider::AttachToDocumentState( 2527 ServiceWorkerNetworkProvider::AttachToDocumentState(
2516 DocumentState::FromDataSource(datasource), 2528 DocumentState::FromDataSource(datasource),
2517 network_provider.Pass()); 2529 network_provider.Pass());
2518 } 2530 }
2519 } 2531 }
2520 2532
2521 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame, 2533 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame,
2522 double triggering_event_time) { 2534 double triggering_event_time) {
2523 DCHECK(!frame_ || frame_ == frame); 2535 DCHECK(!frame_ || frame_ == frame);
2524 WebDataSource* ds = frame->provisionalDataSource(); 2536 WebDataSource* ds = frame->provisionalDataSource();
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
3191 3203
3192 // The request's extra data may indicate that we should set a custom user 3204 // The request's extra data may indicate that we should set a custom user
3193 // agent. This needs to be done here, after WebKit is through with setting the 3205 // agent. This needs to be done here, after WebKit is through with setting the
3194 // user agent on its own. Similarly, it may indicate that we should set an 3206 // user agent on its own. Similarly, it may indicate that we should set an
3195 // X-Requested-With header. This must be done here to avoid breaking CORS 3207 // X-Requested-With header. This must be done here to avoid breaking CORS
3196 // checks. 3208 // checks.
3197 // PlzNavigate: there may also be a stream url associated with the request. 3209 // PlzNavigate: there may also be a stream url associated with the request.
3198 WebString custom_user_agent; 3210 WebString custom_user_agent;
3199 WebString requested_with; 3211 WebString requested_with;
3200 scoped_ptr<StreamOverrideParameters> stream_override; 3212 scoped_ptr<StreamOverrideParameters> stream_override;
3213 int navigation_provider_id = kInvalidServiceWorkerProviderId;
3201 if (request.extraData()) { 3214 if (request.extraData()) {
3202 RequestExtraData* old_extra_data = 3215 RequestExtraData* old_extra_data =
3203 static_cast<RequestExtraData*>(request.extraData()); 3216 static_cast<RequestExtraData*>(request.extraData());
3204 3217
3205 custom_user_agent = old_extra_data->custom_user_agent(); 3218 custom_user_agent = old_extra_data->custom_user_agent();
3206 if (!custom_user_agent.isNull()) { 3219 if (!custom_user_agent.isNull()) {
3207 if (custom_user_agent.isEmpty()) 3220 if (custom_user_agent.isEmpty())
3208 request.clearHTTPHeaderField("User-Agent"); 3221 request.clearHTTPHeaderField("User-Agent");
3209 else 3222 else
3210 request.setHTTPHeaderField("User-Agent", custom_user_agent); 3223 request.setHTTPHeaderField("User-Agent", custom_user_agent);
3211 } 3224 }
3212 3225
3213 requested_with = old_extra_data->requested_with(); 3226 requested_with = old_extra_data->requested_with();
3214 if (!requested_with.isNull()) { 3227 if (!requested_with.isNull()) {
3215 if (requested_with.isEmpty()) 3228 if (requested_with.isEmpty())
3216 request.clearHTTPHeaderField("X-Requested-With"); 3229 request.clearHTTPHeaderField("X-Requested-With");
3217 else 3230 else
3218 request.setHTTPHeaderField("X-Requested-With", requested_with); 3231 request.setHTTPHeaderField("X-Requested-With", requested_with);
3219 } 3232 }
3220 stream_override = old_extra_data->TakeStreamOverrideOwnership(); 3233 stream_override = old_extra_data->TakeStreamOverrideOwnership();
3234 navigation_provider_id = old_extra_data->navigation_provider_id();
3221 } 3235 }
3222 3236
3223 // Add the default accept header for frame request if it has not been set 3237 // Add the default accept header for frame request if it has not been set
3224 // already. 3238 // already.
3225 if ((request.frameType() == blink::WebURLRequest::FrameTypeTopLevel || 3239 if ((request.frameType() == blink::WebURLRequest::FrameTypeTopLevel ||
3226 request.frameType() == blink::WebURLRequest::FrameTypeNested) && 3240 request.frameType() == blink::WebURLRequest::FrameTypeNested) &&
3227 request.httpHeaderField(WebString::fromUTF8(kAcceptHeader)).isEmpty()) { 3241 request.httpHeaderField(WebString::fromUTF8(kAcceptHeader)).isEmpty()) {
3228 request.setHTTPHeaderField(WebString::fromUTF8(kAcceptHeader), 3242 request.setHTTPHeaderField(WebString::fromUTF8(kAcceptHeader),
3229 WebString::fromUTF8(kDefaultAcceptHeader)); 3243 WebString::fromUTF8(kDefaultAcceptHeader));
3230 } 3244 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
3290 extra_data->set_allow_download( 3304 extra_data->set_allow_download(
3291 navigation_state->common_params().allow_download); 3305 navigation_state->common_params().allow_download);
3292 extra_data->set_transition_type(transition_type); 3306 extra_data->set_transition_type(transition_type);
3293 extra_data->set_should_replace_current_entry(should_replace_current_entry); 3307 extra_data->set_should_replace_current_entry(should_replace_current_entry);
3294 extra_data->set_transferred_request_child_id( 3308 extra_data->set_transferred_request_child_id(
3295 navigation_state->start_params().transferred_request_child_id); 3309 navigation_state->start_params().transferred_request_child_id);
3296 extra_data->set_transferred_request_request_id( 3310 extra_data->set_transferred_request_request_id(
3297 navigation_state->start_params().transferred_request_request_id); 3311 navigation_state->start_params().transferred_request_request_id);
3298 extra_data->set_service_worker_provider_id(provider_id); 3312 extra_data->set_service_worker_provider_id(provider_id);
3299 extra_data->set_stream_override(stream_override.Pass()); 3313 extra_data->set_stream_override(stream_override.Pass());
3314 extra_data->set_navigation_provider_id(navigation_provider_id);
3300 request.setExtraData(extra_data); 3315 request.setExtraData(extra_data);
3301 3316
3302 // TODO(creis): Update prefetching to work with out-of-process iframes. 3317 // TODO(creis): Update prefetching to work with out-of-process iframes.
3303 WebFrame* top_frame = frame->top(); 3318 WebFrame* top_frame = frame->top();
3304 if (top_frame && top_frame->isWebLocalFrame()) { 3319 if (top_frame && top_frame->isWebLocalFrame()) {
3305 DocumentState* top_document_state = 3320 DocumentState* top_document_state =
3306 DocumentState::FromDataSource(top_frame->dataSource()); 3321 DocumentState::FromDataSource(top_frame->dataSource());
3307 if (top_document_state) { 3322 if (top_document_state) {
3308 // TODO(gavinp): separate out prefetching and prerender field trials 3323 // TODO(gavinp): separate out prefetching and prerender field trials
3309 // if the rel=prerender rel type is sticking around. 3324 // if the rel=prerender rel type is sticking around.
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after
4110 void RenderFrameImpl::FocusedNodeChangedForAccessibility(const WebNode& node) { 4125 void RenderFrameImpl::FocusedNodeChangedForAccessibility(const WebNode& node) {
4111 if (renderer_accessibility()) 4126 if (renderer_accessibility())
4112 renderer_accessibility()->AccessibilityFocusedNodeChanged(node); 4127 renderer_accessibility()->AccessibilityFocusedNodeChanged(node);
4113 } 4128 }
4114 4129
4115 // PlzNavigate 4130 // PlzNavigate
4116 void RenderFrameImpl::OnCommitNavigation( 4131 void RenderFrameImpl::OnCommitNavigation(
4117 const ResourceResponseHead& response, 4132 const ResourceResponseHead& response,
4118 const GURL& stream_url, 4133 const GURL& stream_url,
4119 const CommonNavigationParams& common_params, 4134 const CommonNavigationParams& common_params,
4120 const RequestNavigationParams& request_params) { 4135 const RequestNavigationParams& request_params,
4136 int navigation_provider_id) {
4121 CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( 4137 CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch(
4122 switches::kEnableBrowserSideNavigation)); 4138 switches::kEnableBrowserSideNavigation));
4123 // This will override the url requested by the WebURLLoader, as well as 4139 // This will override the url requested by the WebURLLoader, as well as
4124 // provide it with the response to the request. 4140 // provide it with the response to the request.
4125 scoped_ptr<StreamOverrideParameters> stream_override( 4141 scoped_ptr<StreamOverrideParameters> stream_override(
4126 new StreamOverrideParameters()); 4142 new StreamOverrideParameters());
4127 stream_override->stream_url = stream_url; 4143 stream_override->stream_url = stream_url;
4128 stream_override->response = response; 4144 stream_override->response = response;
4129 4145
4130 NavigateInternal(common_params, StartNavigationParams(), request_params, 4146 NavigateInternal(common_params, StartNavigationParams(), request_params,
4131 stream_override.Pass()); 4147 stream_override.Pass(), navigation_provider_id);
4132 } 4148 }
4133 4149
4134 void RenderFrameImpl::OnFailedNavigation( 4150 void RenderFrameImpl::OnFailedNavigation(
4135 const CommonNavigationParams& common_params, 4151 const CommonNavigationParams& common_params,
4136 const RequestNavigationParams& request_params, 4152 const RequestNavigationParams& request_params,
4137 bool has_stale_copy_in_cache, 4153 bool has_stale_copy_in_cache,
4138 int error_code) { 4154 int error_code) {
4139 bool is_reload = IsReload(common_params.navigation_type); 4155 bool is_reload = IsReload(common_params.navigation_type);
4140 bool is_history_navigation = request_params.page_state.IsValid(); 4156 bool is_history_navigation = request_params.page_state.IsValid();
4141 WebURLRequest::CachePolicy cache_policy = 4157 WebURLRequest::CachePolicy cache_policy =
4142 WebURLRequest::UseProtocolCachePolicy; 4158 WebURLRequest::UseProtocolCachePolicy;
4143 RenderFrameImpl::PrepareRenderViewForNavigation( 4159 RenderFrameImpl::PrepareRenderViewForNavigation(
4144 common_params.url, request_params, &is_reload, &cache_policy); 4160 common_params.url, request_params, &is_reload, &cache_policy);
4145 4161
4146 GetContentClient()->SetActiveURL(common_params.url); 4162 GetContentClient()->SetActiveURL(common_params.url);
4147 4163
4148 pending_navigation_params_.reset(new NavigationParams( 4164 pending_navigation_params_.reset(new NavigationParams(
4149 common_params, StartNavigationParams(), request_params)); 4165 common_params, StartNavigationParams(), request_params));
4150 4166
4151 // Inform the browser of the start of the provisional load. This is needed so 4167 // Inform the browser of the start of the provisional load. This is needed so
4152 // that the load is properly tracked by the WebNavigation API. 4168 // that the load is properly tracked by the WebNavigation API.
4153 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( 4169 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame(
4154 routing_id_, common_params.url)); 4170 routing_id_, common_params.url));
4155 4171
4156 // Send the provisional load failure. 4172 // Send the provisional load failure.
4157 blink::WebURLError error = 4173 blink::WebURLError error =
4158 CreateWebURLError(common_params.url, has_stale_copy_in_cache, error_code); 4174 CreateWebURLError(common_params.url, has_stale_copy_in_cache, error_code);
4159 WebURLRequest failed_request = CreateURLRequestForNavigation( 4175 WebURLRequest failed_request = CreateURLRequestForNavigation(
4160 common_params, scoped_ptr<StreamOverrideParameters>(), 4176 common_params, scoped_ptr<StreamOverrideParameters>(),
4161 frame_->isViewSourceModeEnabled()); 4177 kInvalidServiceWorkerProviderId, frame_->isViewSourceModeEnabled());
4162 SendFailedProvisionalLoad(failed_request, error, frame_); 4178 SendFailedProvisionalLoad(failed_request, error, frame_);
4163 4179
4164 if (!ShouldDisplayErrorPageForFailedLoad(error_code, common_params.url)) { 4180 if (!ShouldDisplayErrorPageForFailedLoad(error_code, common_params.url)) {
4165 // TODO(avi): Remove this; we shouldn't ever be dropping navigations. 4181 // TODO(avi): Remove this; we shouldn't ever be dropping navigations.
4166 // http://crbug.com/501960 4182 // http://crbug.com/501960
4167 Send(new FrameHostMsg_DidDropNavigation(routing_id_)); 4183 Send(new FrameHostMsg_DidDropNavigation(routing_id_));
4168 return; 4184 return;
4169 } 4185 }
4170 4186
4171 // Make sure errors are not shown in view source mode. 4187 // Make sure errors are not shown in view source mode.
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
4411 WebUserGestureIndicator::consumeUserGesture(); 4427 WebUserGestureIndicator::consumeUserGesture();
4412 } 4428 }
4413 4429
4414 Send(new FrameHostMsg_OpenURL(routing_id_, params)); 4430 Send(new FrameHostMsg_OpenURL(routing_id_, params));
4415 } 4431 }
4416 4432
4417 void RenderFrameImpl::NavigateInternal( 4433 void RenderFrameImpl::NavigateInternal(
4418 const CommonNavigationParams& common_params, 4434 const CommonNavigationParams& common_params,
4419 const StartNavigationParams& start_params, 4435 const StartNavigationParams& start_params,
4420 const RequestNavigationParams& request_params, 4436 const RequestNavigationParams& request_params,
4421 scoped_ptr<StreamOverrideParameters> stream_params) { 4437 scoped_ptr<StreamOverrideParameters> stream_params,
4438 int navigation_provider_id) {
4422 bool browser_side_navigation = 4439 bool browser_side_navigation =
4423 base::CommandLine::ForCurrentProcess()->HasSwitch( 4440 base::CommandLine::ForCurrentProcess()->HasSwitch(
4424 switches::kEnableBrowserSideNavigation); 4441 switches::kEnableBrowserSideNavigation);
4425 bool is_reload = IsReload(common_params.navigation_type); 4442 bool is_reload = IsReload(common_params.navigation_type);
4426 bool is_history_navigation = request_params.page_state.IsValid(); 4443 bool is_history_navigation = request_params.page_state.IsValid();
4427 WebURLRequest::CachePolicy cache_policy = 4444 WebURLRequest::CachePolicy cache_policy =
4428 WebURLRequest::UseProtocolCachePolicy; 4445 WebURLRequest::UseProtocolCachePolicy;
4429 RenderFrameImpl::PrepareRenderViewForNavigation( 4446 RenderFrameImpl::PrepareRenderViewForNavigation(
4430 common_params.url, request_params, &is_reload, &cache_policy); 4447 common_params.url, request_params, &is_reload, &cache_policy);
4431 4448
4432 GetContentClient()->SetActiveURL(common_params.url); 4449 GetContentClient()->SetActiveURL(common_params.url);
4433 4450
4434 // If this frame isn't in the same process as the main frame, it may naively 4451 // If this frame isn't in the same process as the main frame, it may naively
4435 // assume that this is the first navigation in the iframe, but this may not 4452 // assume that this is the first navigation in the iframe, but this may not
4436 // actually be the case. Inform the frame's state machine if this frame has 4453 // actually be the case. Inform the frame's state machine if this frame has
4437 // already committed other loads. 4454 // already committed other loads.
4438 if (request_params.has_committed_real_load && frame_->parent()) 4455 if (request_params.has_committed_real_load && frame_->parent())
4439 frame_->setCommittedFirstRealLoad(); 4456 frame_->setCommittedFirstRealLoad();
4440 4457
4441 if (is_reload && !render_view_->history_controller()->GetCurrentEntry()) { 4458 if (is_reload && !render_view_->history_controller()->GetCurrentEntry()) {
4442 // We cannot reload if we do not have any history state. This happens, for 4459 // We cannot reload if we do not have any history state. This happens, for
4443 // example, when recovering from a crash. 4460 // example, when recovering from a crash.
4444 is_reload = false; 4461 is_reload = false;
4445 cache_policy = WebURLRequest::ReloadIgnoringCacheData; 4462 cache_policy = WebURLRequest::ReloadIgnoringCacheData;
4446 } 4463 }
4447 4464
4448 pending_navigation_params_.reset( 4465 pending_navigation_params_.reset(
michaeln 2015/07/30 01:35:08 According to the comments about this data member,
Fabrice (no longer in Chrome) 2015/08/06 15:39:15 Yes, CommonNavigationParams seems like a better us
4449 new NavigationParams(common_params, start_params, request_params)); 4466 new NavigationParams(common_params, start_params, request_params));
4450 4467
4451 // Create parameters for a standard navigation. 4468 // Create parameters for a standard navigation.
4452 blink::WebFrameLoadType load_type = blink::WebFrameLoadType::Standard; 4469 blink::WebFrameLoadType load_type = blink::WebFrameLoadType::Standard;
4453 bool should_load_request = false; 4470 bool should_load_request = false;
4454 WebHistoryItem item_for_history_navigation; 4471 WebHistoryItem item_for_history_navigation;
4455 WebURLRequest request = CreateURLRequestForNavigation( 4472 WebURLRequest request = CreateURLRequestForNavigation(
4456 common_params, stream_params.Pass(), frame_->isViewSourceModeEnabled()); 4473 common_params, stream_params.Pass(), navigation_provider_id,
nasko 2015/08/07 17:51:12 Why do we need to pass this? The stream is the res
kinuko 2015/08/11 14:43:04 This is mainly to associate browser-side SW object
4474 frame_->isViewSourceModeEnabled());
4457 4475
4458 // PlzNavigate: Make sure that Blink's loader will not try to use browser side 4476 // PlzNavigate: Make sure that Blink's loader will not try to use browser side
4459 // navigation for this request (since it already went to the browser). 4477 // navigation for this request (since it already went to the browser).
4460 if (browser_side_navigation) 4478 if (browser_side_navigation)
4461 request.setCheckForBrowserSideNavigation(false); 4479 request.setCheckForBrowserSideNavigation(false);
4462 4480
4463 // If we are reloading, then use the history state of the current frame. 4481 // If we are reloading, then use the history state of the current frame.
4464 // Otherwise, if we have history state, then we need to navigate to it, which 4482 // Otherwise, if we have history state, then we need to navigate to it, which
4465 // corresponds to a back/forward navigation event. Update the parameters 4483 // corresponds to a back/forward navigation event. Update the parameters
4466 // depending on the navigation type. 4484 // depending on the navigation type.
(...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after
5049 void RenderFrameImpl::RegisterMojoServices() { 5067 void RenderFrameImpl::RegisterMojoServices() {
5050 // Only main frame have ImageDownloader service. 5068 // Only main frame have ImageDownloader service.
5051 if (!frame_->parent()) { 5069 if (!frame_->parent()) {
5052 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( 5070 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>(
5053 base::Bind(&ImageDownloaderImpl::CreateMojoService, 5071 base::Bind(&ImageDownloaderImpl::CreateMojoService,
5054 base::Unretained(this))); 5072 base::Unretained(this)));
5055 } 5073 }
5056 } 5074 }
5057 5075
5058 } // namespace content 5076 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698