OLD | NEW |
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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/memory/weak_ptr.h" | 6 #include "base/memory/weak_ptr.h" |
7 #include "content/browser/service_worker/service_worker_context_core.h" | 7 #include "content/browser/service_worker/service_worker_context_core.h" |
8 #include "content/browser/service_worker/service_worker_provider_host.h" | 8 #include "content/browser/service_worker/service_worker_provider_host.h" |
9 #include "content/browser/service_worker/service_worker_register_job.h" | 9 #include "content/browser/service_worker/service_worker_register_job.h" |
10 #include "content/browser/service_worker/service_worker_registration.h" | 10 #include "content/browser/service_worker/service_worker_registration.h" |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 // Disassociating one provider_host shouldn't remove all process refs | 107 // Disassociating one provider_host shouldn't remove all process refs |
108 // from the version yet. | 108 // from the version yet. |
109 provider_host1_->SetActiveVersion(NULL); | 109 provider_host1_->SetActiveVersion(NULL); |
110 ASSERT_TRUE(version_->HasProcessToRun()); | 110 ASSERT_TRUE(version_->HasProcessToRun()); |
111 | 111 |
112 // Disassociating the other provider_host will remove all process refs. | 112 // Disassociating the other provider_host will remove all process refs. |
113 provider_host2_->SetActiveVersion(NULL); | 113 provider_host2_->SetActiveVersion(NULL); |
114 ASSERT_FALSE(version_->HasProcessToRun()); | 114 ASSERT_FALSE(version_->HasProcessToRun()); |
115 } | 115 } |
116 | 116 |
117 TEST_F(ServiceWorkerProviderHostTest, SetPendingVersion_ProcessStatus) { | 117 TEST_F(ServiceWorkerProviderHostTest, SetWaitingVersion_ProcessStatus) { |
118 ASSERT_FALSE(version_->HasProcessToRun()); | 118 ASSERT_FALSE(version_->HasProcessToRun()); |
119 | 119 |
120 // Associating version_ to a provider_host's pending version will internally | 120 // Associating version_ to a provider_host's waiting version will internally |
121 // add the provider_host's process ref to the version. | 121 // add the provider_host's process ref to the version. |
122 provider_host1_->SetPendingVersion(version_); | 122 provider_host1_->SetWaitingVersion(version_); |
123 ASSERT_TRUE(version_->HasProcessToRun()); | 123 ASSERT_TRUE(version_->HasProcessToRun()); |
124 | 124 |
125 // Re-associating the same version and provider_host should just work too. | 125 // Re-associating the same version and provider_host should just work too. |
126 provider_host1_->SetPendingVersion(version_); | 126 provider_host1_->SetWaitingVersion(version_); |
127 ASSERT_TRUE(version_->HasProcessToRun()); | 127 ASSERT_TRUE(version_->HasProcessToRun()); |
128 | 128 |
129 // Resetting the provider_host's pending version should remove process refs | 129 // Resetting the provider_host's waiting version should remove process refs |
130 // from the version. | 130 // from the version. |
131 provider_host1_->SetPendingVersion(NULL); | 131 provider_host1_->SetWaitingVersion(NULL); |
132 ASSERT_FALSE(version_->HasProcessToRun()); | 132 ASSERT_FALSE(version_->HasProcessToRun()); |
133 } | 133 } |
134 | 134 |
135 TEST_F(ServiceWorkerProviderHostTest, | 135 TEST_F(ServiceWorkerProviderHostTest, |
136 SetPendingVersion_MultipleHostsForSameProcess) { | 136 SetWaitingVersion_MultipleHostsForSameProcess) { |
137 ASSERT_FALSE(version_->HasProcessToRun()); | 137 ASSERT_FALSE(version_->HasProcessToRun()); |
138 | 138 |
139 // Associating version_ to two providers as active version. | 139 // Associating version_ to two providers as active version. |
140 provider_host1_->SetPendingVersion(version_); | 140 provider_host1_->SetWaitingVersion(version_); |
141 provider_host2_->SetPendingVersion(version_); | 141 provider_host2_->SetWaitingVersion(version_); |
142 ASSERT_TRUE(version_->HasProcessToRun()); | 142 ASSERT_TRUE(version_->HasProcessToRun()); |
143 | 143 |
144 // Disassociating one provider_host shouldn't remove all process refs | 144 // Disassociating one provider_host shouldn't remove all process refs |
145 // from the version yet. | 145 // from the version yet. |
146 provider_host1_->SetPendingVersion(NULL); | 146 provider_host1_->SetWaitingVersion(NULL); |
147 ASSERT_TRUE(version_->HasProcessToRun()); | 147 ASSERT_TRUE(version_->HasProcessToRun()); |
148 | 148 |
149 // Disassociating the other provider_host will remove all process refs. | 149 // Disassociating the other provider_host will remove all process refs. |
150 provider_host2_->SetPendingVersion(NULL); | 150 provider_host2_->SetWaitingVersion(NULL); |
151 ASSERT_FALSE(version_->HasProcessToRun()); | 151 ASSERT_FALSE(version_->HasProcessToRun()); |
152 } | 152 } |
153 | 153 |
154 class ServiceWorkerProviderHostPendingVersionTest : public testing::Test { | 154 class ServiceWorkerProviderHostWaitingVersionTest : public testing::Test { |
155 protected: | 155 protected: |
156 ServiceWorkerProviderHostPendingVersionTest() | 156 ServiceWorkerProviderHostWaitingVersionTest() |
157 : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), | 157 : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), |
158 next_provider_id_(1L) {} | 158 next_provider_id_(1L) {} |
159 virtual ~ServiceWorkerProviderHostPendingVersionTest() {} | 159 virtual ~ServiceWorkerProviderHostWaitingVersionTest() {} |
160 | 160 |
161 virtual void SetUp() OVERRIDE { | 161 virtual void SetUp() OVERRIDE { |
162 context_.reset( | 162 context_.reset( |
163 new ServiceWorkerContextCore(base::FilePath(), | 163 new ServiceWorkerContextCore(base::FilePath(), |
164 base::MessageLoopProxy::current(), | 164 base::MessageLoopProxy::current(), |
165 base::MessageLoopProxy::current(), | 165 base::MessageLoopProxy::current(), |
166 NULL, | 166 NULL, |
167 NULL, | 167 NULL, |
168 NULL)); | 168 NULL)); |
169 | 169 |
(...skipping 19 matching lines...) Expand all Loading... |
189 | 189 |
190 content::TestBrowserThreadBundle thread_bundle_; | 190 content::TestBrowserThreadBundle thread_bundle_; |
191 scoped_ptr<ServiceWorkerContextCore> context_; | 191 scoped_ptr<ServiceWorkerContextCore> context_; |
192 base::WeakPtr<ServiceWorkerProviderHost> provider_host1_; | 192 base::WeakPtr<ServiceWorkerProviderHost> provider_host1_; |
193 base::WeakPtr<ServiceWorkerProviderHost> provider_host2_; | 193 base::WeakPtr<ServiceWorkerProviderHost> provider_host2_; |
194 base::WeakPtr<ServiceWorkerProviderHost> provider_host3_; | 194 base::WeakPtr<ServiceWorkerProviderHost> provider_host3_; |
195 | 195 |
196 private: | 196 private: |
197 int64 next_provider_id_; | 197 int64 next_provider_id_; |
198 | 198 |
199 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerProviderHostPendingVersionTest); | 199 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerProviderHostWaitingVersionTest); |
200 }; | 200 }; |
201 | 201 |
202 TEST_F(ServiceWorkerProviderHostPendingVersionTest, | 202 TEST_F(ServiceWorkerProviderHostWaitingVersionTest, |
203 AssociatePendingVersionToDocuments) { | 203 AssociateWaitingVersionToDocuments) { |
204 const GURL scope("http://www.example.com/*"); | 204 const GURL scope("http://www.example.com/*"); |
205 const GURL script_url("http://www.example.com/service_worker.js"); | 205 const GURL script_url("http://www.example.com/service_worker.js"); |
206 | 206 |
207 scoped_refptr<ServiceWorkerRegistration> registration( | 207 scoped_refptr<ServiceWorkerRegistration> registration( |
208 new ServiceWorkerRegistration( | 208 new ServiceWorkerRegistration( |
209 scope, script_url, 1L, context_->AsWeakPtr())); | 209 scope, script_url, 1L, context_->AsWeakPtr())); |
210 scoped_refptr<ServiceWorkerVersion> version( | 210 scoped_refptr<ServiceWorkerVersion> version( |
211 new ServiceWorkerVersion(registration, 1L, context_->AsWeakPtr())); | 211 new ServiceWorkerVersion(registration, 1L, context_->AsWeakPtr())); |
212 | 212 |
213 ServiceWorkerRegisterJob::AssociatePendingVersionToDocuments( | 213 ServiceWorkerRegisterJob::AssociateWaitingVersionToDocuments( |
214 context_->AsWeakPtr(), version.get()); | 214 context_->AsWeakPtr(), version.get()); |
215 EXPECT_EQ(version.get(), provider_host1_->pending_version()); | 215 EXPECT_EQ(version.get(), provider_host1_->waiting_version()); |
216 EXPECT_EQ(version.get(), provider_host2_->pending_version()); | 216 EXPECT_EQ(version.get(), provider_host2_->waiting_version()); |
217 EXPECT_EQ(NULL, provider_host3_->pending_version()); | 217 EXPECT_EQ(NULL, provider_host3_->waiting_version()); |
218 } | 218 } |
219 | 219 |
220 TEST_F(ServiceWorkerProviderHostPendingVersionTest, | 220 TEST_F(ServiceWorkerProviderHostWaitingVersionTest, |
221 DisassociatePendingVersionFromDocuments) { | 221 DisassociateWaitingVersionFromDocuments) { |
222 const GURL scope1("http://www.example.com/*"); | 222 const GURL scope1("http://www.example.com/*"); |
223 const GURL script_url1("http://www.example.com/service_worker.js"); | 223 const GURL script_url1("http://www.example.com/service_worker.js"); |
224 scoped_refptr<ServiceWorkerRegistration> registration1( | 224 scoped_refptr<ServiceWorkerRegistration> registration1( |
225 new ServiceWorkerRegistration( | 225 new ServiceWorkerRegistration( |
226 scope1, script_url1, 1L, context_->AsWeakPtr())); | 226 scope1, script_url1, 1L, context_->AsWeakPtr())); |
227 scoped_refptr<ServiceWorkerVersion> version1( | 227 scoped_refptr<ServiceWorkerVersion> version1( |
228 new ServiceWorkerVersion(registration1, 1L, context_->AsWeakPtr())); | 228 new ServiceWorkerVersion(registration1, 1L, context_->AsWeakPtr())); |
229 | 229 |
230 const GURL scope2("http://www.example.ca/*"); | 230 const GURL scope2("http://www.example.ca/*"); |
231 const GURL script_url2("http://www.example.ca/service_worker.js"); | 231 const GURL script_url2("http://www.example.ca/service_worker.js"); |
232 scoped_refptr<ServiceWorkerRegistration> registration2( | 232 scoped_refptr<ServiceWorkerRegistration> registration2( |
233 new ServiceWorkerRegistration( | 233 new ServiceWorkerRegistration( |
234 scope2, script_url2, 2L, context_->AsWeakPtr())); | 234 scope2, script_url2, 2L, context_->AsWeakPtr())); |
235 scoped_refptr<ServiceWorkerVersion> version2( | 235 scoped_refptr<ServiceWorkerVersion> version2( |
236 new ServiceWorkerVersion(registration2, 2L, context_->AsWeakPtr())); | 236 new ServiceWorkerVersion(registration2, 2L, context_->AsWeakPtr())); |
237 | 237 |
238 ServiceWorkerRegisterJob::AssociatePendingVersionToDocuments( | 238 ServiceWorkerRegisterJob::AssociateWaitingVersionToDocuments( |
239 context_->AsWeakPtr(), version1.get()); | 239 context_->AsWeakPtr(), version1.get()); |
240 ServiceWorkerRegisterJob::AssociatePendingVersionToDocuments( | 240 ServiceWorkerRegisterJob::AssociateWaitingVersionToDocuments( |
241 context_->AsWeakPtr(), version2.get()); | 241 context_->AsWeakPtr(), version2.get()); |
242 | 242 |
243 // Host1 and host2 are associated with version1 as a pending version, whereas | 243 // Host1 and host2 are associated with version1 as a waiting version, whereas |
244 // host3 is associated with version2. | 244 // host3 is associated with version2. |
245 EXPECT_EQ(version1.get(), provider_host1_->pending_version()); | 245 EXPECT_EQ(version1.get(), provider_host1_->waiting_version()); |
246 EXPECT_EQ(version1.get(), provider_host2_->pending_version()); | 246 EXPECT_EQ(version1.get(), provider_host2_->waiting_version()); |
247 EXPECT_EQ(version2.get(), provider_host3_->pending_version()); | 247 EXPECT_EQ(version2.get(), provider_host3_->waiting_version()); |
248 | 248 |
249 // Disassociate version1 from host1 and host2. | 249 // Disassociate version1 from host1 and host2. |
250 ServiceWorkerRegisterJob::DisassociatePendingVersionFromDocuments( | 250 ServiceWorkerRegisterJob::DisassociateWaitingVersionFromDocuments( |
251 context_->AsWeakPtr(), version1->version_id()); | 251 context_->AsWeakPtr(), version1->version_id()); |
252 EXPECT_EQ(NULL, provider_host1_->pending_version()); | 252 EXPECT_EQ(NULL, provider_host1_->waiting_version()); |
253 EXPECT_EQ(NULL, provider_host2_->pending_version()); | 253 EXPECT_EQ(NULL, provider_host2_->waiting_version()); |
254 EXPECT_EQ(version2.get(), provider_host3_->pending_version()); | 254 EXPECT_EQ(version2.get(), provider_host3_->waiting_version()); |
255 } | 255 } |
256 | 256 |
257 } // namespace content | 257 } // namespace content |
OLD | NEW |