| 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 |