Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(858)

Side by Side Diff: content/browser/service_worker/service_worker_browsertest.cc

Issue 212593010: Implement the ServiceWorker "activate" event during activation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Bring to ToT. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698