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 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
236 status = SERVICE_WORKER_ERROR_FAILED; | 236 status = SERVICE_WORKER_ERROR_FAILED; |
237 base::RunLoop stop_run_loop; | 237 base::RunLoop stop_run_loop; |
238 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 238 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
239 base::Bind(&self::StopOnIOThread, this, | 239 base::Bind(&self::StopOnIOThread, this, |
240 stop_run_loop.QuitClosure(), | 240 stop_run_loop.QuitClosure(), |
241 &status)); | 241 &status)); |
242 stop_run_loop.Run(); | 242 stop_run_loop.Run(); |
243 ASSERT_EQ(SERVICE_WORKER_OK, status); | 243 ASSERT_EQ(SERVICE_WORKER_OK, status); |
244 } | 244 } |
245 | 245 |
246 void ActivateTestHelper( | |
247 const std::string& worker_url, | |
248 ServiceWorkerStatusCode expected_status=SERVICE_WORKER_OK) { | |
kinuko
2014/03/31 04:31:03
nit: we don't use default args in chromium (unlink
| |
249 RunOnIOThread( | |
250 base::Bind(&self::SetUpRegistrationOnIOThread, this, worker_url)); | |
251 version_->SetStatus(ServiceWorkerVersion::INSTALLED); | |
252 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | |
253 base::RunLoop run_loop; | |
254 BrowserThread::PostTask( | |
255 BrowserThread::IO, | |
256 FROM_HERE, | |
257 base::Bind( | |
258 &self::ActivateOnIOThread, this, run_loop.QuitClosure(), &status)); | |
259 run_loop.Run(); | |
260 ASSERT_EQ(expected_status, status); | |
261 } | |
262 | |
246 void FetchTestHelper(const std::string& worker_url, | 263 void FetchTestHelper(const std::string& worker_url, |
247 ServiceWorkerFetchEventResult* result, | 264 ServiceWorkerFetchEventResult* result, |
248 ServiceWorkerResponse* response) { | 265 ServiceWorkerResponse* response) { |
249 RunOnIOThread( | 266 RunOnIOThread( |
250 base::Bind(&self::SetUpRegistrationOnIOThread, this, worker_url)); | 267 base::Bind(&self::SetUpRegistrationOnIOThread, this, worker_url)); |
251 | 268 |
252 FetchResult fetch_result; | 269 FetchResult fetch_result; |
253 fetch_result.status = SERVICE_WORKER_ERROR_FAILED; | 270 fetch_result.status = SERVICE_WORKER_ERROR_FAILED; |
254 base::RunLoop fetch_run_loop; | 271 base::RunLoop fetch_run_loop; |
255 BrowserThread::PostTask(BrowserThread::IO, | 272 BrowserThread::PostTask(BrowserThread::IO, |
(...skipping 27 matching lines...) Expand all Loading... | |
283 version_->StartWorker(CreateReceiver(BrowserThread::UI, done, result)); | 300 version_->StartWorker(CreateReceiver(BrowserThread::UI, done, result)); |
284 } | 301 } |
285 | 302 |
286 void InstallOnIOThread(const base::Closure& done, | 303 void InstallOnIOThread(const base::Closure& done, |
287 ServiceWorkerStatusCode* result) { | 304 ServiceWorkerStatusCode* result) { |
288 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 305 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
289 version_->DispatchInstallEvent( | 306 version_->DispatchInstallEvent( |
290 -1, CreateReceiver(BrowserThread::UI, done, result)); | 307 -1, CreateReceiver(BrowserThread::UI, done, result)); |
291 } | 308 } |
292 | 309 |
310 void ActivateOnIOThread(const base::Closure& done, | |
311 ServiceWorkerStatusCode* result) { | |
312 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); | |
313 version_->SetStatus(ServiceWorkerVersion::INSTALLED); | |
314 version_->DispatchActivateEvent( | |
315 CreateReceiver(BrowserThread::UI, done, result)); | |
316 } | |
317 | |
293 void FetchOnIOThread(const base::Closure& done, FetchResult* result) { | 318 void FetchOnIOThread(const base::Closure& done, FetchResult* result) { |
294 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 319 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
295 ServiceWorkerFetchRequest request( | 320 ServiceWorkerFetchRequest request( |
296 embedded_test_server()->GetURL("/service_worker/empty.html"), | 321 embedded_test_server()->GetURL("/service_worker/empty.html"), |
297 "GET", | 322 "GET", |
298 std::map<std::string, std::string>()); | 323 std::map<std::string, std::string>()); |
299 version_->SetStatus(ServiceWorkerVersion::ACTIVE); | 324 version_->SetStatus(ServiceWorkerVersion::ACTIVE); |
300 version_->DispatchFetchEvent( | 325 version_->DispatchFetchEvent( |
301 request, CreateResponseReceiver(BrowserThread::UI, done, result)); | 326 request, CreateResponseReceiver(BrowserThread::UI, done, result)); |
302 } | 327 } |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
377 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); | 402 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); |
378 } | 403 } |
379 | 404 |
380 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, | 405 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, |
381 InstallWithWaitUntil_Fulfilled) { | 406 InstallWithWaitUntil_Fulfilled) { |
382 InstallTestHelper("/service_worker/worker_install_fulfilled.js", | 407 InstallTestHelper("/service_worker/worker_install_fulfilled.js", |
383 SERVICE_WORKER_OK); | 408 SERVICE_WORKER_OK); |
384 } | 409 } |
385 | 410 |
386 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, | 411 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, |
412 Activate_NoEventListener) { | |
413 ActivateTestHelper("/service_worker/worker.js"); | |
414 ASSERT_EQ(ServiceWorkerVersion::ACTIVE, version_->status()); | |
415 } | |
416 | |
417 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, Activate_Rejected) { | |
418 ActivateTestHelper("/service_worker/worker_activate_rejected.js", | |
419 SERVICE_WORKER_ERROR_ACTIVATE_WORKER_FAILED); | |
420 } | |
421 | |
422 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, | |
387 InstallWithWaitUntil_Rejected) { | 423 InstallWithWaitUntil_Rejected) { |
388 InstallTestHelper("/service_worker/worker_install_rejected.js", | 424 InstallTestHelper("/service_worker/worker_install_rejected.js", |
389 SERVICE_WORKER_ERROR_INSTALL_WORKER_FAILED); | 425 SERVICE_WORKER_ERROR_INSTALL_WORKER_FAILED); |
390 } | 426 } |
391 | 427 |
392 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, FetchEvent_Response) { | 428 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, FetchEvent_Response) { |
393 ServiceWorkerFetchEventResult result; | 429 ServiceWorkerFetchEventResult result; |
394 ServiceWorkerResponse response; | 430 ServiceWorkerResponse response; |
395 FetchTestHelper("/service_worker/fetch_event.js", &result, &response); | 431 FetchTestHelper("/service_worker/fetch_event.js", &result, &response); |
396 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); | 432 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result); |
(...skipping 14 matching lines...) Expand all Loading... | |
411 } | 447 } |
412 | 448 |
413 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, FetchEvent_Rejected) { | 449 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, FetchEvent_Rejected) { |
414 ServiceWorkerFetchEventResult result; | 450 ServiceWorkerFetchEventResult result; |
415 ServiceWorkerResponse response; | 451 ServiceWorkerResponse response; |
416 FetchTestHelper("/service_worker/fetch_event_error.js", &result, &response); | 452 FetchTestHelper("/service_worker/fetch_event_error.js", &result, &response); |
417 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK, result); | 453 ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK, result); |
418 } | 454 } |
419 | 455 |
420 } // namespace content | 456 } // namespace content |
OLD | NEW |