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

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: Ready, set... 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 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698