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 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
443 WebString web_referrer = WebSecurityPolicy::generateReferrerHeader( | 443 WebString web_referrer = WebSecurityPolicy::generateReferrerHeader( |
444 common_params.referrer.policy, | 444 common_params.referrer.policy, |
445 common_params.url, | 445 common_params.url, |
446 WebString::fromUTF8(common_params.referrer.url.spec())); | 446 WebString::fromUTF8(common_params.referrer.url.spec())); |
447 if (!web_referrer.isEmpty()) | 447 if (!web_referrer.isEmpty()) |
448 request.setHTTPReferrer(web_referrer, common_params.referrer.policy); | 448 request.setHTTPReferrer(web_referrer, common_params.referrer.policy); |
449 } | 449 } |
450 | 450 |
451 RequestExtraData* extra_data = new RequestExtraData(); | 451 RequestExtraData* extra_data = new RequestExtraData(); |
452 extra_data->set_stream_override(stream_override.Pass()); | 452 extra_data->set_stream_override(stream_override.Pass()); |
453 extra_data->set_service_worker_provider_id( | |
454 common_params.service_worker_provider_id); | |
453 request.setExtraData(extra_data); | 455 request.setExtraData(extra_data); |
454 | 456 |
455 // Set the ui timestamp for this navigation. Currently the timestamp here is | 457 // Set the ui timestamp for this navigation. Currently the timestamp here is |
456 // only non empty when the navigation was triggered by an Android intent. The | 458 // only non empty when the navigation was triggered by an Android intent. The |
457 // timestamp is converted to a double version supported by blink. It will be | 459 // timestamp is converted to a double version supported by blink. It will be |
458 // passed back to the browser in the DidCommitProvisionalLoad and the | 460 // passed back to the browser in the DidCommitProvisionalLoad and the |
459 // DocumentLoadComplete IPCs. | 461 // DocumentLoadComplete IPCs. |
460 base::TimeDelta ui_timestamp = common_params.ui_timestamp - base::TimeTicks(); | 462 base::TimeDelta ui_timestamp = common_params.ui_timestamp - base::TimeTicks(); |
461 request.setUiStartTime(ui_timestamp.InSecondsF()); | 463 request.setUiStartTime(ui_timestamp.InSecondsF()); |
462 request.setInputPerfMetricReportPolicy( | 464 request.setInputPerfMetricReportPolicy( |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
509 // CommitNavigation IPC, and then back to the browser again in the | 511 // CommitNavigation IPC, and then back to the browser again in the |
510 // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs. | 512 // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs. |
511 base::TimeTicks ui_timestamp = | 513 base::TimeTicks ui_timestamp = |
512 base::TimeTicks() + base::TimeDelta::FromSecondsD(request->uiStartTime()); | 514 base::TimeTicks() + base::TimeDelta::FromSecondsD(request->uiStartTime()); |
513 FrameMsg_UILoadMetricsReportType::Value report_type = | 515 FrameMsg_UILoadMetricsReportType::Value report_type = |
514 static_cast<FrameMsg_UILoadMetricsReportType::Value>( | 516 static_cast<FrameMsg_UILoadMetricsReportType::Value>( |
515 request->inputPerfMetricReportPolicy()); | 517 request->inputPerfMetricReportPolicy()); |
516 return CommonNavigationParams( | 518 return CommonNavigationParams( |
517 request->url(), referrer, extra_data->transition_type(), | 519 request->url(), referrer, extra_data->transition_type(), |
518 FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry, | 520 FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry, |
519 ui_timestamp, report_type, GURL(), GURL()); | 521 ui_timestamp, report_type, GURL(), GURL(), |
522 extra_data->service_worker_provider_id()); | |
520 } | 523 } |
521 | 524 |
522 #if !defined(OS_ANDROID) || defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | 525 #if !defined(OS_ANDROID) || defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
523 media::Context3D GetSharedMainThreadContext3D() { | 526 media::Context3D GetSharedMainThreadContext3D() { |
524 cc::ContextProvider* provider = | 527 cc::ContextProvider* provider = |
525 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); | 528 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); |
526 if (!provider) | 529 if (!provider) |
527 return media::Context3D(); | 530 return media::Context3D(); |
528 return media::Context3D(provider->ContextGL(), provider->GrContext()); | 531 return media::Context3D(provider->ContextGL(), provider->GrContext()); |
529 } | 532 } |
(...skipping 2027 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2557 // Create the serviceworker's per-document network observing object if it | 2560 // Create the serviceworker's per-document network observing object if it |
2558 // does not exist (When navigation happens within a page, the provider already | 2561 // does not exist (When navigation happens within a page, the provider already |
2559 // exists). | 2562 // exists). |
2560 if (!ServiceWorkerNetworkProvider::FromDocumentState( | 2563 if (!ServiceWorkerNetworkProvider::FromDocumentState( |
2561 DocumentState::FromDataSource(datasource))) { | 2564 DocumentState::FromDataSource(datasource))) { |
2562 ServiceWorkerProviderType provider_type = | 2565 ServiceWorkerProviderType provider_type = |
2563 SERVICE_WORKER_PROVIDER_FOR_WINDOW; | 2566 SERVICE_WORKER_PROVIDER_FOR_WINDOW; |
2564 if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) == | 2567 if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) == |
2565 blink::WebSandboxFlags::Origin) { | 2568 blink::WebSandboxFlags::Origin) { |
2566 provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME; | 2569 provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME; |
2570 DCHECK(is_subframe_); | |
2567 } | 2571 } |
2572 const WebURLRequest& original_request = datasource->originalRequest(); | |
2573 | |
2574 int service_worker_provider_id = kInvalidServiceWorkerProviderId; | |
2575 if (original_request.extraData()) { | |
2576 RequestExtraData* extra_data = | |
2577 static_cast<RequestExtraData*>(original_request.extraData()); | |
2578 service_worker_provider_id = extra_data->service_worker_provider_id(); | |
2579 } | |
2580 | |
2568 scoped_ptr<ServiceWorkerNetworkProvider> network_provider( | 2581 scoped_ptr<ServiceWorkerNetworkProvider> network_provider( |
2569 new ServiceWorkerNetworkProvider(routing_id_, provider_type)); | 2582 new ServiceWorkerNetworkProvider(routing_id_, provider_type, |
2583 service_worker_provider_id)); | |
2584 | |
2570 ServiceWorkerNetworkProvider::AttachToDocumentState( | 2585 ServiceWorkerNetworkProvider::AttachToDocumentState( |
2571 DocumentState::FromDataSource(datasource), | 2586 DocumentState::FromDataSource(datasource), |
2572 network_provider.Pass()); | 2587 network_provider.Pass()); |
2573 } | 2588 } |
2574 } | 2589 } |
2575 | 2590 |
2576 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame, | 2591 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame, |
2577 double triggering_event_time) { | 2592 double triggering_event_time) { |
2578 DCHECK(!frame_ || frame_ == frame); | 2593 DCHECK(!frame_ || frame_ == frame); |
2579 WebDataSource* ds = frame->provisionalDataSource(); | 2594 WebDataSource* ds = frame->provisionalDataSource(); |
(...skipping 2262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4842 WebDataSource* provisional_data_source = frame_->provisionalDataSource(); | 4857 WebDataSource* provisional_data_source = frame_->provisionalDataSource(); |
4843 WebDataSource* current_data_source = frame_->dataSource(); | 4858 WebDataSource* current_data_source = frame_->dataSource(); |
4844 WebDataSource* data_source = | 4859 WebDataSource* data_source = |
4845 provisional_data_source ? provisional_data_source : current_data_source; | 4860 provisional_data_source ? provisional_data_source : current_data_source; |
4846 | 4861 |
4847 // The current entry can only be replaced if there already is an entry in the | 4862 // The current entry can only be replaced if there already is an entry in the |
4848 // history list. | 4863 // history list. |
4849 if (data_source && render_view_->history_list_length_ > 0) { | 4864 if (data_source && render_view_->history_list_length_ > 0) { |
4850 should_replace_current_entry = data_source->replacesCurrentHistoryItem(); | 4865 should_replace_current_entry = data_source->replacesCurrentHistoryItem(); |
4851 } | 4866 } |
4867 | |
4868 DCHECK_EQ(FETCH_REQUEST_MODE_NO_CORS, | |
4869 GetFetchRequestModeForWebURLRequest(*request)); | |
4870 DCHECK_EQ(FETCH_CREDENTIALS_MODE_SAME_ORIGIN, | |
4871 GetFetchCredentialsModeForWebURLRequest(*request)); | |
4872 DCHECK(GetFetchRedirectModeForWebURLRequest(*request) == | |
4873 FetchRedirectMode::FOLLOW_MODE); | |
clamy
2015/08/27 11:53:45
Can we also precise the different possibilities fo
Fabrice (no longer in Chrome)
2015/08/28 15:40:16
As we discussed offline, I don't think we can DCHE
| |
4874 | |
4852 Send(new FrameHostMsg_BeginNavigation( | 4875 Send(new FrameHostMsg_BeginNavigation( |
4853 routing_id_, | 4876 routing_id_, |
4854 MakeCommonNavigationParams(request, should_replace_current_entry), | 4877 MakeCommonNavigationParams(request, should_replace_current_entry), |
4855 BeginNavigationParams( | 4878 BeginNavigationParams( |
4856 request->httpMethod().latin1(), GetWebURLRequestHeaders(*request), | 4879 request->httpMethod().latin1(), |
4857 GetLoadFlagsForWebURLRequest(*request), request->hasUserGesture()), | 4880 GetWebURLRequestHeaders(*request), |
4881 GetLoadFlagsForWebURLRequest(*request), | |
4882 request->hasUserGesture(), | |
4883 request->skipServiceWorker(), | |
4884 GetRequestContextTypeForWebURLRequest(*request), | |
4885 GetRequestContextFrameTypeForWebURLRequest(*request)), | |
4858 GetRequestBodyForWebURLRequest(*request))); | 4886 GetRequestBodyForWebURLRequest(*request))); |
4859 } | 4887 } |
4860 | 4888 |
4861 void RenderFrameImpl::LoadDataURL(const CommonNavigationParams& params, | 4889 void RenderFrameImpl::LoadDataURL(const CommonNavigationParams& params, |
4862 WebFrame* frame) { | 4890 WebFrame* frame) { |
4863 // A loadData request with a specified base URL. | 4891 // A loadData request with a specified base URL. |
4864 std::string mime_type, charset, data; | 4892 std::string mime_type, charset, data; |
4865 if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) { | 4893 if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) { |
4866 const GURL base_url = params.base_url_for_data_url.is_empty() ? | 4894 const GURL base_url = params.base_url_for_data_url.is_empty() ? |
4867 params.url : params.base_url_for_data_url; | 4895 params.url : params.base_url_for_data_url; |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5112 GetServiceRegistry()->ConnectToRemoteService(mojo::GetProxy(&mojo_shell_)); | 5140 GetServiceRegistry()->ConnectToRemoteService(mojo::GetProxy(&mojo_shell_)); |
5113 mojo::ServiceProviderPtr service_provider; | 5141 mojo::ServiceProviderPtr service_provider; |
5114 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 5142 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
5115 request->url = mojo::String::From(url); | 5143 request->url = mojo::String::From(url); |
5116 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), | 5144 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), |
5117 nullptr, nullptr); | 5145 nullptr, nullptr); |
5118 return service_provider.Pass(); | 5146 return service_provider.Pass(); |
5119 } | 5147 } |
5120 | 5148 |
5121 } // namespace content | 5149 } // namespace content |
OLD | NEW |