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

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

Issue 1399363004: PlzNavigate: Make ServiceWorker work with PlzNavigate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed Kinuko's comments Created 5 years, 1 month 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 2627 matching lines...) Expand 10 before | Expand all | Expand 10 after
2638 document_state->set_load_type(DocumentState::LINK_LOAD_CACHE_ONLY); 2638 document_state->set_load_type(DocumentState::LINK_LOAD_CACHE_ONLY);
2639 break; 2639 break;
2640 default: 2640 default:
2641 NOTREACHED(); 2641 NOTREACHED();
2642 } 2642 }
2643 } 2643 }
2644 2644
2645 // Create the serviceworker's per-document network observing object if it 2645 // Create the serviceworker's per-document network observing object if it
2646 // does not exist (When navigation happens within a page, the provider already 2646 // does not exist (When navigation happens within a page, the provider already
2647 // exists). 2647 // exists).
2648 if (!ServiceWorkerNetworkProvider::FromDocumentState( 2648 if (ServiceWorkerNetworkProvider::FromDocumentState(
2649 DocumentState::FromDataSource(datasource))) { 2649 DocumentState::FromDataSource(datasource)))
2650 ServiceWorkerProviderType provider_type = 2650 return;
2651 SERVICE_WORKER_PROVIDER_FOR_WINDOW; 2651
2652 if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) == 2652 NavigationStateImpl* navigation_state = static_cast<NavigationStateImpl*>(
2653 blink::WebSandboxFlags::Origin) { 2653 DocumentState::FromDataSource(datasource)->navigation_state());
2654 provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME; 2654
2655 } 2655 ServiceWorkerNetworkProvider::AttachToDocumentState(
2656 scoped_ptr<ServiceWorkerNetworkProvider> network_provider( 2656 DocumentState::FromDataSource(datasource),
2657 new ServiceWorkerNetworkProvider(routing_id_, provider_type)); 2657 ServiceWorkerNetworkProvider::CreateForNavigation(
2658 ServiceWorkerNetworkProvider::AttachToDocumentState( 2658 routing_id_, navigation_state->request_params(),
2659 DocumentState::FromDataSource(datasource), 2659 frame->effectiveSandboxFlags(), content_initiated));
2660 network_provider.Pass());
2661 }
2662 } 2660 }
2663 2661
2664 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame, 2662 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame,
2665 double triggering_event_time) { 2663 double triggering_event_time) {
2666 DCHECK(!frame_ || frame_ == frame); 2664 DCHECK(!frame_ || frame_ == frame);
2667 WebDataSource* ds = frame->provisionalDataSource(); 2665 WebDataSource* ds = frame->provisionalDataSource();
2668 2666
2669 // In fast/loader/stop-provisional-loads.html, we abort the load before this 2667 // In fast/loader/stop-provisional-loads.html, we abort the load before this
2670 // callback is invoked. 2668 // callback is invoked.
2671 if (!ds) 2669 if (!ds)
(...skipping 738 matching lines...) Expand 10 before | Expand all | Expand 10 after
3410 3408
3411 int provider_id = kInvalidServiceWorkerProviderId; 3409 int provider_id = kInvalidServiceWorkerProviderId;
3412 if (request.frameType() == blink::WebURLRequest::FrameTypeTopLevel || 3410 if (request.frameType() == blink::WebURLRequest::FrameTypeTopLevel ||
3413 request.frameType() == blink::WebURLRequest::FrameTypeNested) { 3411 request.frameType() == blink::WebURLRequest::FrameTypeNested) {
3414 // |provisionalDataSource| may be null in some content::ResourceFetcher 3412 // |provisionalDataSource| may be null in some content::ResourceFetcher
3415 // use cases, we don't hook those requests. 3413 // use cases, we don't hook those requests.
3416 if (frame->provisionalDataSource()) { 3414 if (frame->provisionalDataSource()) {
3417 ServiceWorkerNetworkProvider* provider = 3415 ServiceWorkerNetworkProvider* provider =
3418 ServiceWorkerNetworkProvider::FromDocumentState( 3416 ServiceWorkerNetworkProvider::FromDocumentState(
3419 DocumentState::FromDataSource(frame->provisionalDataSource())); 3417 DocumentState::FromDataSource(frame->provisionalDataSource()));
3418 DCHECK(provider);
3420 provider_id = provider->provider_id(); 3419 provider_id = provider->provider_id();
3421 } 3420 }
3422 } else if (frame->dataSource()) { 3421 } else if (frame->dataSource()) {
3423 ServiceWorkerNetworkProvider* provider = 3422 ServiceWorkerNetworkProvider* provider =
3424 ServiceWorkerNetworkProvider::FromDocumentState( 3423 ServiceWorkerNetworkProvider::FromDocumentState(
3425 DocumentState::FromDataSource(frame->dataSource())); 3424 DocumentState::FromDataSource(frame->dataSource()));
3425 DCHECK(provider);
3426 provider_id = provider->provider_id(); 3426 provider_id = provider->provider_id();
3427 // Explicitly set the SkipServiceWorker flag here if the renderer process 3427 // Explicitly set the SkipServiceWorker flag here if the renderer process
3428 // hasn't received SetControllerServiceWorker message. 3428 // hasn't received SetControllerServiceWorker message.
3429 if (!provider->IsControlledByServiceWorker()) 3429 if (!provider->IsControlledByServiceWorker())
3430 request.setSkipServiceWorker(true); 3430 request.setSkipServiceWorker(true);
3431 } 3431 }
3432 3432
3433 WebFrame* parent = frame->parent(); 3433 WebFrame* parent = frame->parent();
3434 int parent_routing_id = parent ? GetRoutingIdForFrameOrProxy(parent) : -1; 3434 int parent_routing_id = parent ? GetRoutingIdForFrameOrProxy(parent) : -1;
3435 3435
(...skipping 1848 matching lines...) Expand 10 before | Expand all | Expand 10 after
5284 mojo::ServiceProviderPtr service_provider; 5284 mojo::ServiceProviderPtr service_provider;
5285 mojo::URLRequestPtr request(mojo::URLRequest::New()); 5285 mojo::URLRequestPtr request(mojo::URLRequest::New());
5286 request->url = mojo::String::From(url); 5286 request->url = mojo::String::From(url);
5287 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), 5287 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider),
5288 nullptr, nullptr, 5288 nullptr, nullptr,
5289 base::Bind(&OnGotContentHandlerID)); 5289 base::Bind(&OnGotContentHandlerID));
5290 return service_provider.Pass(); 5290 return service_provider.Pass();
5291 } 5291 }
5292 5292
5293 } // namespace content 5293 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698