Index: components/safe_browsing_db/v4_update_protocol_manager_unittest.cc |
diff --git a/components/safe_browsing_db/v4_update_protocol_manager_unittest.cc b/components/safe_browsing_db/v4_update_protocol_manager_unittest.cc |
index faf6dad0db2b0f84168f2c7510f2b802c415c2dc..5eeeab9d3c3e8e2c46a14fc615ffa02a85db5494 100644 |
--- a/components/safe_browsing_db/v4_update_protocol_manager_unittest.cc |
+++ b/components/safe_browsing_db/v4_update_protocol_manager_unittest.cc |
@@ -164,8 +164,6 @@ TEST_F(V4UpdateProtocolManagerTest, TestGetUpdatesErrorHandlingNetwork) { |
EXPECT_FALSE(pm->IsUpdateScheduled()); |
- runner->RunPendingTasks(); |
- |
net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
DCHECK(fetcher); |
// Failed request status should result in error. |
@@ -198,8 +196,6 @@ TEST_F(V4UpdateProtocolManagerTest, TestGetUpdatesErrorHandlingResponseCode) { |
EXPECT_FALSE(pm->IsUpdateScheduled()); |
- runner->RunPendingTasks(); |
- |
net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
DCHECK(fetcher); |
fetcher->set_status(net::URLRequestStatus()); |
@@ -234,8 +230,6 @@ TEST_F(V4UpdateProtocolManagerTest, TestGetUpdatesNoError) { |
EXPECT_FALSE(pm->IsUpdateScheduled()); |
Nathan Parker
2016/11/08 23:39:29
I'm not clear on why you need to remove these RunP
vakh (use Gerrit instead)
2016/11/09 00:08:51
IssueUpdateRequest queues a network request right
|
- runner->RunPendingTasks(); |
- |
net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
DCHECK(fetcher); |
fetcher->set_status(net::URLRequestStatus()); |
@@ -269,8 +263,6 @@ TEST_F(V4UpdateProtocolManagerTest, TestGetUpdatesWithOneBackoff) { |
EXPECT_FALSE(pm->IsUpdateScheduled()); |
- runner->RunPendingTasks(); |
- |
net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
DCHECK(fetcher); |
fetcher->set_status(net::URLRequestStatus()); |
@@ -286,6 +278,7 @@ TEST_F(V4UpdateProtocolManagerTest, TestGetUpdatesWithOneBackoff) { |
// Retry, now no backoff. |
expect_callback_to_be_called_ = true; |
+ // Call RunPendingTasks to ensure that the request is sent after backoff. |
runner->RunPendingTasks(); |
fetcher = factory.GetFetcherByID(1); |
@@ -340,4 +333,42 @@ TEST_F(V4UpdateProtocolManagerTest, TestDisableAutoUpdates) { |
DCHECK(!fetcher); |
} |
+TEST_F(V4UpdateProtocolManagerTest, TestGetUpdatesHasTimeout) { |
+ scoped_refptr<base::TestSimpleTaskRunner> runner( |
+ new base::TestSimpleTaskRunner()); |
+ base::ThreadTaskRunnerHandle runner_handler(runner); |
+ net::TestURLFetcherFactory factory; |
+ std::vector<ListUpdateResponse> expected_lurs; |
+ SetupExpectedListUpdateResponse(&expected_lurs); |
+ std::unique_ptr<V4UpdateProtocolManager> pm( |
+ CreateProtocolManager(expected_lurs)); |
+ runner->ClearPendingTasks(); |
+ |
+ // Initial state. No errors. |
+ EXPECT_EQ(0ul, pm->update_error_count_); |
+ EXPECT_EQ(1ul, pm->update_back_off_mult_); |
+ expect_callback_to_be_called_ = true; |
+ pm->store_state_map_ = std::move(store_state_map_); |
+ pm->IssueUpdateRequest(); |
+ |
+ net::TestURLFetcher* timeout_fetcher = factory.GetFetcherByID(0); |
+ DCHECK(timeout_fetcher); |
+ // Don't set anything on the fetcher. Let it time out. |
+ runner->RunPendingTasks(); |
+ // Now wait for the next request to be scheduled. |
Nathan Parker
2016/11/08 23:39:29
Is there some state you can test between these to
vakh (use Gerrit instead)
2016/11/09 00:08:51
Done. Not much else to test.
|
+ runner->RunPendingTasks(); |
+ |
+ // There should be another fetcher now. |
+ net::TestURLFetcher* fetcher = factory.GetFetcherByID(1); |
+ DCHECK(fetcher); |
+ fetcher->set_status(net::URLRequestStatus()); |
+ fetcher->set_response_code(net::HTTP_OK); |
+ fetcher->SetResponseString(GetExpectedV4UpdateResponse(expected_lurs)); |
+ fetcher->delegate()->OnURLFetchComplete(fetcher); |
+ |
+ // No error, back off multiplier is unchanged. |
+ EXPECT_EQ(0ul, pm->update_error_count_); |
+ EXPECT_EQ(1ul, pm->update_back_off_mult_); |
+} |
+ |
} // namespace safe_browsing |