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

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

Issue 1294243004: PlzNavigate: Make ServiceWorker work with PlzNavigate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Style, placeholders, all that stuff Created 5 years, 4 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 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698