Index: components/domain_reliability/uploader_unittest.cc |
diff --git a/components/domain_reliability/uploader_unittest.cc b/components/domain_reliability/uploader_unittest.cc |
index 4aeb6ddc024ff3c280fb617614f901cc7c39c5d6..0b99fc0655df8652868801a508cd2c30c8515e5b 100644 |
--- a/components/domain_reliability/uploader_unittest.cc |
+++ b/components/domain_reliability/uploader_unittest.cc |
@@ -91,7 +91,7 @@ class UploadMockURLRequestJob : public net::URLRequestJob { |
if (result_.net_error == net::OK) |
NotifyHeadersComplete(); |
- else |
+ else if (result_.net_error != net::ERR_IO_PENDING) |
NotifyStartError(net::URLRequestStatus::FromError(result_.net_error)); |
} |
@@ -111,7 +111,7 @@ class UploadMockURLRequestJob : public net::URLRequestJob { |
class UploadInterceptor : public net::URLRequestInterceptor { |
public: |
- UploadInterceptor() : last_upload_depth_(-1) {} |
+ UploadInterceptor() : request_count_(0), last_upload_depth_(-1) {} |
~UploadInterceptor() override { |
EXPECT_TRUE(results_.empty()); |
@@ -127,6 +127,8 @@ class UploadInterceptor : public net::URLRequestInterceptor { |
last_upload_depth_ = |
DomainReliabilityUploader::GetURLRequestUploadDepth(*request); |
+ ++request_count_; |
+ |
return new UploadMockURLRequestJob(request, delegate, result); |
} |
@@ -155,10 +157,12 @@ class UploadInterceptor : public net::URLRequestInterceptor { |
results_.push_back(result); |
} |
+ int request_count() const { return request_count_; } |
int last_upload_depth() const { return last_upload_depth_; } |
private: |
mutable std::list<MockUploadResult> results_; |
+ mutable int request_count_; |
mutable int last_upload_depth_; |
}; |
@@ -204,6 +208,10 @@ class DomainReliabilityUploaderTest : public testing::Test { |
DomainReliabilityUploader* uploader() const { return uploader_.get(); } |
UploadInterceptor* interceptor() const { return interceptor_; } |
+ scoped_refptr<net::TestURLRequestContextGetter> |
+ url_request_context_getter() { |
+ return url_request_context_getter_; |
+ } |
private: |
base::MessageLoopForIO message_loop_; |
@@ -214,6 +222,7 @@ class DomainReliabilityUploaderTest : public testing::Test { |
}; |
TEST_F(DomainReliabilityUploaderTest, Null) { |
+ uploader()->Shutdown(); |
} |
TEST_F(DomainReliabilityUploaderTest, SuccessfulUpload) { |
@@ -224,6 +233,8 @@ TEST_F(DomainReliabilityUploaderTest, SuccessfulUpload) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, c.called_count()); |
EXPECT_TRUE(c.last_result().is_success()); |
+ |
+ uploader()->Shutdown(); |
} |
TEST_F(DomainReliabilityUploaderTest, NetworkErrorUpload) { |
@@ -234,6 +245,8 @@ TEST_F(DomainReliabilityUploaderTest, NetworkErrorUpload) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, c.called_count()); |
EXPECT_TRUE(c.last_result().is_failure()); |
+ |
+ uploader()->Shutdown(); |
} |
TEST_F(DomainReliabilityUploaderTest, ServerErrorUpload) { |
@@ -244,6 +257,8 @@ TEST_F(DomainReliabilityUploaderTest, ServerErrorUpload) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, c.called_count()); |
EXPECT_TRUE(c.last_result().is_failure()); |
+ |
+ uploader()->Shutdown(); |
} |
TEST_F(DomainReliabilityUploaderTest, RetryAfterUpload) { |
@@ -256,6 +271,8 @@ TEST_F(DomainReliabilityUploaderTest, RetryAfterUpload) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, c.called_count()); |
EXPECT_TRUE(c.last_result().is_retry_after()); |
+ |
+ uploader()->Shutdown(); |
} |
TEST_F(DomainReliabilityUploaderTest, UploadDepth1) { |
@@ -267,6 +284,8 @@ TEST_F(DomainReliabilityUploaderTest, UploadDepth1) { |
EXPECT_EQ(1u, c.called_count()); |
EXPECT_EQ(1, interceptor()->last_upload_depth()); |
+ |
+ uploader()->Shutdown(); |
} |
TEST_F(DomainReliabilityUploaderTest, UploadDepth2) { |
@@ -278,6 +297,34 @@ TEST_F(DomainReliabilityUploaderTest, UploadDepth2) { |
EXPECT_EQ(1u, c.called_count()); |
EXPECT_EQ(2, interceptor()->last_upload_depth()); |
+ |
+ uploader()->Shutdown(); |
+} |
+ |
+TEST_F(DomainReliabilityUploaderTest, UploadCanceledAtShutdown) { |
+ interceptor()->ExpectRequestAndReturnError(net::ERR_IO_PENDING); |
+ |
+ TestUploadCallback c; |
+ uploader()->UploadReport("{}", 1, GURL(kUploadURL), c.callback()); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(1, interceptor()->request_count()); |
+ EXPECT_EQ(0u, c.called_count()); |
+ |
+ uploader()->Shutdown(); |
+ |
+ EXPECT_EQ(0u, c.called_count()); |
+ |
+ url_request_context_getter()->GetURLRequestContext()->AssertNoURLRequests(); |
+} |
+ |
+TEST_F(DomainReliabilityUploaderTest, NoUploadAfterShutdown) { |
+ uploader()->Shutdown(); |
+ |
+ TestUploadCallback c; |
+ uploader()->UploadReport("{}", 1, GURL(kUploadURL), c.callback()); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(1u, c.called_count()); |
+ EXPECT_EQ(0, interceptor()->request_count()); |
} |
} // namespace |