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

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

Issue 2627543002: ServiceWorker: Returns true for IsMojoForServiceWorkerEnabled (Closed)
Patch Set: Created 3 years, 11 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
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 "content/browser/service_worker/service_worker_version.h" 5 #include "content/browser/service_worker/service_worker_version.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <tuple> 8 #include <tuple>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 TestBrowserThreadBundle thread_bundle_; 293 TestBrowserThreadBundle thread_bundle_;
294 std::unique_ptr<MessageReceiver> helper_; 294 std::unique_ptr<MessageReceiver> helper_;
295 scoped_refptr<ServiceWorkerRegistration> registration_; 295 scoped_refptr<ServiceWorkerRegistration> registration_;
296 scoped_refptr<ServiceWorkerVersion> version_; 296 scoped_refptr<ServiceWorkerVersion> version_;
297 GURL pattern_; 297 GURL pattern_;
298 298
299 private: 299 private:
300 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerVersionTest); 300 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerVersionTest);
301 }; 301 };
302 302
303 class ServiceWorkerVersionTestP
304 : public MojoServiceWorkerTestP<ServiceWorkerVersionTest> {};
305
306 class MessageReceiverDisallowStart : public MessageReceiver { 303 class MessageReceiverDisallowStart : public MessageReceiver {
307 public: 304 public:
308 MessageReceiverDisallowStart(bool is_mojo_enabled) 305 MessageReceiverDisallowStart() : MessageReceiver() {}
309 : MessageReceiver(), is_mojo_enabled_(is_mojo_enabled) {}
310 ~MessageReceiverDisallowStart() override {} 306 ~MessageReceiverDisallowStart() override {}
311 307
312 enum class StartMode { STALL, FAIL, SUCCEED }; 308 enum class StartMode { STALL, FAIL, SUCCEED };
313 309
314 void OnStartWorker(int embedded_worker_id, 310 void OnStartWorker(int embedded_worker_id,
315 int64_t service_worker_version_id, 311 int64_t service_worker_version_id,
316 const GURL& scope, 312 const GURL& scope,
317 const GURL& script_url, 313 const GURL& script_url,
318 bool pause_after_download) override { 314 bool pause_after_download) override {
319 switch (mode_) { 315 switch (mode_) {
320 case StartMode::STALL: 316 case StartMode::STALL:
321 break; // Do nothing. 317 break; // Do nothing.
322 case StartMode::FAIL: 318 case StartMode::FAIL:
323 if (is_mojo_enabled_) { 319 ASSERT_EQ(current_mock_instance_index_ + 1,
324 ASSERT_EQ(current_mock_instance_index_ + 1, 320 mock_instance_clients()->size());
325 mock_instance_clients()->size()); 321 // Remove the connection by peer
326 // Remove the connection by peer 322 mock_instance_clients()->at(current_mock_instance_index_).reset();
327 mock_instance_clients()->at(current_mock_instance_index_).reset();
328 } else {
329 OnStopWorker(embedded_worker_id);
330 }
331 break; 323 break;
332 case StartMode::SUCCEED: 324 case StartMode::SUCCEED:
333 MessageReceiver::OnStartWorker(embedded_worker_id, 325 MessageReceiver::OnStartWorker(embedded_worker_id,
334 service_worker_version_id, scope, 326 service_worker_version_id, scope,
335 script_url, pause_after_download); 327 script_url, pause_after_download);
336 break; 328 break;
337 } 329 }
338 current_mock_instance_index_++; 330 current_mock_instance_index_++;
339 } 331 }
340 332
341 void set_start_mode(StartMode mode) { mode_ = mode; } 333 void set_start_mode(StartMode mode) { mode_ = mode; }
342 334
343 private: 335 private:
344 const bool is_mojo_enabled_;
345 uint32_t current_mock_instance_index_ = 0; 336 uint32_t current_mock_instance_index_ = 0;
346 StartMode mode_ = StartMode::STALL; 337 StartMode mode_ = StartMode::STALL;
347 DISALLOW_COPY_AND_ASSIGN(MessageReceiverDisallowStart); 338 DISALLOW_COPY_AND_ASSIGN(MessageReceiverDisallowStart);
348 }; 339 };
349 340
350 class ServiceWorkerFailToStartTest : public ServiceWorkerVersionTestP { 341 class ServiceWorkerFailToStartTest : public ServiceWorkerVersionTest {
351 protected: 342 protected:
352 ServiceWorkerFailToStartTest() : ServiceWorkerVersionTestP() {} 343 ServiceWorkerFailToStartTest() : ServiceWorkerVersionTest() {}
353 344
354 void set_start_mode(MessageReceiverDisallowStart::StartMode mode) { 345 void set_start_mode(MessageReceiverDisallowStart::StartMode mode) {
355 MessageReceiverDisallowStart* helper = 346 MessageReceiverDisallowStart* helper =
356 static_cast<MessageReceiverDisallowStart*>(helper_.get()); 347 static_cast<MessageReceiverDisallowStart*>(helper_.get());
357 helper->set_start_mode(mode); 348 helper->set_start_mode(mode);
358 } 349 }
359 350
360 std::unique_ptr<MessageReceiver> GetMessageReceiver() override { 351 std::unique_ptr<MessageReceiver> GetMessageReceiver() override {
361 return base::MakeUnique<MessageReceiverDisallowStart>(is_mojo_enabled()); 352 return base::MakeUnique<MessageReceiverDisallowStart>();
362 } 353 }
363 354
364 private: 355 private:
365 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerFailToStartTest); 356 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerFailToStartTest);
366 }; 357 };
367 358
368 class NoOpStopWorkerEmbeddedWorkerInstanceClient 359 class NoOpStopWorkerEmbeddedWorkerInstanceClient
369 : public EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient { 360 : public EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient {
370 public: 361 public:
371 explicit NoOpStopWorkerEmbeddedWorkerInstanceClient( 362 explicit NoOpStopWorkerEmbeddedWorkerInstanceClient(
(...skipping 26 matching lines...) Expand all
398 ~MessageReceiverDisallowStop() override {} 389 ~MessageReceiverDisallowStop() override {}
399 390
400 void OnStopWorker(int embedded_worker_id) override { 391 void OnStopWorker(int embedded_worker_id) override {
401 // Do nothing. 392 // Do nothing.
402 } 393 }
403 394
404 private: 395 private:
405 DISALLOW_COPY_AND_ASSIGN(MessageReceiverDisallowStop); 396 DISALLOW_COPY_AND_ASSIGN(MessageReceiverDisallowStop);
406 }; 397 };
407 398
408 class ServiceWorkerStallInStoppingTest : public ServiceWorkerVersionTestP { 399 class ServiceWorkerStallInStoppingTest : public ServiceWorkerVersionTest {
409 protected: 400 protected:
410 ServiceWorkerStallInStoppingTest() : ServiceWorkerVersionTestP() {} 401 ServiceWorkerStallInStoppingTest() : ServiceWorkerVersionTest() {}
411 402
412 std::unique_ptr<MessageReceiver> GetMessageReceiver() override { 403 std::unique_ptr<MessageReceiver> GetMessageReceiver() override {
413 return base::MakeUnique<MessageReceiverDisallowStop>(); 404 return base::MakeUnique<MessageReceiverDisallowStop>();
414 } 405 }
415 406
416 private: 407 private:
417 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerStallInStoppingTest); 408 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerStallInStoppingTest);
418 }; 409 };
419 410
420 TEST_P(ServiceWorkerVersionTestP, ConcurrentStartAndStop) { 411 TEST_F(ServiceWorkerVersionTest, ConcurrentStartAndStop) {
421 // Call StartWorker() multiple times. 412 // Call StartWorker() multiple times.
422 ServiceWorkerStatusCode status1 = SERVICE_WORKER_ERROR_FAILED; 413 ServiceWorkerStatusCode status1 = SERVICE_WORKER_ERROR_FAILED;
423 ServiceWorkerStatusCode status2 = SERVICE_WORKER_ERROR_FAILED; 414 ServiceWorkerStatusCode status2 = SERVICE_WORKER_ERROR_FAILED;
424 ServiceWorkerStatusCode status3 = SERVICE_WORKER_ERROR_FAILED; 415 ServiceWorkerStatusCode status3 = SERVICE_WORKER_ERROR_FAILED;
425 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 416 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
426 CreateReceiverOnCurrentThread(&status1)); 417 CreateReceiverOnCurrentThread(&status1));
427 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 418 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
428 CreateReceiverOnCurrentThread(&status2)); 419 CreateReceiverOnCurrentThread(&status2));
429 420
430 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status()); 421 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status());
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, version_->running_status()); 469 EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, version_->running_status());
479 base::RunLoop().RunUntilIdle(); 470 base::RunLoop().RunUntilIdle();
480 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 471 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
481 472
482 // All should just succeed. 473 // All should just succeed.
483 EXPECT_EQ(SERVICE_WORKER_OK, status1); 474 EXPECT_EQ(SERVICE_WORKER_OK, status1);
484 EXPECT_EQ(SERVICE_WORKER_OK, status2); 475 EXPECT_EQ(SERVICE_WORKER_OK, status2);
485 EXPECT_EQ(SERVICE_WORKER_OK, status3); 476 EXPECT_EQ(SERVICE_WORKER_OK, status3);
486 } 477 }
487 478
488 TEST_P(ServiceWorkerVersionTestP, DispatchEventToStoppedWorker) { 479 TEST_F(ServiceWorkerVersionTest, DispatchEventToStoppedWorker) {
489 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); 480 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
490 481
491 // Dispatch an event without starting the worker. 482 // Dispatch an event without starting the worker.
492 version_->SetStatus(ServiceWorkerVersion::INSTALLING); 483 version_->SetStatus(ServiceWorkerVersion::INSTALLING);
493 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::INSTALL); 484 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::INSTALL);
494 485
495 // The worker should be now started. 486 // The worker should be now started.
496 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 487 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
497 488
498 // Stop the worker, and then dispatch an event immediately after that. 489 // Stop the worker, and then dispatch an event immediately after that.
499 ServiceWorkerStatusCode stop_status = SERVICE_WORKER_ERROR_FAILED; 490 ServiceWorkerStatusCode stop_status = SERVICE_WORKER_ERROR_FAILED;
500 version_->StopWorker(CreateReceiverOnCurrentThread(&stop_status)); 491 version_->StopWorker(CreateReceiverOnCurrentThread(&stop_status));
501 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::INSTALL); 492 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::INSTALL);
502 EXPECT_EQ(SERVICE_WORKER_OK, stop_status); 493 EXPECT_EQ(SERVICE_WORKER_OK, stop_status);
503 494
504 // The worker should be now started again. 495 // The worker should be now started again.
505 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 496 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
506 } 497 }
507 498
508 TEST_P(ServiceWorkerVersionTestP, StartUnregisteredButStillLiveWorker) { 499 TEST_F(ServiceWorkerVersionTest, StartUnregisteredButStillLiveWorker) {
509 // Start the worker. 500 // Start the worker.
510 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 501 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
511 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 502 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
512 CreateReceiverOnCurrentThread(&status)); 503 CreateReceiverOnCurrentThread(&status));
513 base::RunLoop().RunUntilIdle(); 504 base::RunLoop().RunUntilIdle();
514 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 505 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
515 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 506 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
516 507
517 // Delete the registration. 508 // Delete the registration.
518 status = SERVICE_WORKER_ERROR_FAILED; 509 status = SERVICE_WORKER_ERROR_FAILED;
(...skipping 13 matching lines...) Expand all
532 EXPECT_EQ(SERVICE_WORKER_OK, stop_status); 523 EXPECT_EQ(SERVICE_WORKER_OK, stop_status);
533 524
534 // Dispatch an event on the unregistered and stopped but still live worker. 525 // Dispatch an event on the unregistered and stopped but still live worker.
535 status = SERVICE_WORKER_ERROR_FAILED; 526 status = SERVICE_WORKER_ERROR_FAILED;
536 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME); 527 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME);
537 528
538 // The worker should be now started again. 529 // The worker should be now started again.
539 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 530 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
540 } 531 }
541 532
542 TEST_P(ServiceWorkerVersionTestP, ReceiveMessageFromWorker) { 533 TEST_F(ServiceWorkerVersionTest, ReceiveMessageFromWorker) {
543 // Start worker. 534 // Start worker.
544 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 535 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
545 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 536 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
546 CreateReceiverOnCurrentThread(&status)); 537 CreateReceiverOnCurrentThread(&status));
547 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status()); 538 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status());
548 base::RunLoop().RunUntilIdle(); 539 base::RunLoop().RunUntilIdle();
549 EXPECT_EQ(SERVICE_WORKER_OK, status); 540 EXPECT_EQ(SERVICE_WORKER_OK, status);
550 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 541 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
551 542
552 MessageReceiverFromWorker receiver(version_->embedded_worker()); 543 MessageReceiverFromWorker receiver(version_->embedded_worker());
553 544
554 // Simulate sending some dummy values from the worker. 545 // Simulate sending some dummy values from the worker.
555 helper_->SimulateSendValueToBrowser( 546 helper_->SimulateSendValueToBrowser(
556 version_->embedded_worker()->embedded_worker_id(), 555); 547 version_->embedded_worker()->embedded_worker_id(), 555);
557 helper_->SimulateSendValueToBrowser( 548 helper_->SimulateSendValueToBrowser(
558 version_->embedded_worker()->embedded_worker_id(), 777); 549 version_->embedded_worker()->embedded_worker_id(), 777);
559 550
560 // Verify the receiver received the values. 551 // Verify the receiver received the values.
561 ASSERT_EQ(2U, receiver.received_values().size()); 552 ASSERT_EQ(2U, receiver.received_values().size());
562 EXPECT_EQ(555, receiver.received_values()[0]); 553 EXPECT_EQ(555, receiver.received_values()[0]);
563 EXPECT_EQ(777, receiver.received_values()[1]); 554 EXPECT_EQ(777, receiver.received_values()[1]);
564 } 555 }
565 556
566 TEST_P(ServiceWorkerVersionTestP, InstallAndWaitCompletion) { 557 TEST_F(ServiceWorkerVersionTest, InstallAndWaitCompletion) {
567 version_->SetStatus(ServiceWorkerVersion::INSTALLING); 558 version_->SetStatus(ServiceWorkerVersion::INSTALLING);
568 559
569 // Wait for the completion. 560 // Wait for the completion.
570 bool status_change_called = false; 561 bool status_change_called = false;
571 version_->RegisterStatusChangeCallback( 562 version_->RegisterStatusChangeCallback(
572 base::Bind(&VerifyCalled, &status_change_called)); 563 base::Bind(&VerifyCalled, &status_change_called));
573 564
574 // Dispatch an install event. 565 // Dispatch an install event.
575 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::INSTALL); 566 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::INSTALL);
576 567
577 // Version's status must not have changed during installation. 568 // Version's status must not have changed during installation.
578 EXPECT_FALSE(status_change_called); 569 EXPECT_FALSE(status_change_called);
579 EXPECT_EQ(ServiceWorkerVersion::INSTALLING, version_->status()); 570 EXPECT_EQ(ServiceWorkerVersion::INSTALLING, version_->status());
580 } 571 }
581 572
582 TEST_P(ServiceWorkerVersionTestP, ActivateAndWaitCompletion) { 573 TEST_F(ServiceWorkerVersionTest, ActivateAndWaitCompletion) {
583 // TODO(mek): This test (and the one above for the install event) made more 574 // TODO(mek): This test (and the one above for the install event) made more
584 // sense back when ServiceWorkerVersion was responsible for updating the 575 // sense back when ServiceWorkerVersion was responsible for updating the
585 // status. Now a better version of this test should probably be added to 576 // status. Now a better version of this test should probably be added to
586 // ServiceWorkerRegistrationTest instead. 577 // ServiceWorkerRegistrationTest instead.
587 578
588 version_->SetStatus(ServiceWorkerVersion::ACTIVATING); 579 version_->SetStatus(ServiceWorkerVersion::ACTIVATING);
589 580
590 // Wait for the completion. 581 // Wait for the completion.
591 bool status_change_called = false; 582 bool status_change_called = false;
592 version_->RegisterStatusChangeCallback( 583 version_->RegisterStatusChangeCallback(
593 base::Bind(&VerifyCalled, &status_change_called)); 584 base::Bind(&VerifyCalled, &status_change_called));
594 585
595 // Dispatch an activate event. 586 // Dispatch an activate event.
596 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::ACTIVATE); 587 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::ACTIVATE);
597 588
598 // Version's status must not have changed during activation. 589 // Version's status must not have changed during activation.
599 EXPECT_FALSE(status_change_called); 590 EXPECT_FALSE(status_change_called);
600 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, version_->status()); 591 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, version_->status());
601 } 592 }
602 593
603 TEST_P(ServiceWorkerVersionTestP, RepeatedlyObserveStatusChanges) { 594 TEST_F(ServiceWorkerVersionTest, RepeatedlyObserveStatusChanges) {
604 EXPECT_EQ(ServiceWorkerVersion::NEW, version_->status()); 595 EXPECT_EQ(ServiceWorkerVersion::NEW, version_->status());
605 596
606 // Repeatedly observe status changes (the callback re-registers itself). 597 // Repeatedly observe status changes (the callback re-registers itself).
607 std::vector<ServiceWorkerVersion::Status> statuses; 598 std::vector<ServiceWorkerVersion::Status> statuses;
608 version_->RegisterStatusChangeCallback(base::Bind( 599 version_->RegisterStatusChangeCallback(base::Bind(
609 &ObserveStatusChanges, base::RetainedRef(version_), &statuses)); 600 &ObserveStatusChanges, base::RetainedRef(version_), &statuses));
610 601
611 version_->SetStatus(ServiceWorkerVersion::INSTALLING); 602 version_->SetStatus(ServiceWorkerVersion::INSTALLING);
612 version_->SetStatus(ServiceWorkerVersion::INSTALLED); 603 version_->SetStatus(ServiceWorkerVersion::INSTALLED);
613 version_->SetStatus(ServiceWorkerVersion::ACTIVATING); 604 version_->SetStatus(ServiceWorkerVersion::ACTIVATING);
614 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 605 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
615 version_->SetStatus(ServiceWorkerVersion::REDUNDANT); 606 version_->SetStatus(ServiceWorkerVersion::REDUNDANT);
616 607
617 // Verify that we could successfully observe repeated status changes. 608 // Verify that we could successfully observe repeated status changes.
618 ASSERT_EQ(5U, statuses.size()); 609 ASSERT_EQ(5U, statuses.size());
619 ASSERT_EQ(ServiceWorkerVersion::INSTALLING, statuses[0]); 610 ASSERT_EQ(ServiceWorkerVersion::INSTALLING, statuses[0]);
620 ASSERT_EQ(ServiceWorkerVersion::INSTALLED, statuses[1]); 611 ASSERT_EQ(ServiceWorkerVersion::INSTALLED, statuses[1]);
621 ASSERT_EQ(ServiceWorkerVersion::ACTIVATING, statuses[2]); 612 ASSERT_EQ(ServiceWorkerVersion::ACTIVATING, statuses[2]);
622 ASSERT_EQ(ServiceWorkerVersion::ACTIVATED, statuses[3]); 613 ASSERT_EQ(ServiceWorkerVersion::ACTIVATED, statuses[3]);
623 ASSERT_EQ(ServiceWorkerVersion::REDUNDANT, statuses[4]); 614 ASSERT_EQ(ServiceWorkerVersion::REDUNDANT, statuses[4]);
624 } 615 }
625 616
626 TEST_P(ServiceWorkerVersionTestP, IdleTimeout) { 617 TEST_F(ServiceWorkerVersionTest, IdleTimeout) {
627 // Used to reliably test when the idle time gets reset regardless of clock 618 // Used to reliably test when the idle time gets reset regardless of clock
628 // granularity. 619 // granularity.
629 const base::TimeDelta kOneSecond = base::TimeDelta::FromSeconds(1); 620 const base::TimeDelta kOneSecond = base::TimeDelta::FromSeconds(1);
630 621
631 // Verify the timer is not running when version initializes its status. 622 // Verify the timer is not running when version initializes its status.
632 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 623 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
633 EXPECT_FALSE(version_->timeout_timer_.IsRunning()); 624 EXPECT_FALSE(version_->timeout_timer_.IsRunning());
634 625
635 // Verify the timer is running after the worker is started. 626 // Verify the timer is running after the worker is started.
636 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 627 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 int request_id = 672 int request_id =
682 version_->StartRequest(ServiceWorkerMetrics::EventType::SYNC, 673 version_->StartRequest(ServiceWorkerMetrics::EventType::SYNC,
683 CreateReceiverOnCurrentThread(&status)); 674 CreateReceiverOnCurrentThread(&status));
684 EXPECT_TRUE(version_->FinishRequest(request_id, true /* was_handled */, 675 EXPECT_TRUE(version_->FinishRequest(request_id, true /* was_handled */,
685 base::Time::Now())); 676 base::Time::Now()));
686 677
687 EXPECT_EQ(SERVICE_WORKER_OK, status); 678 EXPECT_EQ(SERVICE_WORKER_OK, status);
688 EXPECT_LT(idle_time, version_->idle_time_); 679 EXPECT_LT(idle_time, version_->idle_time_);
689 } 680 }
690 681
691 TEST_P(ServiceWorkerVersionTestP, SetDevToolsAttached) { 682 TEST_F(ServiceWorkerVersionTest, SetDevToolsAttached) {
692 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 683 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
693 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 684 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
694 CreateReceiverOnCurrentThread(&status)); 685 CreateReceiverOnCurrentThread(&status));
695 686
696 ASSERT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status()); 687 ASSERT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status());
697 688
698 ASSERT_TRUE(version_->timeout_timer_.IsRunning()); 689 ASSERT_TRUE(version_->timeout_timer_.IsRunning());
699 ASSERT_FALSE(version_->start_time_.is_null()); 690 ASSERT_FALSE(version_->start_time_.is_null());
700 ASSERT_FALSE(version_->skip_recording_startup_time_); 691 ASSERT_FALSE(version_->skip_recording_startup_time_);
701 692
702 // Simulate DevTools is attached. This should deactivate the timer for start 693 // Simulate DevTools is attached. This should deactivate the timer for start
703 // timeout, but not stop the timer itself. 694 // timeout, but not stop the timer itself.
704 version_->SetDevToolsAttached(true); 695 version_->SetDevToolsAttached(true);
705 EXPECT_TRUE(version_->timeout_timer_.IsRunning()); 696 EXPECT_TRUE(version_->timeout_timer_.IsRunning());
706 EXPECT_TRUE(version_->start_time_.is_null()); 697 EXPECT_TRUE(version_->start_time_.is_null());
707 EXPECT_TRUE(version_->skip_recording_startup_time_); 698 EXPECT_TRUE(version_->skip_recording_startup_time_);
708 699
709 // Simulate DevTools is detached. This should reactivate the timer for start 700 // Simulate DevTools is detached. This should reactivate the timer for start
710 // timeout. 701 // timeout.
711 version_->SetDevToolsAttached(false); 702 version_->SetDevToolsAttached(false);
712 EXPECT_TRUE(version_->timeout_timer_.IsRunning()); 703 EXPECT_TRUE(version_->timeout_timer_.IsRunning());
713 EXPECT_FALSE(version_->start_time_.is_null()); 704 EXPECT_FALSE(version_->start_time_.is_null());
714 EXPECT_TRUE(version_->skip_recording_startup_time_); 705 EXPECT_TRUE(version_->skip_recording_startup_time_);
715 706
716 base::RunLoop().RunUntilIdle(); 707 base::RunLoop().RunUntilIdle();
717 EXPECT_EQ(SERVICE_WORKER_OK, status); 708 EXPECT_EQ(SERVICE_WORKER_OK, status);
718 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 709 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
719 } 710 }
720 711
721 TEST_P(ServiceWorkerVersionTestP, StoppingBeforeDestruct) { 712 TEST_F(ServiceWorkerVersionTest, StoppingBeforeDestruct) {
722 RunningStateListener listener; 713 RunningStateListener listener;
723 version_->AddListener(&listener); 714 version_->AddListener(&listener);
724 715
725 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 716 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
726 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 717 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
727 CreateReceiverOnCurrentThread(&status)); 718 CreateReceiverOnCurrentThread(&status));
728 base::RunLoop().RunUntilIdle(); 719 base::RunLoop().RunUntilIdle();
729 EXPECT_EQ(SERVICE_WORKER_OK, status); 720 EXPECT_EQ(SERVICE_WORKER_OK, status);
730 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 721 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
731 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, listener.last_status); 722 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, listener.last_status);
732 723
733 version_ = nullptr; 724 version_ = nullptr;
734 EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, listener.last_status); 725 EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, listener.last_status);
735 } 726 }
736 727
737 // Test that update isn't triggered for a non-stale worker. 728 // Test that update isn't triggered for a non-stale worker.
738 TEST_P(ServiceWorkerVersionTestP, StaleUpdate_FreshWorker) { 729 TEST_F(ServiceWorkerVersionTest, StaleUpdate_FreshWorker) {
739 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 730 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
740 registration_->SetActiveVersion(version_); 731 registration_->SetActiveVersion(version_);
741 registration_->set_last_update_check(base::Time::Now()); 732 registration_->set_last_update_check(base::Time::Now());
742 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::PUSH); 733 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::PUSH);
743 734
744 EXPECT_TRUE(version_->stale_time_.is_null()); 735 EXPECT_TRUE(version_->stale_time_.is_null());
745 EXPECT_FALSE(version_->update_timer_.IsRunning()); 736 EXPECT_FALSE(version_->update_timer_.IsRunning());
746 } 737 }
747 738
748 // Test that update isn't triggered for a non-active worker. 739 // Test that update isn't triggered for a non-active worker.
749 TEST_P(ServiceWorkerVersionTestP, StaleUpdate_NonActiveWorker) { 740 TEST_F(ServiceWorkerVersionTest, StaleUpdate_NonActiveWorker) {
750 version_->SetStatus(ServiceWorkerVersion::INSTALLING); 741 version_->SetStatus(ServiceWorkerVersion::INSTALLING);
751 registration_->SetInstallingVersion(version_); 742 registration_->SetInstallingVersion(version_);
752 registration_->set_last_update_check(GetYesterday()); 743 registration_->set_last_update_check(GetYesterday());
753 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::INSTALL); 744 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::INSTALL);
754 745
755 EXPECT_TRUE(version_->stale_time_.is_null()); 746 EXPECT_TRUE(version_->stale_time_.is_null());
756 EXPECT_FALSE(version_->update_timer_.IsRunning()); 747 EXPECT_FALSE(version_->update_timer_.IsRunning());
757 } 748 }
758 749
759 // Test that staleness is detected when starting a worker. 750 // Test that staleness is detected when starting a worker.
760 TEST_P(ServiceWorkerVersionTestP, StaleUpdate_StartWorker) { 751 TEST_F(ServiceWorkerVersionTest, StaleUpdate_StartWorker) {
761 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 752 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
762 753
763 // Starting the worker marks it as stale. 754 // Starting the worker marks it as stale.
764 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 755 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
765 registration_->SetActiveVersion(version_); 756 registration_->SetActiveVersion(version_);
766 registration_->set_last_update_check(GetYesterday()); 757 registration_->set_last_update_check(GetYesterday());
767 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::PUSH); 758 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::PUSH);
768 EXPECT_FALSE(version_->stale_time_.is_null()); 759 EXPECT_FALSE(version_->stale_time_.is_null());
769 EXPECT_FALSE(version_->update_timer_.IsRunning()); 760 EXPECT_FALSE(version_->update_timer_.IsRunning());
770 761
771 // Update is actually scheduled after the worker stops. 762 // Update is actually scheduled after the worker stops.
772 version_->StopWorker(CreateReceiverOnCurrentThread(&status)); 763 version_->StopWorker(CreateReceiverOnCurrentThread(&status));
773 base::RunLoop().RunUntilIdle(); 764 base::RunLoop().RunUntilIdle();
774 EXPECT_EQ(SERVICE_WORKER_OK, status); 765 EXPECT_EQ(SERVICE_WORKER_OK, status);
775 EXPECT_TRUE(version_->stale_time_.is_null()); 766 EXPECT_TRUE(version_->stale_time_.is_null());
776 EXPECT_TRUE(version_->update_timer_.IsRunning()); 767 EXPECT_TRUE(version_->update_timer_.IsRunning());
777 } 768 }
778 769
779 // Test that staleness is detected on a running worker. 770 // Test that staleness is detected on a running worker.
780 TEST_P(ServiceWorkerVersionTestP, StaleUpdate_RunningWorker) { 771 TEST_F(ServiceWorkerVersionTest, StaleUpdate_RunningWorker) {
781 // Start a fresh worker. 772 // Start a fresh worker.
782 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 773 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
783 registration_->SetActiveVersion(version_); 774 registration_->SetActiveVersion(version_);
784 registration_->set_last_update_check(base::Time::Now()); 775 registration_->set_last_update_check(base::Time::Now());
785 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::PUSH); 776 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::PUSH);
786 EXPECT_TRUE(version_->stale_time_.is_null()); 777 EXPECT_TRUE(version_->stale_time_.is_null());
787 778
788 // Simulate it running for a day. It will be marked stale. 779 // Simulate it running for a day. It will be marked stale.
789 registration_->set_last_update_check(GetYesterday()); 780 registration_->set_last_update_check(GetYesterday());
790 version_->OnTimeoutTimer(); 781 version_->OnTimeoutTimer();
791 EXPECT_FALSE(version_->stale_time_.is_null()); 782 EXPECT_FALSE(version_->stale_time_.is_null());
792 EXPECT_FALSE(version_->update_timer_.IsRunning()); 783 EXPECT_FALSE(version_->update_timer_.IsRunning());
793 784
794 // Simulate it running for past the wait threshold. The update will be 785 // Simulate it running for past the wait threshold. The update will be
795 // scheduled. 786 // scheduled.
796 version_->stale_time_ = 787 version_->stale_time_ =
797 base::TimeTicks::Now() - 788 base::TimeTicks::Now() -
798 base::TimeDelta::FromMinutes( 789 base::TimeDelta::FromMinutes(
799 ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes + 1); 790 ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes + 1);
800 version_->OnTimeoutTimer(); 791 version_->OnTimeoutTimer();
801 EXPECT_TRUE(version_->stale_time_.is_null()); 792 EXPECT_TRUE(version_->stale_time_.is_null());
802 EXPECT_TRUE(version_->update_timer_.IsRunning()); 793 EXPECT_TRUE(version_->update_timer_.IsRunning());
803 } 794 }
804 795
805 // Test that a stream of events doesn't restart the timer. 796 // Test that a stream of events doesn't restart the timer.
806 TEST_P(ServiceWorkerVersionTestP, StaleUpdate_DoNotDeferTimer) { 797 TEST_F(ServiceWorkerVersionTest, StaleUpdate_DoNotDeferTimer) {
807 // Make a stale worker. 798 // Make a stale worker.
808 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 799 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
809 registration_->SetActiveVersion(version_); 800 registration_->SetActiveVersion(version_);
810 registration_->set_last_update_check(GetYesterday()); 801 registration_->set_last_update_check(GetYesterday());
811 base::TimeTicks stale_time = 802 base::TimeTicks stale_time =
812 base::TimeTicks::Now() - 803 base::TimeTicks::Now() -
813 base::TimeDelta::FromMinutes( 804 base::TimeDelta::FromMinutes(
814 ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes + 1); 805 ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes + 1);
815 version_->stale_time_ = stale_time; 806 version_->stale_time_ = stale_time;
816 807
(...skipping 15 matching lines...) Expand all
832 // Update timer is not deferred. 823 // Update timer is not deferred.
833 base::TimeTicks run_time = version_->update_timer_.desired_run_time(); 824 base::TimeTicks run_time = version_->update_timer_.desired_run_time();
834 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::PUSH); 825 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::PUSH);
835 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::PUSH); 826 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::PUSH);
836 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::PUSH); 827 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::PUSH);
837 base::RunLoop().RunUntilIdle(); 828 base::RunLoop().RunUntilIdle();
838 EXPECT_TRUE(version_->stale_time_.is_null()); 829 EXPECT_TRUE(version_->stale_time_.is_null());
839 EXPECT_EQ(run_time, version_->update_timer_.desired_run_time()); 830 EXPECT_EQ(run_time, version_->update_timer_.desired_run_time());
840 } 831 }
841 832
842 TEST_P(ServiceWorkerVersionTestP, RequestTimeout) { 833 TEST_F(ServiceWorkerVersionTest, RequestTimeout) {
843 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value 834 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value
844 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 835 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
845 836
846 version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME, 837 version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
847 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); 838 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
848 base::RunLoop().RunUntilIdle(); 839 base::RunLoop().RunUntilIdle();
849 840
850 // Create a request. 841 // Create a request.
851 int request_id = 842 int request_id =
852 version_->StartRequest(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME, 843 version_->StartRequest(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
853 CreateReceiverOnCurrentThread(&status)); 844 CreateReceiverOnCurrentThread(&status));
854 base::RunLoop().RunUntilIdle(); 845 base::RunLoop().RunUntilIdle();
855 846
856 // Callback has not completed yet. 847 // Callback has not completed yet.
857 EXPECT_EQ(SERVICE_WORKER_ERROR_NETWORK, status); 848 EXPECT_EQ(SERVICE_WORKER_ERROR_NETWORK, status);
858 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 849 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
859 850
860 // Simulate timeout. 851 // Simulate timeout.
861 EXPECT_TRUE(version_->timeout_timer_.IsRunning()); 852 EXPECT_TRUE(version_->timeout_timer_.IsRunning());
862 version_->SetAllRequestExpirations(base::TimeTicks::Now()); 853 version_->SetAllRequestExpirations(base::TimeTicks::Now());
863 version_->timeout_timer_.user_task().Run(); 854 version_->timeout_timer_.user_task().Run();
864 base::RunLoop().RunUntilIdle(); 855 base::RunLoop().RunUntilIdle();
865 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); 856 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status);
866 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); 857 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
867 EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */, 858 EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */,
868 base::Time::Now())); 859 base::Time::Now()));
869 } 860 }
870 861
871 TEST_P(ServiceWorkerVersionTestP, RequestNowTimeout) { 862 TEST_F(ServiceWorkerVersionTest, RequestNowTimeout) {
872 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value 863 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value
873 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 864 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
874 865
875 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, 866 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC,
876 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); 867 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
877 base::RunLoop().RunUntilIdle(); 868 base::RunLoop().RunUntilIdle();
878 869
879 // Create a request that should expire Now(). 870 // Create a request that should expire Now().
880 int request_id = version_->StartRequestWithCustomTimeout( 871 int request_id = version_->StartRequestWithCustomTimeout(
881 ServiceWorkerMetrics::EventType::SYNC, 872 ServiceWorkerMetrics::EventType::SYNC,
882 CreateReceiverOnCurrentThread(&status), base::TimeDelta(), 873 CreateReceiverOnCurrentThread(&status), base::TimeDelta(),
883 ServiceWorkerVersion::CONTINUE_ON_TIMEOUT); 874 ServiceWorkerVersion::CONTINUE_ON_TIMEOUT);
884 875
885 base::RunLoop().RunUntilIdle(); 876 base::RunLoop().RunUntilIdle();
886 EXPECT_TRUE(version_->timeout_timer_.IsRunning()); 877 EXPECT_TRUE(version_->timeout_timer_.IsRunning());
887 version_->timeout_timer_.user_task().Run(); 878 version_->timeout_timer_.user_task().Run();
888 base::RunLoop().RunUntilIdle(); 879 base::RunLoop().RunUntilIdle();
889 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); 880 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status);
890 881
891 EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */, 882 EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */,
892 base::Time::Now())); 883 base::Time::Now()));
893 884
894 // CONTINUE_ON_TIMEOUT timeouts don't stop the service worker. 885 // CONTINUE_ON_TIMEOUT timeouts don't stop the service worker.
895 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 886 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
896 } 887 }
897 888
898 TEST_P(ServiceWorkerVersionTestP, RequestNowTimeoutKill) { 889 TEST_F(ServiceWorkerVersionTest, RequestNowTimeoutKill) {
899 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value 890 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value
900 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 891 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
901 892
902 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, 893 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC,
903 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); 894 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
904 base::RunLoop().RunUntilIdle(); 895 base::RunLoop().RunUntilIdle();
905 896
906 // Create a request that should expire Now(). 897 // Create a request that should expire Now().
907 int request_id = version_->StartRequestWithCustomTimeout( 898 int request_id = version_->StartRequestWithCustomTimeout(
908 ServiceWorkerMetrics::EventType::SYNC, 899 ServiceWorkerMetrics::EventType::SYNC,
909 CreateReceiverOnCurrentThread(&status), base::TimeDelta(), 900 CreateReceiverOnCurrentThread(&status), base::TimeDelta(),
910 ServiceWorkerVersion::KILL_ON_TIMEOUT); 901 ServiceWorkerVersion::KILL_ON_TIMEOUT);
911 902
912 base::RunLoop().RunUntilIdle(); 903 base::RunLoop().RunUntilIdle();
913 EXPECT_TRUE(version_->timeout_timer_.IsRunning()); 904 EXPECT_TRUE(version_->timeout_timer_.IsRunning());
914 version_->timeout_timer_.user_task().Run(); 905 version_->timeout_timer_.user_task().Run();
915 base::RunLoop().RunUntilIdle(); 906 base::RunLoop().RunUntilIdle();
916 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); 907 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status);
917 908
918 EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */, 909 EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */,
919 base::Time::Now())); 910 base::Time::Now()));
920 911
921 // KILL_ON_TIMEOUT timeouts should stop the service worker. 912 // KILL_ON_TIMEOUT timeouts should stop the service worker.
922 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); 913 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
923 } 914 }
924 915
925 TEST_P(ServiceWorkerVersionTestP, RequestCustomizedTimeout) { 916 TEST_F(ServiceWorkerVersionTest, RequestCustomizedTimeout) {
926 ServiceWorkerStatusCode first_status = 917 ServiceWorkerStatusCode first_status =
927 SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value 918 SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value
928 ServiceWorkerStatusCode second_status = 919 ServiceWorkerStatusCode second_status =
929 SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value 920 SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value
930 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 921 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
931 922
932 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, 923 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC,
933 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); 924 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
934 base::RunLoop().RunUntilIdle(); 925 base::RunLoop().RunUntilIdle();
935 926
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
977 EXPECT_FALSE(version_->FinishRequest(first_request_id, true /* was_handled */, 968 EXPECT_FALSE(version_->FinishRequest(first_request_id, true /* was_handled */,
978 base::Time::Now())); 969 base::Time::Now()));
979 970
980 EXPECT_FALSE(version_->FinishRequest( 971 EXPECT_FALSE(version_->FinishRequest(
981 second_request_id, true /* was_handled */, base::Time::Now())); 972 second_request_id, true /* was_handled */, base::Time::Now()));
982 973
983 // KILL_ON_TIMEOUT timeouts should stop the service worker. 974 // KILL_ON_TIMEOUT timeouts should stop the service worker.
984 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); 975 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
985 } 976 }
986 977
987 TEST_P(ServiceWorkerVersionTestP, MixedRequestTimeouts) { 978 TEST_F(ServiceWorkerVersionTest, MixedRequestTimeouts) {
988 ServiceWorkerStatusCode sync_status = 979 ServiceWorkerStatusCode sync_status =
989 SERVICE_WORKER_ERROR_NETWORK; // dummy value 980 SERVICE_WORKER_ERROR_NETWORK; // dummy value
990 ServiceWorkerStatusCode fetch_status = 981 ServiceWorkerStatusCode fetch_status =
991 SERVICE_WORKER_ERROR_NETWORK; // dummy value 982 SERVICE_WORKER_ERROR_NETWORK; // dummy value
992 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 983 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
993 984
994 version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME, 985 version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
995 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); 986 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
996 base::RunLoop().RunUntilIdle(); 987 base::RunLoop().RunUntilIdle();
997 988
(...skipping 30 matching lines...) Expand all
1028 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, fetch_status); 1019 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, fetch_status);
1029 1020
1030 // Fetch request should no longer exist. 1021 // Fetch request should no longer exist.
1031 EXPECT_FALSE(version_->FinishRequest(fetch_request_id, true /* was_handled */, 1022 EXPECT_FALSE(version_->FinishRequest(fetch_request_id, true /* was_handled */,
1032 base::Time::Now())); 1023 base::Time::Now()));
1033 1024
1034 // Other timeouts do stop the service worker. 1025 // Other timeouts do stop the service worker.
1035 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); 1026 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
1036 } 1027 }
1037 1028
1038 TEST_P(ServiceWorkerFailToStartTest, RendererCrash) { 1029 TEST_F(ServiceWorkerFailToStartTest, RendererCrash) {
1039 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value 1030 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value
1040 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 1031 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
1041 CreateReceiverOnCurrentThread(&status)); 1032 CreateReceiverOnCurrentThread(&status));
1042 base::RunLoop().RunUntilIdle(); 1033 base::RunLoop().RunUntilIdle();
1043 1034
1044 // Callback has not completed yet. 1035 // Callback has not completed yet.
1045 EXPECT_EQ(SERVICE_WORKER_ERROR_NETWORK, status); 1036 EXPECT_EQ(SERVICE_WORKER_ERROR_NETWORK, status);
1046 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status()); 1037 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status());
1047 1038
1048 // Simulate renderer crash: do what 1039 // Simulate renderer crash: do what
1049 // ServiceWorkerDispatcherHost::OnFilterRemoved does. 1040 // ServiceWorkerDispatcherHost::OnFilterRemoved does.
1050 int process_id = helper_->mock_render_process_id(); 1041 int process_id = helper_->mock_render_process_id();
1051 helper_->context()->RemoveAllProviderHostsForProcess(process_id); 1042 helper_->context()->RemoveAllProviderHostsForProcess(process_id);
1052 helper_->context()->embedded_worker_registry()->RemoveChildProcessSender( 1043 helper_->context()->embedded_worker_registry()->RemoveChildProcessSender(
1053 process_id); 1044 process_id);
1054 base::RunLoop().RunUntilIdle(); 1045 base::RunLoop().RunUntilIdle();
1055 1046
1056 // Callback completed. 1047 // Callback completed.
1057 EXPECT_EQ(SERVICE_WORKER_ERROR_START_WORKER_FAILED, status); 1048 EXPECT_EQ(SERVICE_WORKER_ERROR_START_WORKER_FAILED, status);
1058 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); 1049 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
1059 } 1050 }
1060 1051
1061 TEST_P(ServiceWorkerFailToStartTest, Timeout) { 1052 TEST_F(ServiceWorkerFailToStartTest, Timeout) {
1062 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value 1053 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value
1063 1054
1064 // Start starting the worker. 1055 // Start starting the worker.
1065 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 1056 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
1066 CreateReceiverOnCurrentThread(&status)); 1057 CreateReceiverOnCurrentThread(&status));
1067 base::RunLoop().RunUntilIdle(); 1058 base::RunLoop().RunUntilIdle();
1068 1059
1069 // Callback has not completed yet. 1060 // Callback has not completed yet.
1070 EXPECT_EQ(SERVICE_WORKER_ERROR_NETWORK, status); 1061 EXPECT_EQ(SERVICE_WORKER_ERROR_NETWORK, status);
1071 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status()); 1062 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status());
1072 1063
1073 // Simulate timeout. 1064 // Simulate timeout.
1074 EXPECT_TRUE(version_->timeout_timer_.IsRunning()); 1065 EXPECT_TRUE(version_->timeout_timer_.IsRunning());
1075 version_->start_time_ = 1066 version_->start_time_ =
1076 base::TimeTicks::Now() - 1067 base::TimeTicks::Now() -
1077 base::TimeDelta::FromMinutes( 1068 base::TimeDelta::FromMinutes(
1078 ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes + 1); 1069 ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes + 1);
1079 version_->timeout_timer_.user_task().Run(); 1070 version_->timeout_timer_.user_task().Run();
1080 base::RunLoop().RunUntilIdle(); 1071 base::RunLoop().RunUntilIdle();
1081 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); 1072 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status);
1082 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); 1073 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
1083 } 1074 }
1084 1075
1085 // Test that a service worker stalled in stopping will timeout and not get in a 1076 // Test that a service worker stalled in stopping will timeout and not get in a
1086 // sticky error state. 1077 // sticky error state.
1087 TEST_P(ServiceWorkerStallInStoppingTest, DetachThenStart) { 1078 TEST_F(ServiceWorkerStallInStoppingTest, DetachThenStart) {
1088 // Start a worker. 1079 // Start a worker.
1089 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 1080 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
1090 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 1081 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
1091 CreateReceiverOnCurrentThread(&status)); 1082 CreateReceiverOnCurrentThread(&status));
1092 base::RunLoop().RunUntilIdle(); 1083 base::RunLoop().RunUntilIdle();
1093 EXPECT_EQ(SERVICE_WORKER_OK, status); 1084 EXPECT_EQ(SERVICE_WORKER_OK, status);
1094 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 1085 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
1095 1086
1096 // Try to stop the worker. 1087 // Try to stop the worker.
1097 status = SERVICE_WORKER_ERROR_FAILED; 1088 status = SERVICE_WORKER_ERROR_FAILED;
(...skipping 27 matching lines...) Expand all
1125 1116
1126 // The timeout interval should be reset to normal. 1117 // The timeout interval should be reset to normal.
1127 EXPECT_TRUE(version_->timeout_timer_.IsRunning()); 1118 EXPECT_TRUE(version_->timeout_timer_.IsRunning());
1128 EXPECT_EQ(base::TimeDelta::FromSeconds( 1119 EXPECT_EQ(base::TimeDelta::FromSeconds(
1129 ServiceWorkerVersion::kTimeoutTimerDelaySeconds), 1120 ServiceWorkerVersion::kTimeoutTimerDelaySeconds),
1130 version_->timeout_timer_.GetCurrentDelay()); 1121 version_->timeout_timer_.GetCurrentDelay());
1131 } 1122 }
1132 1123
1133 // Test that a service worker stalled in stopping with a start worker 1124 // Test that a service worker stalled in stopping with a start worker
1134 // request queued up will timeout and restart. 1125 // request queued up will timeout and restart.
1135 TEST_P(ServiceWorkerStallInStoppingTest, DetachThenRestart) { 1126 TEST_F(ServiceWorkerStallInStoppingTest, DetachThenRestart) {
1136 // Start a worker. 1127 // Start a worker.
1137 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 1128 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
1138 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 1129 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
1139 CreateReceiverOnCurrentThread(&status)); 1130 CreateReceiverOnCurrentThread(&status));
1140 base::RunLoop().RunUntilIdle(); 1131 base::RunLoop().RunUntilIdle();
1141 EXPECT_EQ(SERVICE_WORKER_OK, status); 1132 EXPECT_EQ(SERVICE_WORKER_OK, status);
1142 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 1133 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
1143 1134
1144 // Try to stop the worker. 1135 // Try to stop the worker.
1145 status = SERVICE_WORKER_ERROR_FAILED; 1136 status = SERVICE_WORKER_ERROR_FAILED;
(...skipping 11 matching lines...) Expand all
1157 base::TimeTicks::Now() - 1148 base::TimeTicks::Now() -
1158 base::TimeDelta::FromSeconds( 1149 base::TimeDelta::FromSeconds(
1159 ServiceWorkerVersion::kStopWorkerTimeoutSeconds + 1); 1150 ServiceWorkerVersion::kStopWorkerTimeoutSeconds + 1);
1160 version_->timeout_timer_.user_task().Run(); 1151 version_->timeout_timer_.user_task().Run();
1161 base::RunLoop().RunUntilIdle(); 1152 base::RunLoop().RunUntilIdle();
1162 EXPECT_EQ(SERVICE_WORKER_OK, status); 1153 EXPECT_EQ(SERVICE_WORKER_OK, status);
1163 EXPECT_EQ(SERVICE_WORKER_OK, start_status); 1154 EXPECT_EQ(SERVICE_WORKER_OK, start_status);
1164 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 1155 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
1165 } 1156 }
1166 1157
1167 TEST_P(ServiceWorkerVersionTestP, RegisterForeignFetchScopes) { 1158 TEST_F(ServiceWorkerVersionTest, RegisterForeignFetchScopes) {
1168 version_->SetStatus(ServiceWorkerVersion::INSTALLING); 1159 version_->SetStatus(ServiceWorkerVersion::INSTALLING);
1169 // Start a worker. 1160 // Start a worker.
1170 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 1161 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
1171 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 1162 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
1172 CreateReceiverOnCurrentThread(&status)); 1163 CreateReceiverOnCurrentThread(&status));
1173 base::RunLoop().RunUntilIdle(); 1164 base::RunLoop().RunUntilIdle();
1174 EXPECT_EQ(SERVICE_WORKER_OK, status); 1165 EXPECT_EQ(SERVICE_WORKER_OK, status);
1175 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 1166 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
1176 EXPECT_EQ(0, helper_->mock_render_process_host()->bad_msg_count()); 1167 EXPECT_EQ(0, helper_->mock_render_process_host()->bad_msg_count());
1177 1168
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1233 version_->OnRegisterForeignFetchScopes(valid_scopes, valid_origin_list); 1224 version_->OnRegisterForeignFetchScopes(valid_scopes, valid_origin_list);
1234 base::RunLoop().RunUntilIdle(); 1225 base::RunLoop().RunUntilIdle();
1235 EXPECT_EQ(4, helper_->mock_render_process_host()->bad_msg_count()); 1226 EXPECT_EQ(4, helper_->mock_render_process_host()->bad_msg_count());
1236 EXPECT_EQ(2u, version_->foreign_fetch_scopes_.size()); 1227 EXPECT_EQ(2u, version_->foreign_fetch_scopes_.size());
1237 EXPECT_EQ(valid_scope_1, version_->foreign_fetch_scopes_[0]); 1228 EXPECT_EQ(valid_scope_1, version_->foreign_fetch_scopes_[0]);
1238 EXPECT_EQ(valid_scope_2, version_->foreign_fetch_scopes_[1]); 1229 EXPECT_EQ(valid_scope_2, version_->foreign_fetch_scopes_[1]);
1239 EXPECT_EQ(1u, version_->foreign_fetch_origins_.size()); 1230 EXPECT_EQ(1u, version_->foreign_fetch_origins_.size());
1240 EXPECT_EQ(valid_origin, version_->foreign_fetch_origins_[0]); 1231 EXPECT_EQ(valid_origin, version_->foreign_fetch_origins_[0]);
1241 } 1232 }
1242 1233
1243 TEST_P(ServiceWorkerVersionTestP, RendererCrashDuringEvent) { 1234 TEST_F(ServiceWorkerVersionTest, RendererCrashDuringEvent) {
1244 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value 1235 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value
1245 1236
1246 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 1237 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
1247 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, 1238 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC,
1248 CreateReceiverOnCurrentThread(&status)); 1239 CreateReceiverOnCurrentThread(&status));
1249 base::RunLoop().RunUntilIdle(); 1240 base::RunLoop().RunUntilIdle();
1250 EXPECT_EQ(SERVICE_WORKER_OK, status); 1241 EXPECT_EQ(SERVICE_WORKER_OK, status);
1251 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 1242 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
1252 1243
1253 int request_id = 1244 int request_id =
(...skipping 14 matching lines...) Expand all
1268 1259
1269 // Callback completed. 1260 // Callback completed.
1270 EXPECT_EQ(SERVICE_WORKER_ERROR_FAILED, status); 1261 EXPECT_EQ(SERVICE_WORKER_ERROR_FAILED, status);
1271 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); 1262 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
1272 1263
1273 // Request already failed, calling finsh should return false. 1264 // Request already failed, calling finsh should return false.
1274 EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */, 1265 EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */,
1275 base::Time::Now())); 1266 base::Time::Now()));
1276 } 1267 }
1277 1268
1278 TEST_P(ServiceWorkerVersionTestP, DispatchEvent) { 1269 TEST_F(ServiceWorkerVersionTest, DispatchEvent) {
1279 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value 1270 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value
1280 1271
1281 // Activate and start worker. 1272 // Activate and start worker.
1282 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 1273 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
1283 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, 1274 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC,
1284 CreateReceiverOnCurrentThread(&status)); 1275 CreateReceiverOnCurrentThread(&status));
1285 base::RunLoop().RunUntilIdle(); 1276 base::RunLoop().RunUntilIdle();
1286 EXPECT_EQ(SERVICE_WORKER_OK, status); 1277 EXPECT_EQ(SERVICE_WORKER_OK, status);
1287 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 1278 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
1288 1279
(...skipping 25 matching lines...) Expand all
1314 EXPECT_EQ(request_id, received_request_id); 1305 EXPECT_EQ(request_id, received_request_id);
1315 EXPECT_EQ(reply, received_data); 1306 EXPECT_EQ(reply, received_data);
1316 1307
1317 // Should not have timed out, so error callback should not have been 1308 // Should not have timed out, so error callback should not have been
1318 // called and FinishRequest should return true. 1309 // called and FinishRequest should return true.
1319 EXPECT_EQ(SERVICE_WORKER_OK, status); 1310 EXPECT_EQ(SERVICE_WORKER_OK, status);
1320 EXPECT_TRUE(version_->FinishRequest(request_id, true /* was_handled */, 1311 EXPECT_TRUE(version_->FinishRequest(request_id, true /* was_handled */,
1321 base::Time::Now())); 1312 base::Time::Now()));
1322 } 1313 }
1323 1314
1324 TEST_P(ServiceWorkerFailToStartTest, FailingWorkerUsesNewRendererProcess) { 1315 TEST_F(ServiceWorkerFailToStartTest, FailingWorkerUsesNewRendererProcess) {
1325 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE; 1316 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
1326 1317
1327 helper_->SimulateAddProcessToPattern(pattern_, 1318 helper_->SimulateAddProcessToPattern(pattern_,
1328 helper_->new_render_process_id()); 1319 helper_->new_render_process_id());
1329 ServiceWorkerContextCore* context = helper_->context(); 1320 ServiceWorkerContextCore* context = helper_->context();
1330 int64_t id = version_->version_id(); 1321 int64_t id = version_->version_id();
1331 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 1322 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
1332 1323
1333 // Start once. It should choose the "existing process". 1324 // Start once. It should choose the "existing process".
1334 set_start_mode(MessageReceiverDisallowStart::StartMode::SUCCEED); 1325 set_start_mode(MessageReceiverDisallowStart::StartMode::SUCCEED);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1373 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 1364 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
1374 CreateReceiverOnCurrentThread(&status)); 1365 CreateReceiverOnCurrentThread(&status));
1375 base::RunLoop().RunUntilIdle(); 1366 base::RunLoop().RunUntilIdle();
1376 EXPECT_EQ(SERVICE_WORKER_OK, status); 1367 EXPECT_EQ(SERVICE_WORKER_OK, status);
1377 EXPECT_EQ(helper_->mock_render_process_id(), 1368 EXPECT_EQ(helper_->mock_render_process_id(),
1378 version_->embedded_worker()->process_id()); 1369 version_->embedded_worker()->process_id());
1379 version_->StopWorker(CreateReceiverOnCurrentThread(&status)); 1370 version_->StopWorker(CreateReceiverOnCurrentThread(&status));
1380 base::RunLoop().RunUntilIdle(); 1371 base::RunLoop().RunUntilIdle();
1381 } 1372 }
1382 1373
1383 TEST_P(ServiceWorkerFailToStartTest, RestartStalledWorker) { 1374 TEST_F(ServiceWorkerFailToStartTest, RestartStalledWorker) {
1384 ServiceWorkerStatusCode status1 = SERVICE_WORKER_ERROR_MAX_VALUE; 1375 ServiceWorkerStatusCode status1 = SERVICE_WORKER_ERROR_MAX_VALUE;
1385 ServiceWorkerStatusCode status2 = SERVICE_WORKER_ERROR_MAX_VALUE; 1376 ServiceWorkerStatusCode status2 = SERVICE_WORKER_ERROR_MAX_VALUE;
1386 version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME, 1377 version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
1387 CreateReceiverOnCurrentThread(&status1)); 1378 CreateReceiverOnCurrentThread(&status1));
1388 base::RunLoop().RunUntilIdle(); 1379 base::RunLoop().RunUntilIdle();
1389 // The default start mode is StartMode::STALL. So the callback of StartWorker 1380 // The default start mode is StartMode::STALL. So the callback of StartWorker
1390 // is not called yet. 1381 // is not called yet.
1391 EXPECT_EQ(SERVICE_WORKER_ERROR_MAX_VALUE, status1); 1382 EXPECT_EQ(SERVICE_WORKER_ERROR_MAX_VALUE, status1);
1392 1383
1393 // Set StartMode::SUCCEED. So the next start worker will be successful. 1384 // Set StartMode::SUCCEED. So the next start worker will be successful.
1394 set_start_mode(MessageReceiverDisallowStart::StartMode::SUCCEED); 1385 set_start_mode(MessageReceiverDisallowStart::StartMode::SUCCEED);
1395 1386
1396 // StartWorker message will be sent again because OnStopped is called before 1387 // StartWorker message will be sent again because OnStopped is called before
1397 // OnStarted. 1388 // OnStarted.
1398 version_->StopWorker(CreateReceiverOnCurrentThread(&status2)); 1389 version_->StopWorker(CreateReceiverOnCurrentThread(&status2));
1399 base::RunLoop().RunUntilIdle(); 1390 base::RunLoop().RunUntilIdle();
1400 1391
1401 EXPECT_EQ(SERVICE_WORKER_OK, status1); 1392 EXPECT_EQ(SERVICE_WORKER_OK, status1);
1402 EXPECT_EQ(SERVICE_WORKER_OK, status2); 1393 EXPECT_EQ(SERVICE_WORKER_OK, status2);
1403 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 1394 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
1404 } 1395 }
1405 1396
1406 TEST_P(ServiceWorkerVersionTestP, DispatchConcurrentEvent) { 1397 TEST_F(ServiceWorkerVersionTest, DispatchConcurrentEvent) {
1407 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value 1398 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value
1408 1399
1409 // Activate and start worker. 1400 // Activate and start worker.
1410 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 1401 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
1411 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, 1402 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC,
1412 CreateReceiverOnCurrentThread(&status)); 1403 CreateReceiverOnCurrentThread(&status));
1413 base::RunLoop().RunUntilIdle(); 1404 base::RunLoop().RunUntilIdle();
1414 EXPECT_EQ(SERVICE_WORKER_OK, status); 1405 EXPECT_EQ(SERVICE_WORKER_OK, status);
1415 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 1406 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
1416 1407
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1475 1466
1476 // Verify correct response was received. 1467 // Verify correct response was received.
1477 EXPECT_EQ(request_id1, received_request_id1); 1468 EXPECT_EQ(request_id1, received_request_id1);
1478 EXPECT_EQ(request_id2, received_request_id2); 1469 EXPECT_EQ(request_id2, received_request_id2);
1479 EXPECT_EQ(reply1, received_data1); 1470 EXPECT_EQ(reply1, received_data1);
1480 EXPECT_EQ(SERVICE_WORKER_OK, status1); 1471 EXPECT_EQ(SERVICE_WORKER_OK, status1);
1481 EXPECT_TRUE(version_->FinishRequest(request_id1, true /* was_handled */, 1472 EXPECT_TRUE(version_->FinishRequest(request_id1, true /* was_handled */,
1482 base::Time::Now())); 1473 base::Time::Now()));
1483 } 1474 }
1484 1475
1485 TEST_P(ServiceWorkerVersionTestP, DispatchSimpleEvent_Completed) { 1476 TEST_F(ServiceWorkerVersionTest, DispatchSimpleEvent_Completed) {
1486 ServiceWorkerStatusCode status = 1477 ServiceWorkerStatusCode status =
1487 SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value 1478 SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value
1488 1479
1489 // Activate and start worker. 1480 // Activate and start worker.
1490 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 1481 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
1491 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, 1482 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC,
1492 CreateReceiverOnCurrentThread(&status)); 1483 CreateReceiverOnCurrentThread(&status));
1493 base::RunLoop().RunUntilIdle(); 1484 base::RunLoop().RunUntilIdle();
1494 EXPECT_EQ(SERVICE_WORKER_OK, status); 1485 EXPECT_EQ(SERVICE_WORKER_OK, status);
1495 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 1486 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
(...skipping 16 matching lines...) Expand all
1512 // Simulate sending reply to event. 1503 // Simulate sending reply to event.
1513 helper_->SimulateSendSimpleEventResult( 1504 helper_->SimulateSendSimpleEventResult(
1514 version_->embedded_worker()->embedded_worker_id(), request_id, 1505 version_->embedded_worker()->embedded_worker_id(), request_id,
1515 blink::WebServiceWorkerEventResultCompleted, base::Time::Now()); 1506 blink::WebServiceWorkerEventResultCompleted, base::Time::Now());
1516 runner->Run(); 1507 runner->Run();
1517 1508
1518 // Verify callback was called with correct status. 1509 // Verify callback was called with correct status.
1519 EXPECT_EQ(SERVICE_WORKER_OK, status); 1510 EXPECT_EQ(SERVICE_WORKER_OK, status);
1520 } 1511 }
1521 1512
1522 TEST_P(ServiceWorkerVersionTestP, DispatchSimpleEvent_Rejected) { 1513 TEST_F(ServiceWorkerVersionTest, DispatchSimpleEvent_Rejected) {
1523 ServiceWorkerStatusCode status = 1514 ServiceWorkerStatusCode status =
1524 SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value 1515 SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value
1525 1516
1526 // Activate and start worker. 1517 // Activate and start worker.
1527 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 1518 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
1528 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, 1519 version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC,
1529 CreateReceiverOnCurrentThread(&status)); 1520 CreateReceiverOnCurrentThread(&status));
1530 base::RunLoop().RunUntilIdle(); 1521 base::RunLoop().RunUntilIdle();
1531 EXPECT_EQ(SERVICE_WORKER_OK, status); 1522 EXPECT_EQ(SERVICE_WORKER_OK, status);
1532 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 1523 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
(...skipping 16 matching lines...) Expand all
1549 // Simulate sending reply to event. 1540 // Simulate sending reply to event.
1550 helper_->SimulateSendSimpleEventResult( 1541 helper_->SimulateSendSimpleEventResult(
1551 version_->embedded_worker()->embedded_worker_id(), request_id, 1542 version_->embedded_worker()->embedded_worker_id(), request_id,
1552 blink::WebServiceWorkerEventResultRejected, base::Time::Now()); 1543 blink::WebServiceWorkerEventResultRejected, base::Time::Now());
1553 runner->Run(); 1544 runner->Run();
1554 1545
1555 // Verify callback was called with correct status. 1546 // Verify callback was called with correct status.
1556 EXPECT_EQ(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, status); 1547 EXPECT_EQ(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, status);
1557 } 1548 }
1558 1549
1559 TEST_P(ServiceWorkerVersionTestP, DispatchEvent_MultipleResponse) { 1550 TEST_F(ServiceWorkerVersionTest, DispatchEvent_MultipleResponse) {
1560 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE; 1551 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
1561 1552
1562 // Activate and start worker. 1553 // Activate and start worker.
1563 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 1554 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
1564 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, 1555 version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
1565 CreateReceiverOnCurrentThread(&status)); 1556 CreateReceiverOnCurrentThread(&status));
1566 base::RunLoop().RunUntilIdle(); 1557 base::RunLoop().RunUntilIdle();
1567 EXPECT_EQ(SERVICE_WORKER_OK, status); 1558 EXPECT_EQ(SERVICE_WORKER_OK, status);
1568 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 1559 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
1569 1560
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1618 1609
1619 // Should not have timed out, so error callback should not have been 1610 // Should not have timed out, so error callback should not have been
1620 // called and FinishRequest should return true. 1611 // called and FinishRequest should return true.
1621 EXPECT_EQ(SERVICE_WORKER_OK, status); 1612 EXPECT_EQ(SERVICE_WORKER_OK, status);
1622 EXPECT_TRUE(version_->FinishRequest(request_id1, true /* was_handled */, 1613 EXPECT_TRUE(version_->FinishRequest(request_id1, true /* was_handled */,
1623 base::Time::Now())); 1614 base::Time::Now()));
1624 EXPECT_TRUE(version_->FinishRequest(request_id2, true /* was_handled */, 1615 EXPECT_TRUE(version_->FinishRequest(request_id2, true /* was_handled */,
1625 base::Time::Now())); 1616 base::Time::Now()));
1626 } 1617 }
1627 1618
1628 class ServiceWorkerNavigationHintUMATest : public ServiceWorkerVersionTestP { 1619 class ServiceWorkerNavigationHintUMATest : public ServiceWorkerVersionTest {
1629 protected: 1620 protected:
1630 ServiceWorkerNavigationHintUMATest() : ServiceWorkerVersionTestP() {} 1621 ServiceWorkerNavigationHintUMATest() : ServiceWorkerVersionTest() {}
1631 1622
1632 void StartWorker(ServiceWorkerMetrics::EventType purpose) { 1623 void StartWorker(ServiceWorkerMetrics::EventType purpose) {
1633 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE; 1624 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
1634 version_->StartWorker(purpose, CreateReceiverOnCurrentThread(&status)); 1625 version_->StartWorker(purpose, CreateReceiverOnCurrentThread(&status));
1635 base::RunLoop().RunUntilIdle(); 1626 base::RunLoop().RunUntilIdle();
1636 EXPECT_EQ(SERVICE_WORKER_OK, status); 1627 EXPECT_EQ(SERVICE_WORKER_OK, status);
1637 } 1628 }
1638 1629
1639 void StopWorker() { 1630 void StopWorker() {
1640 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE; 1631 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1701 1692
1702 const char ServiceWorkerNavigationHintUMATest::kNavigationHintPrecision[] = 1693 const char ServiceWorkerNavigationHintUMATest::kNavigationHintPrecision[] =
1703 "ServiceWorker.NavigationHintPrecision"; 1694 "ServiceWorker.NavigationHintPrecision";
1704 const char ServiceWorkerNavigationHintUMATest::kLinkMouseDown[] = 1695 const char ServiceWorkerNavigationHintUMATest::kLinkMouseDown[] =
1705 "ServiceWorker.NavigationHintPrecision.LINK_MOUSE_DOWN"; 1696 "ServiceWorker.NavigationHintPrecision.LINK_MOUSE_DOWN";
1706 const char ServiceWorkerNavigationHintUMATest::kLinkTapUnconfirmed[] = 1697 const char ServiceWorkerNavigationHintUMATest::kLinkTapUnconfirmed[] =
1707 "ServiceWorker.NavigationHintPrecision.LINK_TAP_UNCONFIRMED"; 1698 "ServiceWorker.NavigationHintPrecision.LINK_TAP_UNCONFIRMED";
1708 const char ServiceWorkerNavigationHintUMATest::kLinkTapDown[] = 1699 const char ServiceWorkerNavigationHintUMATest::kLinkTapDown[] =
1709 "ServiceWorker.NavigationHintPrecision.LINK_TAP_DOWN"; 1700 "ServiceWorker.NavigationHintPrecision.LINK_TAP_DOWN";
1710 1701
1711 TEST_P(ServiceWorkerNavigationHintUMATest, LinkMouseDown) { 1702 TEST_F(ServiceWorkerNavigationHintUMATest, LinkMouseDown) {
1712 SimpleNavigationHintTest( 1703 SimpleNavigationHintTest(
1713 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN, 1704 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN,
1714 kLinkMouseDown, {kLinkTapUnconfirmed, kLinkTapDown}); 1705 kLinkMouseDown, {kLinkTapUnconfirmed, kLinkTapDown});
1715 } 1706 }
1716 1707
1717 TEST_P(ServiceWorkerNavigationHintUMATest, LinkTapUnconfirmed) { 1708 TEST_F(ServiceWorkerNavigationHintUMATest, LinkTapUnconfirmed) {
1718 SimpleNavigationHintTest( 1709 SimpleNavigationHintTest(
1719 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED, 1710 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED,
1720 kLinkTapUnconfirmed, {kLinkMouseDown, kLinkTapDown}); 1711 kLinkTapUnconfirmed, {kLinkMouseDown, kLinkTapDown});
1721 } 1712 }
1722 1713
1723 TEST_P(ServiceWorkerNavigationHintUMATest, LinkTapDown) { 1714 TEST_F(ServiceWorkerNavigationHintUMATest, LinkTapDown) {
1724 SimpleNavigationHintTest( 1715 SimpleNavigationHintTest(
1725 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_DOWN, 1716 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_DOWN,
1726 kLinkTapDown, {kLinkMouseDown, kLinkTapUnconfirmed}); 1717 kLinkTapDown, {kLinkMouseDown, kLinkTapUnconfirmed});
1727 } 1718 }
1728 1719
1729 TEST_P(ServiceWorkerNavigationHintUMATest, ConcurrentStart) { 1720 TEST_F(ServiceWorkerNavigationHintUMATest, ConcurrentStart) {
1730 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 1721 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
1731 ServiceWorkerStatusCode status1 = SERVICE_WORKER_ERROR_MAX_VALUE; 1722 ServiceWorkerStatusCode status1 = SERVICE_WORKER_ERROR_MAX_VALUE;
1732 ServiceWorkerStatusCode status2 = SERVICE_WORKER_ERROR_MAX_VALUE; 1723 ServiceWorkerStatusCode status2 = SERVICE_WORKER_ERROR_MAX_VALUE;
1733 version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME, 1724 version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
1734 CreateReceiverOnCurrentThread(&status1)); 1725 CreateReceiverOnCurrentThread(&status1));
1735 version_->StartWorker( 1726 version_->StartWorker(
1736 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN, 1727 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN,
1737 CreateReceiverOnCurrentThread(&status2)); 1728 CreateReceiverOnCurrentThread(&status2));
1738 base::RunLoop().RunUntilIdle(); 1729 base::RunLoop().RunUntilIdle();
1739 EXPECT_EQ(SERVICE_WORKER_OK, status1); 1730 EXPECT_EQ(SERVICE_WORKER_OK, status1);
(...skipping 13 matching lines...) Expand all
1753 EXPECT_EQ(SERVICE_WORKER_OK, status1); 1744 EXPECT_EQ(SERVICE_WORKER_OK, status1);
1754 EXPECT_EQ(SERVICE_WORKER_OK, status2); 1745 EXPECT_EQ(SERVICE_WORKER_OK, status2);
1755 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME); 1746 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME);
1756 StopWorker(); 1747 StopWorker();
1757 // The first purpose of starting worker was a navigation hint. 1748 // The first purpose of starting worker was a navigation hint.
1758 histogram_tester_.ExpectTotalCount(kNavigationHintPrecision, 1); 1749 histogram_tester_.ExpectTotalCount(kNavigationHintPrecision, 1);
1759 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, true, 1); 1750 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, true, 1);
1760 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, false, 0); 1751 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, false, 0);
1761 } 1752 }
1762 1753
1763 TEST_P(ServiceWorkerNavigationHintUMATest, StartWhileStopping) { 1754 TEST_F(ServiceWorkerNavigationHintUMATest, StartWhileStopping) {
1764 StartWorker(ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN); 1755 StartWorker(ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN);
1765 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE; 1756 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
1766 version_->StopWorker(CreateReceiverOnCurrentThread(&status)); 1757 version_->StopWorker(CreateReceiverOnCurrentThread(&status));
1767 EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, version_->running_status()); 1758 EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, version_->running_status());
1768 histogram_tester_.ExpectTotalCount(kLinkMouseDown, 0); 1759 histogram_tester_.ExpectTotalCount(kLinkMouseDown, 0);
1769 1760
1770 StartWorker(ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_DOWN); 1761 StartWorker(ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_DOWN);
1771 // The UMA for kLinkMouseDown must be recorded while restarting. 1762 // The UMA for kLinkMouseDown must be recorded while restarting.
1772 histogram_tester_.ExpectTotalCount(kLinkMouseDown, 1); 1763 histogram_tester_.ExpectTotalCount(kLinkMouseDown, 1);
1773 histogram_tester_.ExpectTotalCount(kLinkTapDown, 0); 1764 histogram_tester_.ExpectTotalCount(kLinkTapDown, 0);
1774 EXPECT_EQ(SERVICE_WORKER_OK, status); 1765 EXPECT_EQ(SERVICE_WORKER_OK, status);
1775 StopWorker(); 1766 StopWorker();
1776 // The UMA for kLinkMouseDown must be recorded when the worker stopped. 1767 // The UMA for kLinkMouseDown must be recorded when the worker stopped.
1777 histogram_tester_.ExpectTotalCount(kLinkMouseDown, 1); 1768 histogram_tester_.ExpectTotalCount(kLinkMouseDown, 1);
1778 histogram_tester_.ExpectTotalCount(kLinkTapDown, 1); 1769 histogram_tester_.ExpectTotalCount(kLinkTapDown, 1);
1779 } 1770 }
1780 1771
1781 INSTANTIATE_TEST_CASE_P(ServiceWorkerVersionTestP,
1782 ServiceWorkerVersionTestP,
1783 testing::Bool());
1784 INSTANTIATE_TEST_CASE_P(ServiceWorkerFailToStartTest,
1785 ServiceWorkerFailToStartTest,
1786 testing::Bool());
1787 INSTANTIATE_TEST_CASE_P(ServiceWorkerNavigationHintUMATest,
1788 ServiceWorkerNavigationHintUMATest,
1789 testing::Bool());
1790 INSTANTIATE_TEST_CASE_P(ServiceWorkerStallInStoppingTest,
1791 ServiceWorkerStallInStoppingTest,
1792 testing::Bool());
1793 } // namespace content 1772 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698