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

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

Issue 1179453002: ServiceWorker: Reset idle timer when we dispatch message event (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: NULL -> nullptr Created 5 years, 6 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
« no previous file with comments | « content/browser/service_worker/service_worker_version.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/run_loop.h" 6 #include "base/run_loop.h"
7 #include "content/browser/message_port_service.h"
7 #include "content/browser/service_worker/embedded_worker_registry.h" 8 #include "content/browser/service_worker/embedded_worker_registry.h"
8 #include "content/browser/service_worker/embedded_worker_test_helper.h" 9 #include "content/browser/service_worker/embedded_worker_test_helper.h"
9 #include "content/browser/service_worker/service_worker_context_core.h" 10 #include "content/browser/service_worker/service_worker_context_core.h"
10 #include "content/browser/service_worker/service_worker_registration.h" 11 #include "content/browser/service_worker/service_worker_registration.h"
11 #include "content/browser/service_worker/service_worker_test_utils.h" 12 #include "content/browser/service_worker/service_worker_test_utils.h"
12 #include "content/browser/service_worker/service_worker_utils.h" 13 #include "content/browser/service_worker/service_worker_utils.h"
13 #include "content/browser/service_worker/service_worker_version.h" 14 #include "content/browser/service_worker/service_worker_version.h"
14 #include "content/public/test/test_browser_thread_bundle.h" 15 #include "content/public/test/test_browser_thread_bundle.h"
15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
16 17
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 111
111 void OnMessageFromWorker(int value) { received_values_.push_back(value); } 112 void OnMessageFromWorker(int value) { received_values_.push_back(value); }
112 const std::vector<int>& received_values() const { return received_values_; } 113 const std::vector<int>& received_values() const { return received_values_; }
113 114
114 private: 115 private:
115 EmbeddedWorkerInstance* instance_; 116 EmbeddedWorkerInstance* instance_;
116 std::vector<int> received_values_; 117 std::vector<int> received_values_;
117 DISALLOW_COPY_AND_ASSIGN(MessageReceiverFromWorker); 118 DISALLOW_COPY_AND_ASSIGN(MessageReceiverFromWorker);
118 }; 119 };
119 120
121 void SetUpDummyMessagePort(std::vector<TransferredMessagePort>* ports) {
122 int port_id = -1;
123 MessagePortService::GetInstance()->Create(MSG_ROUTING_NONE, nullptr,
124 &port_id);
125 TransferredMessagePort dummy_port;
126 dummy_port.id = port_id;
127 ports->push_back(dummy_port);
128 }
129
120 } // namespace 130 } // namespace
121 131
122 class ServiceWorkerVersionTest : public testing::Test { 132 class ServiceWorkerVersionTest : public testing::Test {
123 protected: 133 protected:
124 struct RunningStateListener : public ServiceWorkerVersion::Listener { 134 struct RunningStateListener : public ServiceWorkerVersion::Listener {
125 RunningStateListener() : last_status(ServiceWorkerVersion::STOPPED) {} 135 RunningStateListener() : last_status(ServiceWorkerVersion::STOPPED) {}
126 ~RunningStateListener() override {} 136 ~RunningStateListener() override {}
127 void OnRunningStateChanged(ServiceWorkerVersion* version) override { 137 void OnRunningStateChanged(ServiceWorkerVersion* version) override {
128 last_status = version->running_status(); 138 last_status = version->running_status();
129 } 139 }
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 status = SERVICE_WORKER_ERROR_FAILED; 481 status = SERVICE_WORKER_ERROR_FAILED;
472 version_->idle_time_ -= kOneSecond; 482 version_->idle_time_ -= kOneSecond;
473 idle_time = version_->idle_time_; 483 idle_time = version_->idle_time_;
474 version_->DispatchFetchEvent(ServiceWorkerFetchRequest(), 484 version_->DispatchFetchEvent(ServiceWorkerFetchRequest(),
475 base::Bind(&base::DoNothing), 485 base::Bind(&base::DoNothing),
476 base::Bind(&ReceiveFetchResult, &status)); 486 base::Bind(&ReceiveFetchResult, &status));
477 base::RunLoop().RunUntilIdle(); 487 base::RunLoop().RunUntilIdle();
478 488
479 EXPECT_EQ(SERVICE_WORKER_OK, status); 489 EXPECT_EQ(SERVICE_WORKER_OK, status);
480 EXPECT_LT(idle_time, version_->idle_time_); 490 EXPECT_LT(idle_time, version_->idle_time_);
491
492 // Dispatching a message event resets the idle time.
493 std::vector<TransferredMessagePort> ports;
494 SetUpDummyMessagePort(&ports);
495 status = SERVICE_WORKER_ERROR_FAILED;
496 version_->idle_time_ -= kOneSecond;
497 idle_time = version_->idle_time_;
498 version_->DispatchMessageEvent(base::string16(), ports,
499 CreateReceiverOnCurrentThread(&status));
500 base::RunLoop().RunUntilIdle();
501 MessagePortService::GetInstance()->Destroy(ports[0].id);
502
503 EXPECT_EQ(SERVICE_WORKER_OK, status);
504 EXPECT_LT(idle_time, version_->idle_time_);
481 } 505 }
482 506
483 TEST_F(ServiceWorkerVersionTest, SetDevToolsAttached) { 507 TEST_F(ServiceWorkerVersionTest, SetDevToolsAttached) {
484 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 508 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
485 version_->StartWorker(CreateReceiverOnCurrentThread(&status)); 509 version_->StartWorker(CreateReceiverOnCurrentThread(&status));
486 510
487 ASSERT_EQ(ServiceWorkerVersion::STARTING, version_->running_status()); 511 ASSERT_EQ(ServiceWorkerVersion::STARTING, version_->running_status());
488 512
489 ASSERT_TRUE(version_->timeout_timer_.IsRunning()); 513 ASSERT_TRUE(version_->timeout_timer_.IsRunning());
490 ASSERT_FALSE(version_->start_time_.is_null()); 514 ASSERT_FALSE(version_->start_time_.is_null());
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 base::TimeTicks::Now() - 615 base::TimeTicks::Now() -
592 base::TimeDelta::FromMinutes( 616 base::TimeDelta::FromMinutes(
593 ServiceWorkerVersion::kStartWorkerTimeoutMinutes + 1); 617 ServiceWorkerVersion::kStartWorkerTimeoutMinutes + 1);
594 version_->timeout_timer_.user_task().Run(); 618 version_->timeout_timer_.user_task().Run();
595 base::RunLoop().RunUntilIdle(); 619 base::RunLoop().RunUntilIdle();
596 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); 620 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status);
597 EXPECT_EQ(ServiceWorkerVersion::STOPPED, version_->running_status()); 621 EXPECT_EQ(ServiceWorkerVersion::STOPPED, version_->running_status());
598 } 622 }
599 623
600 } // namespace content 624 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_version.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698