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

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: 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, NULL, &port_id);
nhiroki 2015/06/10 08:00:24 nit: nullptr
kinuko 2015/06/10 14:33:30 Done.
124 TransferredMessagePort dummy_port;
125 dummy_port.id = port_id;
126 ports->push_back(dummy_port);
127 }
128
120 } // namespace 129 } // namespace
121 130
122 class ServiceWorkerVersionTest : public testing::Test { 131 class ServiceWorkerVersionTest : public testing::Test {
123 protected: 132 protected:
124 struct RunningStateListener : public ServiceWorkerVersion::Listener { 133 struct RunningStateListener : public ServiceWorkerVersion::Listener {
125 RunningStateListener() : last_status(ServiceWorkerVersion::STOPPED) {} 134 RunningStateListener() : last_status(ServiceWorkerVersion::STOPPED) {}
126 ~RunningStateListener() override {} 135 ~RunningStateListener() override {}
127 void OnRunningStateChanged(ServiceWorkerVersion* version) override { 136 void OnRunningStateChanged(ServiceWorkerVersion* version) override {
128 last_status = version->running_status(); 137 last_status = version->running_status();
129 } 138 }
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 status = SERVICE_WORKER_ERROR_FAILED; 480 status = SERVICE_WORKER_ERROR_FAILED;
472 version_->idle_time_ -= kOneSecond; 481 version_->idle_time_ -= kOneSecond;
473 idle_time = version_->idle_time_; 482 idle_time = version_->idle_time_;
474 version_->DispatchFetchEvent(ServiceWorkerFetchRequest(), 483 version_->DispatchFetchEvent(ServiceWorkerFetchRequest(),
475 base::Bind(&base::DoNothing), 484 base::Bind(&base::DoNothing),
476 base::Bind(&ReceiveFetchResult, &status)); 485 base::Bind(&ReceiveFetchResult, &status));
477 base::RunLoop().RunUntilIdle(); 486 base::RunLoop().RunUntilIdle();
478 487
479 EXPECT_EQ(SERVICE_WORKER_OK, status); 488 EXPECT_EQ(SERVICE_WORKER_OK, status);
480 EXPECT_LT(idle_time, version_->idle_time_); 489 EXPECT_LT(idle_time, version_->idle_time_);
490
491 // Dispatching a message event resets the idle time.
492 std::vector<TransferredMessagePort> ports;
493 SetUpDummyMessagePort(&ports);
494 status = SERVICE_WORKER_ERROR_FAILED;
495 version_->idle_time_ -= kOneSecond;
496 idle_time = version_->idle_time_;
497 version_->DispatchMessageEvent(base::string16(), ports,
498 CreateReceiverOnCurrentThread(&status));
499 base::RunLoop().RunUntilIdle();
500 MessagePortService::GetInstance()->Destroy(ports[0].id);
501
502 EXPECT_EQ(SERVICE_WORKER_OK, status);
503 EXPECT_LT(idle_time, version_->idle_time_);
481 } 504 }
482 505
483 TEST_F(ServiceWorkerVersionTest, SetDevToolsAttached) { 506 TEST_F(ServiceWorkerVersionTest, SetDevToolsAttached) {
484 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 507 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
485 version_->StartWorker(CreateReceiverOnCurrentThread(&status)); 508 version_->StartWorker(CreateReceiverOnCurrentThread(&status));
486 509
487 ASSERT_EQ(ServiceWorkerVersion::STARTING, version_->running_status()); 510 ASSERT_EQ(ServiceWorkerVersion::STARTING, version_->running_status());
488 511
489 ASSERT_TRUE(version_->timeout_timer_.IsRunning()); 512 ASSERT_TRUE(version_->timeout_timer_.IsRunning());
490 ASSERT_FALSE(version_->start_time_.is_null()); 513 ASSERT_FALSE(version_->start_time_.is_null());
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 base::TimeTicks::Now() - 614 base::TimeTicks::Now() -
592 base::TimeDelta::FromMinutes( 615 base::TimeDelta::FromMinutes(
593 ServiceWorkerVersion::kStartWorkerTimeoutMinutes + 1); 616 ServiceWorkerVersion::kStartWorkerTimeoutMinutes + 1);
594 version_->timeout_timer_.user_task().Run(); 617 version_->timeout_timer_.user_task().Run();
595 base::RunLoop().RunUntilIdle(); 618 base::RunLoop().RunUntilIdle();
596 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); 619 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status);
597 EXPECT_EQ(ServiceWorkerVersion::STOPPED, version_->running_status()); 620 EXPECT_EQ(ServiceWorkerVersion::STOPPED, version_->running_status());
598 } 621 }
599 622
600 } // namespace content 623 } // 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