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 431 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
442 WebString web_referrer = WebSecurityPolicy::generateReferrerHeader( | 442 WebString web_referrer = WebSecurityPolicy::generateReferrerHeader( |
443 common_params.referrer.policy, | 443 common_params.referrer.policy, |
444 common_params.url, | 444 common_params.url, |
445 WebString::fromUTF8(common_params.referrer.url.spec())); | 445 WebString::fromUTF8(common_params.referrer.url.spec())); |
446 if (!web_referrer.isEmpty()) | 446 if (!web_referrer.isEmpty()) |
447 request.setHTTPReferrer(web_referrer, common_params.referrer.policy); | 447 request.setHTTPReferrer(web_referrer, common_params.referrer.policy); |
448 } | 448 } |
449 | 449 |
450 RequestExtraData* extra_data = new RequestExtraData(); | 450 RequestExtraData* extra_data = new RequestExtraData(); |
451 extra_data->set_stream_override(stream_override.Pass()); | 451 extra_data->set_stream_override(stream_override.Pass()); |
452 extra_data->set_service_worker_provider_id( | |
453 common_params.service_worker_provider_id); | |
452 request.setExtraData(extra_data); | 454 request.setExtraData(extra_data); |
453 | 455 |
454 // Set the ui timestamp for this navigation. Currently the timestamp here is | 456 // Set the ui timestamp for this navigation. Currently the timestamp here is |
455 // only non empty when the navigation was triggered by an Android intent. The | 457 // only non empty when the navigation was triggered by an Android intent. The |
456 // timestamp is converted to a double version supported by blink. It will be | 458 // timestamp is converted to a double version supported by blink. It will be |
457 // passed back to the browser in the DidCommitProvisionalLoad and the | 459 // passed back to the browser in the DidCommitProvisionalLoad and the |
458 // DocumentLoadComplete IPCs. | 460 // DocumentLoadComplete IPCs. |
459 base::TimeDelta ui_timestamp = common_params.ui_timestamp - base::TimeTicks(); | 461 base::TimeDelta ui_timestamp = common_params.ui_timestamp - base::TimeTicks(); |
460 request.setUiStartTime(ui_timestamp.InSecondsF()); | 462 request.setUiStartTime(ui_timestamp.InSecondsF()); |
461 request.setInputPerfMetricReportPolicy( | 463 request.setInputPerfMetricReportPolicy( |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
508 // CommitNavigation IPC, and then back to the browser again in the | 510 // CommitNavigation IPC, and then back to the browser again in the |
509 // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs. | 511 // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs. |
510 base::TimeTicks ui_timestamp = | 512 base::TimeTicks ui_timestamp = |
511 base::TimeTicks() + base::TimeDelta::FromSecondsD(request->uiStartTime()); | 513 base::TimeTicks() + base::TimeDelta::FromSecondsD(request->uiStartTime()); |
512 FrameMsg_UILoadMetricsReportType::Value report_type = | 514 FrameMsg_UILoadMetricsReportType::Value report_type = |
513 static_cast<FrameMsg_UILoadMetricsReportType::Value>( | 515 static_cast<FrameMsg_UILoadMetricsReportType::Value>( |
514 request->inputPerfMetricReportPolicy()); | 516 request->inputPerfMetricReportPolicy()); |
515 return CommonNavigationParams( | 517 return CommonNavigationParams( |
516 request->url(), referrer, extra_data->transition_type(), | 518 request->url(), referrer, extra_data->transition_type(), |
517 FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry, | 519 FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry, |
518 ui_timestamp, report_type, GURL(), GURL()); | 520 ui_timestamp, report_type, GURL(), GURL(), |
521 extra_data->service_worker_provider_id()); | |
michaeln
2015/09/16 00:56:42
If i understand correctly, i think this is called
michaeln
2015/09/18 23:03:56
Ok, this id is definitely not useful.
The object
Fabrice (no longer in Chrome)
2015/09/30 17:32:08
This has been removed.
| |
519 } | 522 } |
520 | 523 |
521 #if !defined(OS_ANDROID) || defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | 524 #if !defined(OS_ANDROID) || defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
522 media::Context3D GetSharedMainThreadContext3D() { | 525 media::Context3D GetSharedMainThreadContext3D() { |
523 cc::ContextProvider* provider = | 526 cc::ContextProvider* provider = |
524 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); | 527 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); |
525 if (!provider) | 528 if (!provider) |
526 return media::Context3D(); | 529 return media::Context3D(); |
527 return media::Context3D(provider->ContextGL(), provider->GrContext()); | 530 return media::Context3D(provider->ContextGL(), provider->GrContext()); |
528 } | 531 } |
(...skipping 2038 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2567 // does not exist (When navigation happens within a page, the provider already | 2570 // does not exist (When navigation happens within a page, the provider already |
2568 // exists). | 2571 // exists). |
2569 if (!ServiceWorkerNetworkProvider::FromDocumentState( | 2572 if (!ServiceWorkerNetworkProvider::FromDocumentState( |
2570 DocumentState::FromDataSource(datasource))) { | 2573 DocumentState::FromDataSource(datasource))) { |
2571 ServiceWorkerProviderType provider_type = | 2574 ServiceWorkerProviderType provider_type = |
2572 SERVICE_WORKER_PROVIDER_FOR_WINDOW; | 2575 SERVICE_WORKER_PROVIDER_FOR_WINDOW; |
2573 if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) == | 2576 if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) == |
2574 blink::WebSandboxFlags::Origin) { | 2577 blink::WebSandboxFlags::Origin) { |
2575 provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME; | 2578 provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME; |
2576 } | 2579 } |
2580 const WebURLRequest& original_request = datasource->originalRequest(); | |
2581 | |
2582 int service_worker_provider_id = kInvalidServiceWorkerProviderId; | |
2583 if (original_request.extraData()) { | |
michaeln
2015/09/16 00:56:42
I think this new bit of code is specific to PlzNav
Fabrice (no longer in Chrome)
2015/09/30 17:32:07
Done.
There's a bit of duplication here now but I
| |
2584 RequestExtraData* extra_data = | |
2585 static_cast<RequestExtraData*>(original_request.extraData()); | |
2586 service_worker_provider_id = extra_data->service_worker_provider_id(); | |
2587 } | |
2588 | |
2577 scoped_ptr<ServiceWorkerNetworkProvider> network_provider( | 2589 scoped_ptr<ServiceWorkerNetworkProvider> network_provider( |
2578 new ServiceWorkerNetworkProvider(routing_id_, provider_type)); | 2590 new ServiceWorkerNetworkProvider(routing_id_, provider_type, |
2591 service_worker_provider_id)); | |
2592 | |
2579 ServiceWorkerNetworkProvider::AttachToDocumentState( | 2593 ServiceWorkerNetworkProvider::AttachToDocumentState( |
2580 DocumentState::FromDataSource(datasource), | 2594 DocumentState::FromDataSource(datasource), |
2581 network_provider.Pass()); | 2595 network_provider.Pass()); |
2582 } | 2596 } |
2583 } | 2597 } |
2584 | 2598 |
2585 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame, | 2599 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame, |
2586 double triggering_event_time) { | 2600 double triggering_event_time) { |
2587 DCHECK(!frame_ || frame_ == frame); | 2601 DCHECK(!frame_ || frame_ == frame); |
2588 WebDataSource* ds = frame->provisionalDataSource(); | 2602 WebDataSource* ds = frame->provisionalDataSource(); |
(...skipping 2241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4830 WebDataSource* provisional_data_source = frame_->provisionalDataSource(); | 4844 WebDataSource* provisional_data_source = frame_->provisionalDataSource(); |
4831 WebDataSource* current_data_source = frame_->dataSource(); | 4845 WebDataSource* current_data_source = frame_->dataSource(); |
4832 WebDataSource* data_source = | 4846 WebDataSource* data_source = |
4833 provisional_data_source ? provisional_data_source : current_data_source; | 4847 provisional_data_source ? provisional_data_source : current_data_source; |
4834 | 4848 |
4835 // The current entry can only be replaced if there already is an entry in the | 4849 // The current entry can only be replaced if there already is an entry in the |
4836 // history list. | 4850 // history list. |
4837 if (data_source && render_view_->history_list_length_ > 0) { | 4851 if (data_source && render_view_->history_list_length_ > 0) { |
4838 should_replace_current_entry = data_source->replacesCurrentHistoryItem(); | 4852 should_replace_current_entry = data_source->replacesCurrentHistoryItem(); |
4839 } | 4853 } |
4854 | |
4855 DCHECK_EQ(FETCH_REQUEST_MODE_NO_CORS, | |
4856 GetFetchRequestModeForWebURLRequest(*request)); | |
4857 DCHECK_EQ(FETCH_CREDENTIALS_MODE_SAME_ORIGIN, | |
4858 GetFetchCredentialsModeForWebURLRequest(*request)); | |
4859 DCHECK(GetFetchRedirectModeForWebURLRequest(*request) == | |
4860 FetchRedirectMode::FOLLOW_MODE); | |
michaeln
2015/09/18 23:03:56
I've patched it in and am seeing these DCHECKs get
Fabrice (no longer in Chrome)
2015/09/30 17:32:08
That's because the values for navigation requests
| |
4861 DCHECK_IMPLIES(!frame_->parent(), | |
4862 GetRequestContextFrameTypeForWebURLRequest(*request) == | |
4863 REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL); | |
4864 DCHECK_IMPLIES(frame_->parent(), | |
4865 GetRequestContextFrameTypeForWebURLRequest(*request) == | |
4866 REQUEST_CONTEXT_FRAME_TYPE_NESTED); | |
4867 | |
4840 Send(new FrameHostMsg_BeginNavigation( | 4868 Send(new FrameHostMsg_BeginNavigation( |
4841 routing_id_, | 4869 routing_id_, |
4842 MakeCommonNavigationParams(request, should_replace_current_entry), | 4870 MakeCommonNavigationParams(request, should_replace_current_entry), |
4843 BeginNavigationParams( | 4871 BeginNavigationParams( |
4844 request->httpMethod().latin1(), GetWebURLRequestHeaders(*request), | 4872 request->httpMethod().latin1(), |
4845 GetLoadFlagsForWebURLRequest(*request), request->hasUserGesture()), | 4873 GetWebURLRequestHeaders(*request), |
4874 GetLoadFlagsForWebURLRequest(*request), | |
4875 request->hasUserGesture(), | |
4876 request->skipServiceWorker(), | |
4877 GetRequestContextTypeForWebURLRequest(*request)), | |
4846 GetRequestBodyForWebURLRequest(*request))); | 4878 GetRequestBodyForWebURLRequest(*request))); |
4847 } | 4879 } |
4848 | 4880 |
4849 void RenderFrameImpl::LoadDataURL(const CommonNavigationParams& params, | 4881 void RenderFrameImpl::LoadDataURL(const CommonNavigationParams& params, |
4850 WebFrame* frame) { | 4882 WebFrame* frame) { |
4851 // A loadData request with a specified base URL. | 4883 // A loadData request with a specified base URL. |
4852 std::string mime_type, charset, data; | 4884 std::string mime_type, charset, data; |
4853 if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) { | 4885 if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) { |
4854 const GURL base_url = params.base_url_for_data_url.is_empty() ? | 4886 const GURL base_url = params.base_url_for_data_url.is_empty() ? |
4855 params.url : params.base_url_for_data_url; | 4887 params.url : params.base_url_for_data_url; |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5100 mojo::ServiceProviderPtr service_provider; | 5132 mojo::ServiceProviderPtr service_provider; |
5101 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 5133 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
5102 request->url = mojo::String::From(url); | 5134 request->url = mojo::String::From(url); |
5103 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), | 5135 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), |
5104 nullptr, nullptr, | 5136 nullptr, nullptr, |
5105 base::Bind(&OnGotContentHandlerID)); | 5137 base::Bind(&OnGotContentHandlerID)); |
5106 return service_provider.Pass(); | 5138 return service_provider.Pass(); |
5107 } | 5139 } |
5108 | 5140 |
5109 } // namespace content | 5141 } // namespace content |
OLD | NEW |