Chromium Code Reviews| 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 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 440 WebString web_referrer = WebSecurityPolicy::generateReferrerHeader( | 440 WebString web_referrer = WebSecurityPolicy::generateReferrerHeader( |
| 441 common_params.referrer.policy, | 441 common_params.referrer.policy, |
| 442 common_params.url, | 442 common_params.url, |
| 443 WebString::fromUTF8(common_params.referrer.url.spec())); | 443 WebString::fromUTF8(common_params.referrer.url.spec())); |
| 444 if (!web_referrer.isEmpty()) | 444 if (!web_referrer.isEmpty()) |
| 445 request.setHTTPReferrer(web_referrer, common_params.referrer.policy); | 445 request.setHTTPReferrer(web_referrer, common_params.referrer.policy); |
| 446 } | 446 } |
| 447 | 447 |
| 448 RequestExtraData* extra_data = new RequestExtraData(); | 448 RequestExtraData* extra_data = new RequestExtraData(); |
| 449 extra_data->set_stream_override(stream_override.Pass()); | 449 extra_data->set_stream_override(stream_override.Pass()); |
| 450 extra_data->set_service_worker_provider_id( | |
| 451 common_params.service_worker_provider_id); | |
| 450 request.setExtraData(extra_data); | 452 request.setExtraData(extra_data); |
| 451 | 453 |
| 452 // Set the ui timestamp for this navigation. Currently the timestamp here is | 454 // Set the ui timestamp for this navigation. Currently the timestamp here is |
| 453 // only non empty when the navigation was triggered by an Android intent. The | 455 // only non empty when the navigation was triggered by an Android intent. The |
| 454 // timestamp is converted to a double version supported by blink. It will be | 456 // timestamp is converted to a double version supported by blink. It will be |
| 455 // passed back to the browser in the DidCommitProvisionalLoad and the | 457 // passed back to the browser in the DidCommitProvisionalLoad and the |
| 456 // DocumentLoadComplete IPCs. | 458 // DocumentLoadComplete IPCs. |
| 457 base::TimeDelta ui_timestamp = common_params.ui_timestamp - base::TimeTicks(); | 459 base::TimeDelta ui_timestamp = common_params.ui_timestamp - base::TimeTicks(); |
| 458 request.setUiStartTime(ui_timestamp.InSecondsF()); | 460 request.setUiStartTime(ui_timestamp.InSecondsF()); |
| 459 request.setInputPerfMetricReportPolicy( | 461 request.setInputPerfMetricReportPolicy( |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 506 // CommitNavigation IPC, and then back to the browser again in the | 508 // CommitNavigation IPC, and then back to the browser again in the |
| 507 // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs. | 509 // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs. |
| 508 base::TimeTicks ui_timestamp = | 510 base::TimeTicks ui_timestamp = |
| 509 base::TimeTicks() + base::TimeDelta::FromSecondsD(request->uiStartTime()); | 511 base::TimeTicks() + base::TimeDelta::FromSecondsD(request->uiStartTime()); |
| 510 FrameMsg_UILoadMetricsReportType::Value report_type = | 512 FrameMsg_UILoadMetricsReportType::Value report_type = |
| 511 static_cast<FrameMsg_UILoadMetricsReportType::Value>( | 513 static_cast<FrameMsg_UILoadMetricsReportType::Value>( |
| 512 request->inputPerfMetricReportPolicy()); | 514 request->inputPerfMetricReportPolicy()); |
| 513 return CommonNavigationParams( | 515 return CommonNavigationParams( |
| 514 request->url(), referrer, extra_data->transition_type(), | 516 request->url(), referrer, extra_data->transition_type(), |
| 515 FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry, | 517 FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry, |
| 516 ui_timestamp, report_type, GURL(), GURL()); | 518 ui_timestamp, report_type, GURL(), GURL(), |
| 519 extra_data->service_worker_provider_id()); | |
| 517 } | 520 } |
| 518 | 521 |
| 519 #if !defined(OS_ANDROID) || defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | 522 #if !defined(OS_ANDROID) || defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
| 520 media::Context3D GetSharedMainThreadContext3D() { | 523 media::Context3D GetSharedMainThreadContext3D() { |
| 521 cc::ContextProvider* provider = | 524 cc::ContextProvider* provider = |
| 522 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); | 525 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); |
| 523 if (!provider) | 526 if (!provider) |
| 524 return media::Context3D(); | 527 return media::Context3D(); |
| 525 return media::Context3D(provider->ContextGL(), provider->GrContext()); | 528 return media::Context3D(provider->ContextGL(), provider->GrContext()); |
| 526 } | 529 } |
| (...skipping 1988 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2515 | 2518 |
| 2516 // Create the serviceworker's per-document network observing object if it | 2519 // Create the serviceworker's per-document network observing object if it |
| 2517 // does not exist (When navigation happens within a page, the provider already | 2520 // does not exist (When navigation happens within a page, the provider already |
| 2518 // exists). | 2521 // exists). |
| 2519 if (!ServiceWorkerNetworkProvider::FromDocumentState( | 2522 if (!ServiceWorkerNetworkProvider::FromDocumentState( |
| 2520 DocumentState::FromDataSource(datasource))) { | 2523 DocumentState::FromDataSource(datasource))) { |
| 2521 ServiceWorkerProviderType provider_type = | 2524 ServiceWorkerProviderType provider_type = |
| 2522 SERVICE_WORKER_PROVIDER_FOR_WINDOW; | 2525 SERVICE_WORKER_PROVIDER_FOR_WINDOW; |
| 2523 if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) == | 2526 if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) == |
| 2524 blink::WebSandboxFlags::Origin) { | 2527 blink::WebSandboxFlags::Origin) { |
| 2525 provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME; | 2528 provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME; |
|
nasko
2015/08/20 16:49:50
Can we DCHECK here that this is not the top-level
Fabrice (no longer in Chrome)
2015/08/26 13:23:25
Done.
Fabrice (no longer in Chrome)
2015/08/27 11:18:15
I added a DCHECK on is_subframe_, but some tests d
| |
| 2526 } | 2529 } |
| 2530 const WebURLRequest& original_request = datasource->originalRequest(); | |
| 2531 | |
| 2532 int service_worker_provider_id = kInvalidServiceWorkerProviderId; | |
| 2533 if (original_request.extraData()) { | |
| 2534 RequestExtraData* extra_data = | |
| 2535 static_cast<RequestExtraData*>(original_request.extraData()); | |
| 2536 service_worker_provider_id = extra_data->service_worker_provider_id(); | |
| 2537 } | |
| 2538 | |
| 2527 scoped_ptr<ServiceWorkerNetworkProvider> network_provider( | 2539 scoped_ptr<ServiceWorkerNetworkProvider> network_provider( |
| 2528 new ServiceWorkerNetworkProvider(routing_id_, provider_type)); | 2540 new ServiceWorkerNetworkProvider(routing_id_, provider_type, |
| 2541 service_worker_provider_id)); | |
| 2542 | |
| 2529 ServiceWorkerNetworkProvider::AttachToDocumentState( | 2543 ServiceWorkerNetworkProvider::AttachToDocumentState( |
| 2530 DocumentState::FromDataSource(datasource), | 2544 DocumentState::FromDataSource(datasource), |
| 2531 network_provider.Pass()); | 2545 network_provider.Pass()); |
| 2532 } | 2546 } |
| 2533 } | 2547 } |
| 2534 | 2548 |
| 2535 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame, | 2549 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame, |
| 2536 double triggering_event_time) { | 2550 double triggering_event_time) { |
| 2537 DCHECK(!frame_ || frame_ == frame); | 2551 DCHECK(!frame_ || frame_ == frame); |
| 2538 WebDataSource* ds = frame->provisionalDataSource(); | 2552 WebDataSource* ds = frame->provisionalDataSource(); |
| (...skipping 2265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4804 provisional_data_source ? provisional_data_source : current_data_source; | 4818 provisional_data_source ? provisional_data_source : current_data_source; |
| 4805 | 4819 |
| 4806 // The current entry can only be replaced if there already is an entry in the | 4820 // The current entry can only be replaced if there already is an entry in the |
| 4807 // history list. | 4821 // history list. |
| 4808 if (data_source && render_view_->history_list_length_ > 0) { | 4822 if (data_source && render_view_->history_list_length_ > 0) { |
| 4809 should_replace_current_entry = data_source->replacesCurrentHistoryItem(); | 4823 should_replace_current_entry = data_source->replacesCurrentHistoryItem(); |
| 4810 } | 4824 } |
| 4811 Send(new FrameHostMsg_BeginNavigation( | 4825 Send(new FrameHostMsg_BeginNavigation( |
| 4812 routing_id_, | 4826 routing_id_, |
| 4813 MakeCommonNavigationParams(request, should_replace_current_entry), | 4827 MakeCommonNavigationParams(request, should_replace_current_entry), |
| 4814 BeginNavigationParams( | 4828 BeginNavigationParams( |
|
clamy
2015/08/24 12:27:35
If we remove parameters such as FetchCredentialsMo
Fabrice (no longer in Chrome)
2015/08/26 13:23:25
Done.
| |
| 4815 request->httpMethod().latin1(), GetWebURLRequestHeaders(*request), | 4829 request->httpMethod().latin1(), |
| 4816 GetLoadFlagsForWebURLRequest(*request), request->hasUserGesture()), | 4830 GetWebURLRequestHeaders(*request), |
| 4831 GetLoadFlagsForWebURLRequest(*request), | |
| 4832 request->hasUserGesture(), | |
| 4833 request->skipServiceWorker(), | |
| 4834 GetFetchRequestModeForWebURLRequest(*request), | |
| 4835 GetFetchCredentialsModeForWebURLRequest(*request), | |
| 4836 GetFetchRedirectModeForWebURLRequest(*request), | |
| 4837 GetRequestContextTypeForWebURLRequest(*request), | |
| 4838 GetRequestContextFrameTypeForWebURLRequest(*request)), | |
| 4817 GetRequestBodyForWebURLRequest(*request))); | 4839 GetRequestBodyForWebURLRequest(*request))); |
| 4818 } | 4840 } |
| 4819 | 4841 |
| 4820 void RenderFrameImpl::LoadDataURL(const CommonNavigationParams& params, | 4842 void RenderFrameImpl::LoadDataURL(const CommonNavigationParams& params, |
| 4821 WebFrame* frame) { | 4843 WebFrame* frame) { |
| 4822 // A loadData request with a specified base URL. | 4844 // A loadData request with a specified base URL. |
| 4823 std::string mime_type, charset, data; | 4845 std::string mime_type, charset, data; |
| 4824 if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) { | 4846 if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) { |
| 4825 const GURL base_url = params.base_url_for_data_url.is_empty() ? | 4847 const GURL base_url = params.base_url_for_data_url.is_empty() ? |
| 4826 params.url : params.base_url_for_data_url; | 4848 params.url : params.base_url_for_data_url; |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5073 void RenderFrameImpl::RegisterMojoServices() { | 5095 void RenderFrameImpl::RegisterMojoServices() { |
| 5074 // Only main frame have ImageDownloader service. | 5096 // Only main frame have ImageDownloader service. |
| 5075 if (!frame_->parent()) { | 5097 if (!frame_->parent()) { |
| 5076 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( | 5098 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( |
| 5077 base::Bind(&ImageDownloaderImpl::CreateMojoService, | 5099 base::Bind(&ImageDownloaderImpl::CreateMojoService, |
| 5078 base::Unretained(this))); | 5100 base::Unretained(this))); |
| 5079 } | 5101 } |
| 5080 } | 5102 } |
| 5081 | 5103 |
| 5082 } // namespace content | 5104 } // namespace content |
| OLD | NEW |