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/bind.h" | 5 #include "base/bind.h" |
6 #include "base/callback.h" | 6 #include "base/callback.h" |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
9 #include "content/browser/service_worker/embedded_worker_instance.h" | 9 #include "content/browser/service_worker/embedded_worker_instance.h" |
10 #include "content/browser/service_worker/embedded_worker_registry.h" | 10 #include "content/browser/service_worker/embedded_worker_registry.h" |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
252 status = SERVICE_WORKER_ERROR_FAILED; | 252 status = SERVICE_WORKER_ERROR_FAILED; |
253 base::RunLoop stop_run_loop; | 253 base::RunLoop stop_run_loop; |
254 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 254 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
255 base::Bind(&self::StopOnIOThread, this, | 255 base::Bind(&self::StopOnIOThread, this, |
256 stop_run_loop.QuitClosure(), | 256 stop_run_loop.QuitClosure(), |
257 &status)); | 257 &status)); |
258 stop_run_loop.Run(); | 258 stop_run_loop.Run(); |
259 ASSERT_EQ(SERVICE_WORKER_OK, status); | 259 ASSERT_EQ(SERVICE_WORKER_OK, status); |
260 } | 260 } |
261 | 261 |
| 262 void ActivateTestHelper( |
| 263 const std::string& worker_url, |
| 264 ServiceWorkerStatusCode expected_status) { |
| 265 RunOnIOThread( |
| 266 base::Bind(&self::SetUpRegistrationOnIOThread, this, worker_url)); |
| 267 version_->SetStatus(ServiceWorkerVersion::INSTALLED); |
| 268 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
| 269 base::RunLoop run_loop; |
| 270 BrowserThread::PostTask( |
| 271 BrowserThread::IO, |
| 272 FROM_HERE, |
| 273 base::Bind( |
| 274 &self::ActivateOnIOThread, this, run_loop.QuitClosure(), &status)); |
| 275 run_loop.Run(); |
| 276 ASSERT_EQ(expected_status, status); |
| 277 } |
| 278 |
262 void FetchTestHelper(const std::string& worker_url, | 279 void FetchTestHelper(const std::string& worker_url, |
263 ServiceWorkerFetchEventResult* result, | 280 ServiceWorkerFetchEventResult* result, |
264 ServiceWorkerResponse* response) { | 281 ServiceWorkerResponse* response) { |
265 RunOnIOThread( | 282 RunOnIOThread( |
266 base::Bind(&self::SetUpRegistrationOnIOThread, this, worker_url)); | 283 base::Bind(&self::SetUpRegistrationOnIOThread, this, worker_url)); |
267 | 284 |
268 FetchResult fetch_result; | 285 FetchResult fetch_result; |
269 fetch_result.status = SERVICE_WORKER_ERROR_FAILED; | 286 fetch_result.status = SERVICE_WORKER_ERROR_FAILED; |
270 base::RunLoop fetch_run_loop; | 287 base::RunLoop fetch_run_loop; |
271 BrowserThread::PostTask(BrowserThread::IO, | 288 BrowserThread::PostTask(BrowserThread::IO, |
(...skipping 27 matching lines...) Expand all Loading... |
299 version_->StartWorker(CreateReceiver(BrowserThread::UI, done, result)); | 316 version_->StartWorker(CreateReceiver(BrowserThread::UI, done, result)); |
300 } | 317 } |
301 | 318 |
302 void InstallOnIOThread(const base::Closure& done, | 319 void InstallOnIOThread(const base::Closure& done, |
303 ServiceWorkerStatusCode* result) { | 320 ServiceWorkerStatusCode* result) { |
304 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 321 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
305 version_->DispatchInstallEvent( | 322 version_->DispatchInstallEvent( |
306 -1, CreateReceiver(BrowserThread::UI, done, result)); | 323 -1, CreateReceiver(BrowserThread::UI, done, result)); |
307 } | 324 } |
308 | 325 |
| 326 void ActivateOnIOThread(const base::Closure& done, |
| 327 ServiceWorkerStatusCode* result) { |
| 328 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 329 version_->SetStatus(ServiceWorkerVersion::INSTALLED); |
| 330 version_->DispatchActivateEvent( |
| 331 CreateReceiver(BrowserThread::UI, done, result)); |
| 332 } |
| 333 |
309 void FetchOnIOThread(const base::Closure& done, FetchResult* result) { | 334 void FetchOnIOThread(const base::Closure& done, FetchResult* result) { |
310 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 335 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
311 ServiceWorkerFetchRequest request( | 336 ServiceWorkerFetchRequest request( |
312 embedded_test_server()->GetURL("/service_worker/empty.html"), | 337 embedded_test_server()->GetURL("/service_worker/empty.html"), |
313 "GET", | 338 "GET", |
314 std::map<std::string, std::string>()); | 339 std::map<std::string, std::string>()); |
315 version_->SetStatus(ServiceWorkerVersion::ACTIVE); | 340 version_->SetStatus(ServiceWorkerVersion::ACTIVE); |
316 version_->DispatchFetchEvent( | 341 version_->DispatchFetchEvent( |
317 request, CreateResponseReceiver(BrowserThread::UI, done, result)); | 342 request, CreateResponseReceiver(BrowserThread::UI, done, result)); |
318 } | 343 } |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); | 418 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); |
394 } | 419 } |
395 | 420 |
396 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, | 421 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, |
397 InstallWithWaitUntil_Fulfilled) { | 422 InstallWithWaitUntil_Fulfilled) { |
398 InstallTestHelper("/service_worker/worker_install_fulfilled.js", | 423 InstallTestHelper("/service_worker/worker_install_fulfilled.js", |
399 SERVICE_WORKER_OK); | 424 SERVICE_WORKER_OK); |
400 } | 425 } |
401 | 426 |
402 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, | 427 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, |
| 428 Activate_NoEventListener) { |
| 429 ActivateTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); |
| 430 ASSERT_EQ(ServiceWorkerVersion::ACTIVE, version_->status()); |
| 431 } |
| 432 |
| 433 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, Activate_Rejected) { |
| 434 ActivateTestHelper("/service_worker/worker_activate_rejected.js", |
| 435 SERVICE_WORKER_ERROR_ACTIVATE_WORKER_FAILED); |
| 436 } |
| 437 |
| 438 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, |
403 InstallWithWaitUntil_Rejected) { | 439 InstallWithWaitUntil_Rejected) { |
404 InstallTestHelper("/service_worker/worker_install_rejected.js", | 440 InstallTestHelper("/service_worker/worker_install_rejected.js", |
405 SERVICE_WORKER_ERROR_INSTALL_WORKER_FAILED); | 441 SERVICE_WORKER_ERROR_INSTALL_WORKER_FAILED); |
406 } | 442 } |
407 | 443 |
408 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, FetchEvent_Response) { | 444 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, FetchEvent_Response) { |
409 ServiceWorkerFetchEventResult result; | 445 ServiceWorkerFetchEventResult result; |
410 ServiceWorkerResponse response; | 446 ServiceWorkerResponse response; |
411 FetchTestHelper("/service_worker/fetch_event.js", &result, &response); | 447 FetchTestHelper("/service_worker/fetch_event.js", &result, &response); |
412 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); | 448 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 base::Bind(&ServiceWorkerBlackBoxBrowserTest::FindRegistrationOnIO, | 555 base::Bind(&ServiceWorkerBlackBoxBrowserTest::FindRegistrationOnIO, |
520 this, | 556 this, |
521 embedded_test_server()->GetURL("/service_worker/empty.html"), | 557 embedded_test_server()->GetURL("/service_worker/empty.html"), |
522 &status, | 558 &status, |
523 &script_url)); | 559 &script_url)); |
524 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, status); | 560 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, status); |
525 } | 561 } |
526 } | 562 } |
527 | 563 |
528 } // namespace content | 564 } // namespace content |
OLD | NEW |