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/public/browser/service_worker_context.h" | 5 #include "content/public/browser/service_worker_context.h" |
6 | 6 |
7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "content/browser/browser_thread_impl.h" | 10 #include "content/browser/browser_thread_impl.h" |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 }; | 137 }; |
138 | 138 |
139 // Make sure basic registration is working. | 139 // Make sure basic registration is working. |
140 TEST_F(ServiceWorkerContextTest, Register) { | 140 TEST_F(ServiceWorkerContextTest, Register) { |
141 int64 registration_id = kInvalidServiceWorkerRegistrationId; | 141 int64 registration_id = kInvalidServiceWorkerRegistrationId; |
142 int64 version_id = kInvalidServiceWorkerVersionId; | 142 int64 version_id = kInvalidServiceWorkerVersionId; |
143 bool called = false; | 143 bool called = false; |
144 context()->RegisterServiceWorker( | 144 context()->RegisterServiceWorker( |
145 GURL("http://www.example.com/"), | 145 GURL("http://www.example.com/"), |
146 GURL("http://www.example.com/service_worker.js"), | 146 GURL("http://www.example.com/service_worker.js"), |
147 render_process_id_, | |
148 NULL, | 147 NULL, |
149 MakeRegisteredCallback(&called, ®istration_id, &version_id)); | 148 MakeRegisteredCallback(&called, ®istration_id, &version_id)); |
150 | 149 |
151 ASSERT_FALSE(called); | 150 ASSERT_FALSE(called); |
152 base::RunLoop().RunUntilIdle(); | 151 base::RunLoop().RunUntilIdle(); |
153 EXPECT_TRUE(called); | 152 EXPECT_TRUE(called); |
154 | 153 |
155 EXPECT_EQ(4UL, helper_->ipc_sink()->message_count()); | 154 EXPECT_EQ(4UL, helper_->ipc_sink()->message_count()); |
156 EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching( | 155 EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching( |
157 EmbeddedWorkerMsg_StartWorker::ID)); | 156 EmbeddedWorkerMsg_StartWorker::ID)); |
(...skipping 22 matching lines...) Expand all Loading... |
180 // or active worker in the registration. | 179 // or active worker in the registration. |
181 TEST_F(ServiceWorkerContextTest, Register_RejectInstall) { | 180 TEST_F(ServiceWorkerContextTest, Register_RejectInstall) { |
182 helper_.reset(); // Make sure the process lookups stay overridden. | 181 helper_.reset(); // Make sure the process lookups stay overridden. |
183 helper_.reset(new RejectInstallTestHelper(render_process_id_)); | 182 helper_.reset(new RejectInstallTestHelper(render_process_id_)); |
184 int64 registration_id = kInvalidServiceWorkerRegistrationId; | 183 int64 registration_id = kInvalidServiceWorkerRegistrationId; |
185 int64 version_id = kInvalidServiceWorkerVersionId; | 184 int64 version_id = kInvalidServiceWorkerVersionId; |
186 bool called = false; | 185 bool called = false; |
187 context()->RegisterServiceWorker( | 186 context()->RegisterServiceWorker( |
188 GURL("http://www.example.com/"), | 187 GURL("http://www.example.com/"), |
189 GURL("http://www.example.com/service_worker.js"), | 188 GURL("http://www.example.com/service_worker.js"), |
190 render_process_id_, | |
191 NULL, | 189 NULL, |
192 MakeRegisteredCallback(&called, ®istration_id, &version_id)); | 190 MakeRegisteredCallback(&called, ®istration_id, &version_id)); |
193 | 191 |
194 ASSERT_FALSE(called); | 192 ASSERT_FALSE(called); |
195 base::RunLoop().RunUntilIdle(); | 193 base::RunLoop().RunUntilIdle(); |
196 EXPECT_TRUE(called); | 194 EXPECT_TRUE(called); |
197 | 195 |
198 EXPECT_EQ(3UL, helper_->ipc_sink()->message_count()); | 196 EXPECT_EQ(3UL, helper_->ipc_sink()->message_count()); |
199 EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching( | 197 EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching( |
200 EmbeddedWorkerMsg_StartWorker::ID)); | 198 EmbeddedWorkerMsg_StartWorker::ID)); |
(...skipping 22 matching lines...) Expand all Loading... |
223 // or active worker in the registration. | 221 // or active worker in the registration. |
224 TEST_F(ServiceWorkerContextTest, Register_RejectActivate) { | 222 TEST_F(ServiceWorkerContextTest, Register_RejectActivate) { |
225 helper_.reset(); // Make sure the process lookups stay overridden. | 223 helper_.reset(); // Make sure the process lookups stay overridden. |
226 helper_.reset(new RejectActivateTestHelper(render_process_id_)); | 224 helper_.reset(new RejectActivateTestHelper(render_process_id_)); |
227 int64 registration_id = kInvalidServiceWorkerRegistrationId; | 225 int64 registration_id = kInvalidServiceWorkerRegistrationId; |
228 int64 version_id = kInvalidServiceWorkerVersionId; | 226 int64 version_id = kInvalidServiceWorkerVersionId; |
229 bool called = false; | 227 bool called = false; |
230 context()->RegisterServiceWorker( | 228 context()->RegisterServiceWorker( |
231 GURL("http://www.example.com/"), | 229 GURL("http://www.example.com/"), |
232 GURL("http://www.example.com/service_worker.js"), | 230 GURL("http://www.example.com/service_worker.js"), |
233 render_process_id_, | |
234 NULL, | 231 NULL, |
235 MakeRegisteredCallback(&called, ®istration_id, &version_id)); | 232 MakeRegisteredCallback(&called, ®istration_id, &version_id)); |
236 | 233 |
237 ASSERT_FALSE(called); | 234 ASSERT_FALSE(called); |
238 base::RunLoop().RunUntilIdle(); | 235 base::RunLoop().RunUntilIdle(); |
239 EXPECT_TRUE(called); | 236 EXPECT_TRUE(called); |
240 | 237 |
241 EXPECT_EQ(4UL, helper_->ipc_sink()->message_count()); | 238 EXPECT_EQ(4UL, helper_->ipc_sink()->message_count()); |
242 EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching( | 239 EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching( |
243 EmbeddedWorkerMsg_StartWorker::ID)); | 240 EmbeddedWorkerMsg_StartWorker::ID)); |
(...skipping 20 matching lines...) Expand all Loading... |
264 // Make sure registrations are cleaned up when they are unregistered. | 261 // Make sure registrations are cleaned up when they are unregistered. |
265 TEST_F(ServiceWorkerContextTest, Unregister) { | 262 TEST_F(ServiceWorkerContextTest, Unregister) { |
266 GURL pattern("http://www.example.com/"); | 263 GURL pattern("http://www.example.com/"); |
267 | 264 |
268 bool called = false; | 265 bool called = false; |
269 int64 registration_id = kInvalidServiceWorkerRegistrationId; | 266 int64 registration_id = kInvalidServiceWorkerRegistrationId; |
270 int64 version_id = kInvalidServiceWorkerVersionId; | 267 int64 version_id = kInvalidServiceWorkerVersionId; |
271 context()->RegisterServiceWorker( | 268 context()->RegisterServiceWorker( |
272 pattern, | 269 pattern, |
273 GURL("http://www.example.com/service_worker.js"), | 270 GURL("http://www.example.com/service_worker.js"), |
274 render_process_id_, | |
275 NULL, | 271 NULL, |
276 MakeRegisteredCallback(&called, ®istration_id, &version_id)); | 272 MakeRegisteredCallback(&called, ®istration_id, &version_id)); |
277 | 273 |
278 ASSERT_FALSE(called); | 274 ASSERT_FALSE(called); |
279 base::RunLoop().RunUntilIdle(); | 275 base::RunLoop().RunUntilIdle(); |
280 ASSERT_TRUE(called); | 276 ASSERT_TRUE(called); |
281 EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id); | 277 EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id); |
282 EXPECT_NE(kInvalidServiceWorkerVersionId, version_id); | 278 EXPECT_NE(kInvalidServiceWorkerVersionId, version_id); |
283 | 279 |
284 called = false; | 280 called = false; |
(...skipping 19 matching lines...) Expand all Loading... |
304 // existing registration. | 300 // existing registration. |
305 TEST_F(ServiceWorkerContextTest, RegisterNewScript) { | 301 TEST_F(ServiceWorkerContextTest, RegisterNewScript) { |
306 GURL pattern("http://www.example.com/"); | 302 GURL pattern("http://www.example.com/"); |
307 | 303 |
308 bool called = false; | 304 bool called = false; |
309 int64 old_registration_id = kInvalidServiceWorkerRegistrationId; | 305 int64 old_registration_id = kInvalidServiceWorkerRegistrationId; |
310 int64 old_version_id = kInvalidServiceWorkerVersionId; | 306 int64 old_version_id = kInvalidServiceWorkerVersionId; |
311 context()->RegisterServiceWorker( | 307 context()->RegisterServiceWorker( |
312 pattern, | 308 pattern, |
313 GURL("http://www.example.com/service_worker.js"), | 309 GURL("http://www.example.com/service_worker.js"), |
314 render_process_id_, | |
315 NULL, | 310 NULL, |
316 MakeRegisteredCallback(&called, &old_registration_id, &old_version_id)); | 311 MakeRegisteredCallback(&called, &old_registration_id, &old_version_id)); |
317 | 312 |
318 ASSERT_FALSE(called); | 313 ASSERT_FALSE(called); |
319 base::RunLoop().RunUntilIdle(); | 314 base::RunLoop().RunUntilIdle(); |
320 ASSERT_TRUE(called); | 315 ASSERT_TRUE(called); |
321 EXPECT_NE(kInvalidServiceWorkerRegistrationId, old_registration_id); | 316 EXPECT_NE(kInvalidServiceWorkerRegistrationId, old_registration_id); |
322 EXPECT_NE(kInvalidServiceWorkerVersionId, old_version_id); | 317 EXPECT_NE(kInvalidServiceWorkerVersionId, old_version_id); |
323 | 318 |
324 called = false; | 319 called = false; |
325 int64 new_registration_id = kInvalidServiceWorkerRegistrationId; | 320 int64 new_registration_id = kInvalidServiceWorkerRegistrationId; |
326 int64 new_version_id = kInvalidServiceWorkerVersionId; | 321 int64 new_version_id = kInvalidServiceWorkerVersionId; |
327 context()->RegisterServiceWorker( | 322 context()->RegisterServiceWorker( |
328 pattern, | 323 pattern, |
329 GURL("http://www.example.com/service_worker_new.js"), | 324 GURL("http://www.example.com/service_worker_new.js"), |
330 render_process_id_, | |
331 NULL, | 325 NULL, |
332 MakeRegisteredCallback(&called, &new_registration_id, &new_version_id)); | 326 MakeRegisteredCallback(&called, &new_registration_id, &new_version_id)); |
333 | 327 |
334 ASSERT_FALSE(called); | 328 ASSERT_FALSE(called); |
335 base::RunLoop().RunUntilIdle(); | 329 base::RunLoop().RunUntilIdle(); |
336 ASSERT_TRUE(called); | 330 ASSERT_TRUE(called); |
337 | 331 |
338 EXPECT_NE(kInvalidServiceWorkerRegistrationId, new_registration_id); | 332 EXPECT_NE(kInvalidServiceWorkerRegistrationId, new_registration_id); |
339 EXPECT_NE(kInvalidServiceWorkerVersionId, new_version_id); | 333 EXPECT_NE(kInvalidServiceWorkerVersionId, new_version_id); |
340 EXPECT_EQ(old_registration_id, new_registration_id); | 334 EXPECT_EQ(old_registration_id, new_registration_id); |
341 EXPECT_NE(old_version_id, new_version_id); | 335 EXPECT_NE(old_version_id, new_version_id); |
342 } | 336 } |
343 | 337 |
344 // Make sure that when registering a duplicate pattern+script_url | 338 // Make sure that when registering a duplicate pattern+script_url |
345 // combination, that the same registration is used. | 339 // combination, that the same registration is used. |
346 TEST_F(ServiceWorkerContextTest, RegisterDuplicateScript) { | 340 TEST_F(ServiceWorkerContextTest, RegisterDuplicateScript) { |
347 GURL pattern("http://www.example.com/"); | 341 GURL pattern("http://www.example.com/"); |
348 GURL script_url("http://www.example.com/service_worker.js"); | 342 GURL script_url("http://www.example.com/service_worker.js"); |
349 | 343 |
350 bool called = false; | 344 bool called = false; |
351 int64 old_registration_id = kInvalidServiceWorkerRegistrationId; | 345 int64 old_registration_id = kInvalidServiceWorkerRegistrationId; |
352 int64 old_version_id = kInvalidServiceWorkerVersionId; | 346 int64 old_version_id = kInvalidServiceWorkerVersionId; |
353 context()->RegisterServiceWorker( | 347 context()->RegisterServiceWorker( |
354 pattern, | 348 pattern, |
355 script_url, | 349 script_url, |
356 render_process_id_, | |
357 NULL, | 350 NULL, |
358 MakeRegisteredCallback(&called, &old_registration_id, &old_version_id)); | 351 MakeRegisteredCallback(&called, &old_registration_id, &old_version_id)); |
359 | 352 |
360 ASSERT_FALSE(called); | 353 ASSERT_FALSE(called); |
361 base::RunLoop().RunUntilIdle(); | 354 base::RunLoop().RunUntilIdle(); |
362 ASSERT_TRUE(called); | 355 ASSERT_TRUE(called); |
363 EXPECT_NE(kInvalidServiceWorkerRegistrationId, old_registration_id); | 356 EXPECT_NE(kInvalidServiceWorkerRegistrationId, old_registration_id); |
364 EXPECT_NE(kInvalidServiceWorkerVersionId, old_version_id); | 357 EXPECT_NE(kInvalidServiceWorkerVersionId, old_version_id); |
365 | 358 |
366 called = false; | 359 called = false; |
367 int64 new_registration_id = kInvalidServiceWorkerRegistrationId; | 360 int64 new_registration_id = kInvalidServiceWorkerRegistrationId; |
368 int64 new_version_id = kInvalidServiceWorkerVersionId; | 361 int64 new_version_id = kInvalidServiceWorkerVersionId; |
369 context()->RegisterServiceWorker( | 362 context()->RegisterServiceWorker( |
370 pattern, | 363 pattern, |
371 script_url, | 364 script_url, |
372 render_process_id_, | |
373 NULL, | 365 NULL, |
374 MakeRegisteredCallback(&called, &new_registration_id, &new_version_id)); | 366 MakeRegisteredCallback(&called, &new_registration_id, &new_version_id)); |
375 | 367 |
376 ASSERT_FALSE(called); | 368 ASSERT_FALSE(called); |
377 base::RunLoop().RunUntilIdle(); | 369 base::RunLoop().RunUntilIdle(); |
378 ASSERT_TRUE(called); | 370 ASSERT_TRUE(called); |
379 EXPECT_EQ(old_registration_id, new_registration_id); | 371 EXPECT_EQ(old_registration_id, new_registration_id); |
380 EXPECT_EQ(old_version_id, new_version_id); | 372 EXPECT_EQ(old_version_id, new_version_id); |
381 } | 373 } |
382 | 374 |
383 // TODO(nhiroki): Test this for on-disk storage. | 375 // TODO(nhiroki): Test this for on-disk storage. |
384 TEST_F(ServiceWorkerContextTest, DeleteAndStartOver) { | 376 TEST_F(ServiceWorkerContextTest, DeleteAndStartOver) { |
385 int64 registration_id = kInvalidServiceWorkerRegistrationId; | 377 int64 registration_id = kInvalidServiceWorkerRegistrationId; |
386 int64 version_id = kInvalidServiceWorkerVersionId; | 378 int64 version_id = kInvalidServiceWorkerVersionId; |
387 bool called = false; | 379 bool called = false; |
388 context()->RegisterServiceWorker( | 380 context()->RegisterServiceWorker( |
389 GURL("http://www.example.com/"), | 381 GURL("http://www.example.com/"), |
390 GURL("http://www.example.com/service_worker.js"), | 382 GURL("http://www.example.com/service_worker.js"), |
391 render_process_id_, | |
392 NULL, | 383 NULL, |
393 MakeRegisteredCallback(&called, ®istration_id, &version_id)); | 384 MakeRegisteredCallback(&called, ®istration_id, &version_id)); |
394 | 385 |
395 ASSERT_FALSE(called); | 386 ASSERT_FALSE(called); |
396 base::RunLoop().RunUntilIdle(); | 387 base::RunLoop().RunUntilIdle(); |
397 EXPECT_TRUE(called); | 388 EXPECT_TRUE(called); |
398 | 389 |
399 context()->storage()->FindRegistrationForId( | 390 context()->storage()->FindRegistrationForId( |
400 registration_id, | 391 registration_id, |
401 GURL("http://www.example.com"), | 392 GURL("http://www.example.com"), |
(...skipping 27 matching lines...) Expand all Loading... |
429 SERVICE_WORKER_ERROR_NOT_FOUND, | 420 SERVICE_WORKER_ERROR_NOT_FOUND, |
430 version_id, | 421 version_id, |
431 false /* expect_waiting */, | 422 false /* expect_waiting */, |
432 true /* expect_active */)); | 423 true /* expect_active */)); |
433 base::RunLoop().RunUntilIdle(); | 424 base::RunLoop().RunUntilIdle(); |
434 | 425 |
435 called = false; | 426 called = false; |
436 context()->RegisterServiceWorker( | 427 context()->RegisterServiceWorker( |
437 GURL("http://www.example.com/"), | 428 GURL("http://www.example.com/"), |
438 GURL("http://www.example.com/service_worker.js"), | 429 GURL("http://www.example.com/service_worker.js"), |
439 render_process_id_, | |
440 NULL, | 430 NULL, |
441 MakeRegisteredCallback(&called, ®istration_id, &version_id)); | 431 MakeRegisteredCallback(&called, ®istration_id, &version_id)); |
442 | 432 |
443 ASSERT_FALSE(called); | 433 ASSERT_FALSE(called); |
444 base::RunLoop().RunUntilIdle(); | 434 base::RunLoop().RunUntilIdle(); |
445 EXPECT_TRUE(called); | 435 EXPECT_TRUE(called); |
446 | 436 |
447 context()->storage()->FindRegistrationForId( | 437 context()->storage()->FindRegistrationForId( |
448 registration_id, | 438 registration_id, |
449 GURL("http://www.example.com"), | 439 GURL("http://www.example.com"), |
450 base::Bind(&ExpectRegisteredWorkers, | 440 base::Bind(&ExpectRegisteredWorkers, |
451 SERVICE_WORKER_OK, | 441 SERVICE_WORKER_OK, |
452 version_id, | 442 version_id, |
453 false /* expect_waiting */, | 443 false /* expect_waiting */, |
454 true /* expect_active */)); | 444 true /* expect_active */)); |
455 base::RunLoop().RunUntilIdle(); | 445 base::RunLoop().RunUntilIdle(); |
456 } | 446 } |
457 | 447 |
458 } // namespace content | 448 } // namespace content |
OLD | NEW |