Index: content/browser/service_worker/service_worker_version_unittest.cc |
diff --git a/content/browser/service_worker/service_worker_version_unittest.cc b/content/browser/service_worker/service_worker_version_unittest.cc |
index 8ec9bca7ebc974d5da1d5031793983b183565cd9..ec3d900a7bd14b6abb9a7de9c4f806c2a0643abe 100644 |
--- a/content/browser/service_worker/service_worker_version_unittest.cc |
+++ b/content/browser/service_worker/service_worker_version_unittest.cc |
@@ -4,6 +4,7 @@ |
#include "base/basictypes.h" |
#include "base/run_loop.h" |
+#include "content/browser/message_port_service.h" |
#include "content/browser/service_worker/embedded_worker_registry.h" |
#include "content/browser/service_worker/embedded_worker_test_helper.h" |
#include "content/browser/service_worker/service_worker_context_core.h" |
@@ -117,6 +118,14 @@ class MessageReceiverFromWorker : public EmbeddedWorkerInstance::Listener { |
DISALLOW_COPY_AND_ASSIGN(MessageReceiverFromWorker); |
}; |
+void SetUpDummyMessagePort(std::vector<TransferredMessagePort>* ports) { |
+ int port_id = -1; |
+ 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.
|
+ TransferredMessagePort dummy_port; |
+ dummy_port.id = port_id; |
+ ports->push_back(dummy_port); |
+} |
+ |
} // namespace |
class ServiceWorkerVersionTest : public testing::Test { |
@@ -478,6 +487,20 @@ TEST_F(ServiceWorkerVersionTest, IdleTimeout) { |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_LT(idle_time, version_->idle_time_); |
+ |
+ // Dispatching a message event resets the idle time. |
+ std::vector<TransferredMessagePort> ports; |
+ SetUpDummyMessagePort(&ports); |
+ status = SERVICE_WORKER_ERROR_FAILED; |
+ version_->idle_time_ -= kOneSecond; |
+ idle_time = version_->idle_time_; |
+ version_->DispatchMessageEvent(base::string16(), ports, |
+ CreateReceiverOnCurrentThread(&status)); |
+ base::RunLoop().RunUntilIdle(); |
+ MessagePortService::GetInstance()->Destroy(ports[0].id); |
+ |
+ EXPECT_EQ(SERVICE_WORKER_OK, status); |
+ EXPECT_LT(idle_time, version_->idle_time_); |
} |
TEST_F(ServiceWorkerVersionTest, SetDevToolsAttached) { |