| 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 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 WebString web_referrer = WebSecurityPolicy::generateReferrerHeader( | 417 WebString web_referrer = WebSecurityPolicy::generateReferrerHeader( |
| 418 common_params.referrer.policy, | 418 common_params.referrer.policy, |
| 419 common_params.url, | 419 common_params.url, |
| 420 WebString::fromUTF8(common_params.referrer.url.spec())); | 420 WebString::fromUTF8(common_params.referrer.url.spec())); |
| 421 if (!web_referrer.isEmpty()) | 421 if (!web_referrer.isEmpty()) |
| 422 request.setHTTPReferrer(web_referrer, common_params.referrer.policy); | 422 request.setHTTPReferrer(web_referrer, common_params.referrer.policy); |
| 423 } | 423 } |
| 424 | 424 |
| 425 RequestExtraData* extra_data = new RequestExtraData(); | 425 RequestExtraData* extra_data = new RequestExtraData(); |
| 426 extra_data->set_stream_override(stream_override.Pass()); | 426 extra_data->set_stream_override(stream_override.Pass()); |
| 427 extra_data->set_service_worker_provider_id( |
| 428 common_params.service_worker_provider_id); |
| 427 request.setExtraData(extra_data); | 429 request.setExtraData(extra_data); |
| 428 | 430 |
| 429 // Set the ui timestamp for this navigation. Currently the timestamp here is | 431 // Set the ui timestamp for this navigation. Currently the timestamp here is |
| 430 // only non empty when the navigation was triggered by an Android intent. The | 432 // only non empty when the navigation was triggered by an Android intent. The |
| 431 // timestamp is converted to a double version supported by blink. It will be | 433 // timestamp is converted to a double version supported by blink. It will be |
| 432 // passed back to the browser in the DidCommitProvisionalLoad and the | 434 // passed back to the browser in the DidCommitProvisionalLoad and the |
| 433 // DocumentLoadComplete IPCs. | 435 // DocumentLoadComplete IPCs. |
| 434 base::TimeDelta ui_timestamp = common_params.ui_timestamp - base::TimeTicks(); | 436 base::TimeDelta ui_timestamp = common_params.ui_timestamp - base::TimeTicks(); |
| 435 request.setUiStartTime(ui_timestamp.InSecondsF()); | 437 request.setUiStartTime(ui_timestamp.InSecondsF()); |
| 436 request.setInputPerfMetricReportPolicy( | 438 request.setInputPerfMetricReportPolicy( |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 483 // CommitNavigation IPC, and then back to the browser again in the | 485 // CommitNavigation IPC, and then back to the browser again in the |
| 484 // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs. | 486 // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs. |
| 485 base::TimeTicks ui_timestamp = | 487 base::TimeTicks ui_timestamp = |
| 486 base::TimeTicks() + base::TimeDelta::FromSecondsD(request->uiStartTime()); | 488 base::TimeTicks() + base::TimeDelta::FromSecondsD(request->uiStartTime()); |
| 487 FrameMsg_UILoadMetricsReportType::Value report_type = | 489 FrameMsg_UILoadMetricsReportType::Value report_type = |
| 488 static_cast<FrameMsg_UILoadMetricsReportType::Value>( | 490 static_cast<FrameMsg_UILoadMetricsReportType::Value>( |
| 489 request->inputPerfMetricReportPolicy()); | 491 request->inputPerfMetricReportPolicy()); |
| 490 return CommonNavigationParams( | 492 return CommonNavigationParams( |
| 491 request->url(), referrer, extra_data->transition_type(), | 493 request->url(), referrer, extra_data->transition_type(), |
| 492 FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry, | 494 FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry, |
| 493 ui_timestamp, report_type, GURL(), GURL()); | 495 ui_timestamp, report_type, GURL(), GURL(), |
| 496 extra_data->service_worker_provider_id()); |
| 494 } | 497 } |
| 495 | 498 |
| 496 #if !defined(OS_ANDROID) || defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | 499 #if !defined(OS_ANDROID) || defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
| 497 media::Context3D GetSharedMainThreadContext3D() { | 500 media::Context3D GetSharedMainThreadContext3D() { |
| 498 cc::ContextProvider* provider = | 501 cc::ContextProvider* provider = |
| 499 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); | 502 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); |
| 500 if (!provider) | 503 if (!provider) |
| 501 return media::Context3D(); | 504 return media::Context3D(); |
| 502 return media::Context3D(provider->ContextGL(), provider->GrContext()); | 505 return media::Context3D(provider->ContextGL(), provider->GrContext()); |
| 503 } | 506 } |
| (...skipping 2046 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2550 // does not exist (When navigation happens within a page, the provider already | 2553 // does not exist (When navigation happens within a page, the provider already |
| 2551 // exists). | 2554 // exists). |
| 2552 if (!ServiceWorkerNetworkProvider::FromDocumentState( | 2555 if (!ServiceWorkerNetworkProvider::FromDocumentState( |
| 2553 DocumentState::FromDataSource(datasource))) { | 2556 DocumentState::FromDataSource(datasource))) { |
| 2554 ServiceWorkerProviderType provider_type = | 2557 ServiceWorkerProviderType provider_type = |
| 2555 SERVICE_WORKER_PROVIDER_FOR_WINDOW; | 2558 SERVICE_WORKER_PROVIDER_FOR_WINDOW; |
| 2556 if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) == | 2559 if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) == |
| 2557 blink::WebSandboxFlags::Origin) { | 2560 blink::WebSandboxFlags::Origin) { |
| 2558 provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME; | 2561 provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME; |
| 2559 } | 2562 } |
| 2563 const WebURLRequest& original_request = datasource->originalRequest(); |
| 2564 |
| 2565 int service_worker_provider_id = kInvalidServiceWorkerProviderId; |
| 2566 if (original_request.extraData()) { |
| 2567 RequestExtraData* extra_data = |
| 2568 static_cast<RequestExtraData*>(original_request.extraData()); |
| 2569 service_worker_provider_id = extra_data->service_worker_provider_id(); |
| 2570 } |
| 2571 |
| 2560 scoped_ptr<ServiceWorkerNetworkProvider> network_provider( | 2572 scoped_ptr<ServiceWorkerNetworkProvider> network_provider( |
| 2561 new ServiceWorkerNetworkProvider(routing_id_, provider_type)); | 2573 new ServiceWorkerNetworkProvider(routing_id_, provider_type, |
| 2574 service_worker_provider_id)); |
| 2575 |
| 2562 ServiceWorkerNetworkProvider::AttachToDocumentState( | 2576 ServiceWorkerNetworkProvider::AttachToDocumentState( |
| 2563 DocumentState::FromDataSource(datasource), | 2577 DocumentState::FromDataSource(datasource), |
| 2564 network_provider.Pass()); | 2578 network_provider.Pass()); |
| 2565 } | 2579 } |
| 2566 } | 2580 } |
| 2567 | 2581 |
| 2568 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame, | 2582 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame, |
| 2569 double triggering_event_time) { | 2583 double triggering_event_time) { |
| 2570 DCHECK(!frame_ || frame_ == frame); | 2584 DCHECK(!frame_ || frame_ == frame); |
| 2571 WebDataSource* ds = frame->provisionalDataSource(); | 2585 WebDataSource* ds = frame->provisionalDataSource(); |
| (...skipping 2263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4835 WebDataSource* provisional_data_source = frame_->provisionalDataSource(); | 4849 WebDataSource* provisional_data_source = frame_->provisionalDataSource(); |
| 4836 WebDataSource* current_data_source = frame_->dataSource(); | 4850 WebDataSource* current_data_source = frame_->dataSource(); |
| 4837 WebDataSource* data_source = | 4851 WebDataSource* data_source = |
| 4838 provisional_data_source ? provisional_data_source : current_data_source; | 4852 provisional_data_source ? provisional_data_source : current_data_source; |
| 4839 | 4853 |
| 4840 // The current entry can only be replaced if there already is an entry in the | 4854 // The current entry can only be replaced if there already is an entry in the |
| 4841 // history list. | 4855 // history list. |
| 4842 if (data_source && render_view_->history_list_length_ > 0) { | 4856 if (data_source && render_view_->history_list_length_ > 0) { |
| 4843 should_replace_current_entry = data_source->replacesCurrentHistoryItem(); | 4857 should_replace_current_entry = data_source->replacesCurrentHistoryItem(); |
| 4844 } | 4858 } |
| 4859 |
| 4860 DCHECK_EQ(FETCH_REQUEST_MODE_SAME_ORIGIN, |
| 4861 GetFetchRequestModeForWebURLRequest(*request)); |
| 4862 DCHECK_EQ(FETCH_CREDENTIALS_MODE_INCLUDE, |
| 4863 GetFetchCredentialsModeForWebURLRequest(*request)); |
| 4864 DCHECK(GetFetchRedirectModeForWebURLRequest(*request) == |
| 4865 FetchRedirectMode::MANUAL_MODE); |
| 4866 DCHECK_IMPLIES(!frame_->parent(), |
| 4867 GetRequestContextFrameTypeForWebURLRequest(*request) == |
| 4868 REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL); |
| 4869 DCHECK_IMPLIES(frame_->parent(), |
| 4870 GetRequestContextFrameTypeForWebURLRequest(*request) == |
| 4871 REQUEST_CONTEXT_FRAME_TYPE_NESTED); |
| 4872 |
| 4845 Send(new FrameHostMsg_BeginNavigation( | 4873 Send(new FrameHostMsg_BeginNavigation( |
| 4846 routing_id_, | 4874 routing_id_, |
| 4847 MakeCommonNavigationParams(request, should_replace_current_entry), | 4875 MakeCommonNavigationParams(request, should_replace_current_entry), |
| 4848 BeginNavigationParams( | 4876 BeginNavigationParams( |
| 4849 request->httpMethod().latin1(), GetWebURLRequestHeaders(*request), | 4877 request->httpMethod().latin1(), |
| 4850 GetLoadFlagsForWebURLRequest(*request), request->hasUserGesture()), | 4878 GetWebURLRequestHeaders(*request), |
| 4879 GetLoadFlagsForWebURLRequest(*request), |
| 4880 request->hasUserGesture(), |
| 4881 request->skipServiceWorker(), |
| 4882 GetRequestContextTypeForWebURLRequest(*request)), |
| 4851 GetRequestBodyForWebURLRequest(*request))); | 4883 GetRequestBodyForWebURLRequest(*request))); |
| 4852 } | 4884 } |
| 4853 | 4885 |
| 4854 void RenderFrameImpl::LoadDataURL(const CommonNavigationParams& params, | 4886 void RenderFrameImpl::LoadDataURL(const CommonNavigationParams& params, |
| 4855 WebFrame* frame) { | 4887 WebFrame* frame) { |
| 4856 // A loadData request with a specified base URL. | 4888 // A loadData request with a specified base URL. |
| 4857 std::string mime_type, charset, data; | 4889 std::string mime_type, charset, data; |
| 4858 if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) { | 4890 if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) { |
| 4859 const GURL base_url = params.base_url_for_data_url.is_empty() ? | 4891 const GURL base_url = params.base_url_for_data_url.is_empty() ? |
| 4860 params.url : params.base_url_for_data_url; | 4892 params.url : params.base_url_for_data_url; |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5105 mojo::ServiceProviderPtr service_provider; | 5137 mojo::ServiceProviderPtr service_provider; |
| 5106 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 5138 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 5107 request->url = mojo::String::From(url); | 5139 request->url = mojo::String::From(url); |
| 5108 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), | 5140 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), |
| 5109 nullptr, nullptr, | 5141 nullptr, nullptr, |
| 5110 base::Bind(&OnGotContentHandlerID)); | 5142 base::Bind(&OnGotContentHandlerID)); |
| 5111 return service_provider.Pass(); | 5143 return service_provider.Pass(); |
| 5112 } | 5144 } |
| 5113 | 5145 |
| 5114 } // namespace content | 5146 } // namespace content |
| OLD | NEW |