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 ce376603d3a503b4c1989924272363a94d2fdcd5..e0ba2029d42314d04b36ce6f1c68f0ed9248d360 100644 |
--- a/content/browser/service_worker/service_worker_version_unittest.cc |
+++ b/content/browser/service_worker/service_worker_version_unittest.cc |
@@ -11,6 +11,7 @@ |
#include "base/memory/ptr_util.h" |
#include "base/run_loop.h" |
#include "base/test/histogram_tester.h" |
+#include "base/time/time.h" |
#include "content/browser/service_worker/embedded_worker_registry.h" |
#include "content/browser/service_worker/embedded_worker_status.h" |
#include "content/browser/service_worker/embedded_worker_test_helper.h" |
@@ -39,9 +40,10 @@ IPC_MESSAGE_ROUTED1(TestMsg_MessageFromWorker, int) |
IPC_MESSAGE_CONTROL1(TestMsg_TestEvent, int) |
IPC_MESSAGE_CONTROL2(TestMsg_TestEvent_Multiple, int, int) |
IPC_MESSAGE_ROUTED2(TestMsg_TestEventResult, int, std::string) |
-IPC_MESSAGE_ROUTED2(TestMsg_TestSimpleEventResult, |
+IPC_MESSAGE_ROUTED3(TestMsg_TestSimpleEventResult, |
int, |
- blink::WebServiceWorkerEventResult) |
+ blink::WebServiceWorkerEventResult, |
+ base::Time) |
IPC_ENUM_TRAITS_MAX_VALUE(blink::WebServiceWorkerEventResult, |
blink::WebServiceWorkerEventResultLast) |
@@ -88,9 +90,10 @@ class MessageReceiver : public EmbeddedWorkerTestHelper { |
void SimulateSendSimpleEventResult(int embedded_worker_id, |
int request_id, |
- blink::WebServiceWorkerEventResult reply) { |
- SimulateSend(new TestMsg_TestSimpleEventResult(embedded_worker_id, |
- request_id, reply)); |
+ blink::WebServiceWorkerEventResult reply, |
+ base::Time dispatch_event_time) { |
+ SimulateSend(new TestMsg_TestSimpleEventResult( |
+ embedded_worker_id, request_id, reply, dispatch_event_time)); |
} |
private: |
@@ -270,7 +273,8 @@ class ServiceWorkerVersionTest : public testing::Test { |
base::RunLoop().RunUntilIdle(); |
// And finish request, as if a response to the event was received. |
- EXPECT_TRUE(version_->FinishRequest(request_id, true)); |
+ EXPECT_TRUE(version_->FinishRequest(request_id, true /* was_handled */, |
+ base::Time::Now())); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_ERROR_MAX_VALUE, status); |
} |
@@ -652,7 +656,8 @@ TEST_F(ServiceWorkerVersionTest, IdleTimeout) { |
int request_id = |
version_->StartRequest(ServiceWorkerMetrics::EventType::SYNC, |
CreateReceiverOnCurrentThread(&status)); |
- EXPECT_TRUE(version_->FinishRequest(request_id, true)); |
+ EXPECT_TRUE(version_->FinishRequest(request_id, true /* was_handled */, |
+ base::Time::Now())); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_LT(idle_time, version_->idle_time_); |
@@ -834,7 +839,8 @@ TEST_F(ServiceWorkerVersionTest, RequestTimeout) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); |
EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); |
- EXPECT_FALSE(version_->FinishRequest(request_id, true)); |
+ EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */, |
+ base::Time::Now())); |
} |
TEST_F(ServiceWorkerVersionTest, RequestCustomizedTimeout) { |
@@ -857,7 +863,8 @@ TEST_F(ServiceWorkerVersionTest, RequestCustomizedTimeout) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); |
- EXPECT_FALSE(version_->FinishRequest(request_id, true)); |
+ EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */, |
+ base::Time::Now())); |
// CONTINUE_ON_TIMEOUT timeouts don't stop the service worker. |
EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); |
@@ -883,7 +890,8 @@ TEST_F(ServiceWorkerVersionTest, RequestCustomizedTimeoutKill) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); |
- EXPECT_FALSE(version_->FinishRequest(request_id, true)); |
+ EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */, |
+ base::Time::Now())); |
// KILL_ON_TIMEOUT timeouts should stop the service worker. |
EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); |
@@ -923,7 +931,8 @@ TEST_F(ServiceWorkerVersionTest, MixedRequestTimeouts) { |
EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); |
// Gracefully handle the sync event finishing after the timeout. |
- EXPECT_FALSE(version_->FinishRequest(sync_request_id, true)); |
+ EXPECT_FALSE(version_->FinishRequest(sync_request_id, true /* was_handled */, |
+ base::Time::Now())); |
// Verify that the fetch times out later. |
version_->SetAllRequestExpirations(base::TimeTicks::Now()); |
@@ -932,7 +941,8 @@ TEST_F(ServiceWorkerVersionTest, MixedRequestTimeouts) { |
EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, fetch_status); |
// Fetch request should no longer exist. |
- EXPECT_FALSE(version_->FinishRequest(fetch_request_id, true)); |
+ EXPECT_FALSE(version_->FinishRequest(fetch_request_id, true /* was_handled */, |
+ base::Time::Now())); |
// Other timeouts do stop the service worker. |
EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); |
@@ -1174,7 +1184,8 @@ TEST_F(ServiceWorkerVersionTest, RendererCrashDuringEvent) { |
EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); |
// Request already failed, calling finsh should return false. |
- EXPECT_FALSE(version_->FinishRequest(request_id, true)); |
+ EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */, |
+ base::Time::Now())); |
} |
TEST_F(ServiceWorkerVersionWithMojoTest, MojoService) { |
@@ -1199,7 +1210,8 @@ TEST_F(ServiceWorkerVersionWithMojoTest, MojoService) { |
// Mojo service does exist in worker, so error callback should not have been |
// called and FinishRequest should return true. |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
- EXPECT_TRUE(version_->FinishRequest(request_id, true)); |
+ EXPECT_TRUE(version_->FinishRequest(request_id, true /* was_handled */, |
+ base::Time::Now())); |
} |
TEST_F(ServiceWorkerVersionTest, NonExistentMojoService) { |
@@ -1224,7 +1236,8 @@ TEST_F(ServiceWorkerVersionTest, NonExistentMojoService) { |
// Mojo service doesn't exist in worker, so error callback should have been |
// called and FinishRequest should return false. |
EXPECT_EQ(SERVICE_WORKER_ERROR_FAILED, status); |
- EXPECT_FALSE(version_->FinishRequest(request_id, true)); |
+ EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */, |
+ base::Time::Now())); |
} |
TEST_F(ServiceWorkerVersionTest, DispatchEvent) { |
@@ -1269,7 +1282,8 @@ TEST_F(ServiceWorkerVersionTest, DispatchEvent) { |
// Should not have timed out, so error callback should not have been |
// called and FinishRequest should return true. |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
- EXPECT_TRUE(version_->FinishRequest(request_id, true)); |
+ EXPECT_TRUE(version_->FinishRequest(request_id, true /* was_handled */, |
+ base::Time::Now())); |
} |
TEST_F(ServiceWorkerFailToStartTest, FailingWorkerUsesNewRendererProcess) { |
@@ -1415,7 +1429,8 @@ TEST_F(ServiceWorkerVersionTest, DispatchConcurrentEvent) { |
EXPECT_EQ(request_id2, received_request_id2); |
EXPECT_EQ(reply2, received_data2); |
EXPECT_EQ(SERVICE_WORKER_OK, status2); |
- EXPECT_TRUE(version_->FinishRequest(request_id2, true)); |
+ EXPECT_TRUE(version_->FinishRequest(request_id2, true /* was_handled */, |
+ base::Time::Now())); |
// Reply to first event. |
std::string reply1("hello world"); |
@@ -1428,7 +1443,8 @@ TEST_F(ServiceWorkerVersionTest, DispatchConcurrentEvent) { |
EXPECT_EQ(request_id2, received_request_id2); |
EXPECT_EQ(reply1, received_data1); |
EXPECT_EQ(SERVICE_WORKER_OK, status1); |
- EXPECT_TRUE(version_->FinishRequest(request_id1, true)); |
+ EXPECT_TRUE(version_->FinishRequest(request_id1, true /* was_handled */, |
+ base::Time::Now())); |
} |
TEST_F(ServiceWorkerVersionTest, DispatchSimpleEvent_Completed) { |
@@ -1461,7 +1477,7 @@ TEST_F(ServiceWorkerVersionTest, DispatchSimpleEvent_Completed) { |
// Simulate sending reply to event. |
helper_->SimulateSendSimpleEventResult( |
version_->embedded_worker()->embedded_worker_id(), request_id, |
- blink::WebServiceWorkerEventResultCompleted); |
+ blink::WebServiceWorkerEventResultCompleted, base::Time::Now()); |
runner->Run(); |
// Verify callback was called with correct status. |
@@ -1498,7 +1514,7 @@ TEST_F(ServiceWorkerVersionTest, DispatchSimpleEvent_Rejected) { |
// Simulate sending reply to event. |
helper_->SimulateSendSimpleEventResult( |
version_->embedded_worker()->embedded_worker_id(), request_id, |
- blink::WebServiceWorkerEventResultRejected); |
+ blink::WebServiceWorkerEventResultRejected, base::Time::Now()); |
runner->Run(); |
// Verify callback was called with correct status. |
@@ -1568,8 +1584,10 @@ TEST_F(ServiceWorkerVersionTest, DispatchEvent_MultipleResponse) { |
// Should not have timed out, so error callback should not have been |
// called and FinishRequest should return true. |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
- EXPECT_TRUE(version_->FinishRequest(request_id1, true)); |
- EXPECT_TRUE(version_->FinishRequest(request_id2, true)); |
+ EXPECT_TRUE(version_->FinishRequest(request_id1, true /* was_handled */, |
+ base::Time::Now())); |
+ EXPECT_TRUE(version_->FinishRequest(request_id2, true /* was_handled */, |
+ base::Time::Now())); |
} |
class ServiceWorkerNavigationHintUMATest : public ServiceWorkerVersionTest { |