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

Side by Side Diff: content/child/service_worker/service_worker_network_provider.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/child/service_worker/service_worker_network_provider.h" 5 #include "content/child/service_worker/service_worker_network_provider.h"
6 6
7 #include "base/atomic_sequence_num.h" 7 #include "base/atomic_sequence_num.h"
8 #include "base/command_line.h"
8 #include "content/child/child_thread_impl.h" 9 #include "content/child/child_thread_impl.h"
9 #include "content/child/service_worker/service_worker_provider_context.h" 10 #include "content/child/service_worker/service_worker_provider_context.h"
10 #include "content/common/service_worker/service_worker_messages.h" 11 #include "content/common/service_worker/service_worker_messages.h"
12 #include "content/public/common/content_switches.h"
11 13
12 namespace content { 14 namespace content {
13 15
14 namespace { 16 namespace {
15 17
16 const char kUserDataKey[] = "SWProviderKey"; 18 const char kUserDataKey[] = "SWProviderKey";
17 19
18 // Must be unique in the child process. 20 // Must be unique in the child process.
19 int GetNextProviderId() { 21 int GetNextProviderId() {
20 static base::StaticAtomicSequenceNumber sequence; 22 static base::StaticAtomicSequenceNumber sequence;
(...skipping 18 matching lines...) Expand all
39 } 41 }
40 42
41 ServiceWorkerNetworkProvider* ServiceWorkerNetworkProvider::FromDocumentState( 43 ServiceWorkerNetworkProvider* ServiceWorkerNetworkProvider::FromDocumentState(
42 base::SupportsUserData* datasource_userdata) { 44 base::SupportsUserData* datasource_userdata) {
43 return static_cast<ServiceWorkerNetworkProvider*>( 45 return static_cast<ServiceWorkerNetworkProvider*>(
44 datasource_userdata->GetUserData(&kUserDataKey)); 46 datasource_userdata->GetUserData(&kUserDataKey));
45 } 47 }
46 48
47 ServiceWorkerNetworkProvider::ServiceWorkerNetworkProvider( 49 ServiceWorkerNetworkProvider::ServiceWorkerNetworkProvider(
48 int route_id, 50 int route_id,
51 ServiceWorkerProviderType provider_type,
52 int browser_provider_id) {
kinuko 2015/08/21 14:00:44 provider_id_(kInvalidServiceWorkerProviderId) here
Fabrice (no longer in Chrome) 2015/08/26 13:23:24 This won't work because GenerateProviderIdForType
53 if (browser_provider_id < kInvalidServiceWorkerProviderId) {
54 // PlzNavigate
55 CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch(
56 switches::kEnableBrowserSideNavigation));
57 // This was a browser-initiated navigation, the ServiceWorkerProviderHost
58 // has already been initialized, copy the provider_id value.
59 provider_id_ = browser_provider_id;
60 } else if (browser_provider_id == kInvalidServiceWorkerProviderId) {
61 // Initialize a new provider ID in all other cases.
62 provider_id_ = GenerateProviderIdForType(provider_type);
63 } else {
64 NOTREACHED() << "The browser_provider_id argument was set to "
65 << browser_provider_id << ".";
66 }
67
68 if (provider_id_ == kInvalidServiceWorkerProviderId)
69 return;
70
71 context_ = new ServiceWorkerProviderContext(provider_id_);
72 if (!ChildThreadImpl::current())
73 return; // May be null in some tests.
74
75 ChildThreadImpl::current()->Send(new ServiceWorkerHostMsg_ProviderCreated(
76 provider_id_, route_id, provider_type));
77 }
78
79 ServiceWorkerNetworkProvider::ServiceWorkerNetworkProvider(
80 int route_id,
49 ServiceWorkerProviderType provider_type) 81 ServiceWorkerProviderType provider_type)
50 : provider_id_(GenerateProviderIdForType(provider_type)) { 82 : ServiceWorkerNetworkProvider(route_id,
51 if (provider_id_ == kInvalidServiceWorkerProviderId) 83 provider_type,
52 return; 84 kInvalidServiceWorkerProviderId) {}
53 context_ = new ServiceWorkerProviderContext(provider_id_);
54 if (!ChildThreadImpl::current())
55 return; // May be null in some tests.
56 ChildThreadImpl::current()->Send(new ServiceWorkerHostMsg_ProviderCreated(
57 provider_id_, route_id, provider_type));
58 }
59 85
60 ServiceWorkerNetworkProvider::~ServiceWorkerNetworkProvider() { 86 ServiceWorkerNetworkProvider::~ServiceWorkerNetworkProvider() {
61 if (provider_id_ == kInvalidServiceWorkerProviderId) 87 if (provider_id_ == kInvalidServiceWorkerProviderId)
62 return; 88 return;
63 if (!ChildThreadImpl::current()) 89 if (!ChildThreadImpl::current())
64 return; // May be null in some tests. 90 return; // May be null in some tests.
65 ChildThreadImpl::current()->Send( 91 ChildThreadImpl::current()->Send(
66 new ServiceWorkerHostMsg_ProviderDestroyed(provider_id_)); 92 new ServiceWorkerHostMsg_ProviderDestroyed(provider_id_));
67 } 93 }
68 94
69 void ServiceWorkerNetworkProvider::SetServiceWorkerVersionId( 95 void ServiceWorkerNetworkProvider::SetServiceWorkerVersionId(
70 int64 version_id) { 96 int64 version_id) {
71 DCHECK_NE(kInvalidServiceWorkerProviderId, provider_id_); 97 DCHECK_NE(kInvalidServiceWorkerProviderId, provider_id_);
72 if (!ChildThreadImpl::current()) 98 if (!ChildThreadImpl::current())
73 return; // May be null in some tests. 99 return; // May be null in some tests.
74 ChildThreadImpl::current()->Send( 100 ChildThreadImpl::current()->Send(
75 new ServiceWorkerHostMsg_SetVersionId(provider_id_, version_id)); 101 new ServiceWorkerHostMsg_SetVersionId(provider_id_, version_id));
76 } 102 }
77 103
78 } // namespace content 104 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698