Index: chrome/browser/safe_browsing/certificate_reporting_service_test_utils.cc |
diff --git a/chrome/browser/safe_browsing/certificate_reporting_service_test_utils.cc b/chrome/browser/safe_browsing/certificate_reporting_service_test_utils.cc |
index 780f8d50f2f40e8406a8bb8f7467fe7aa6270a85..ccffd4085d028680e706f5c8cda5c015db8391b5 100644 |
--- a/chrome/browser/safe_browsing/certificate_reporting_service_test_utils.cc |
+++ b/chrome/browser/safe_browsing/certificate_reporting_service_test_utils.cc |
@@ -159,12 +159,13 @@ void CertReportJobInterceptor::SetFailureMode( |
weak_factory_.GetWeakPtr(), expected_report_result)); |
} |
-void CertReportJobInterceptor::Resume() { |
+void CertReportJobInterceptor::Resume(const base::Callback<void()>& callback) { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
- content::BrowserThread::PostTask( |
+ content::BrowserThread::PostTaskAndReply( |
content::BrowserThread::IO, FROM_HERE, |
base::Bind(&CertReportJobInterceptor::ResumeOnIOThread, |
- base::Unretained(this))); |
+ base::Unretained(this)), |
+ callback); |
} |
const std::set<std::string>& CertReportJobInterceptor::successful_reports() |
@@ -190,6 +191,11 @@ void CertReportJobInterceptor::ClearObservedReports() { |
delayed_reports_.clear(); |
} |
+void CertReportJobInterceptor::WaitForReports(int num_reports) { |
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
+ wait_helper_.Wait(num_reports); |
+} |
+ |
void CertReportJobInterceptor::SetFailureModeOnIOThread( |
ReportSendingResult expected_report_result) { |
DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
@@ -218,33 +224,17 @@ void CertReportJobInterceptor::RequestCreated( |
delayed_reports_.insert(uploaded_report); |
break; |
} |
+ wait_helper_.OnEvent(); |
} |
-CertificateReportingServiceTestNetworkDelegate:: |
- CertificateReportingServiceTestNetworkDelegate( |
- const base::Callback<void()>& url_request_destroyed_callback) |
- : url_request_destroyed_callback_(url_request_destroyed_callback) {} |
- |
-CertificateReportingServiceTestNetworkDelegate:: |
- ~CertificateReportingServiceTestNetworkDelegate() {} |
- |
-void CertificateReportingServiceTestNetworkDelegate::OnURLRequestDestroyed( |
- net::URLRequest* request) { |
- DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
- content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, |
- url_request_destroyed_callback_); |
-} |
- |
-CertificateReportingServiceTestBase::ReportExpectation::ReportExpectation() {} |
+ReportExpectation::ReportExpectation() {} |
-CertificateReportingServiceTestBase::ReportExpectation::ReportExpectation( |
- const ReportExpectation& other) = default; |
+ReportExpectation::ReportExpectation(const ReportExpectation& other) = default; |
-CertificateReportingServiceTestBase::ReportExpectation::~ReportExpectation() {} |
+ReportExpectation::~ReportExpectation() {} |
// static |
-CertificateReportingServiceTestBase::ReportExpectation |
-CertificateReportingServiceTestBase::ReportExpectation::Successful( |
+ReportExpectation ReportExpectation::Successful( |
const std::set<std::string>& reports) { |
ReportExpectation expectation; |
expectation.successful_reports = reports; |
@@ -252,8 +242,7 @@ CertificateReportingServiceTestBase::ReportExpectation::Successful( |
} |
// static |
-CertificateReportingServiceTestBase::ReportExpectation |
-CertificateReportingServiceTestBase::ReportExpectation::Failed( |
+ReportExpectation ReportExpectation::Failed( |
const std::set<std::string>& reports) { |
ReportExpectation expectation; |
expectation.failed_reports = reports; |
@@ -261,124 +250,93 @@ CertificateReportingServiceTestBase::ReportExpectation::Failed( |
} |
// static |
-CertificateReportingServiceTestBase::ReportExpectation |
-CertificateReportingServiceTestBase::ReportExpectation::Delayed( |
+ReportExpectation ReportExpectation::Delayed( |
const std::set<std::string>& reports) { |
ReportExpectation expectation; |
expectation.delayed_reports = reports; |
return expectation; |
} |
-CertificateReportingServiceTestBase::CertificateReportingServiceTestBase() |
- : num_request_deletions_to_wait_for_(0), num_deleted_requests_(0) { |
+int ReportExpectation::num_reports() const { |
+ return successful_reports.size() + failed_reports.size() + |
+ delayed_reports.size(); |
+} |
+ |
+CertificateReportingServiceTestHelper::CertificateReportingServiceTestHelper() { |
memset(server_private_key_, 1, sizeof(server_private_key_)); |
crypto::curve25519::ScalarBaseMult(server_private_key_, server_public_key_); |
} |
-CertificateReportingServiceTestBase::~CertificateReportingServiceTestBase() {} |
+CertificateReportingServiceTestHelper:: |
+ ~CertificateReportingServiceTestHelper() {} |
-void CertificateReportingServiceTestBase::SetUpInterceptor() { |
+void CertificateReportingServiceTestHelper::SetUpInterceptor() { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
url_request_interceptor_ = |
new CertReportJobInterceptor(REPORTS_FAIL, server_private_key_); |
content::BrowserThread::PostTask( |
content::BrowserThread::IO, FROM_HERE, |
- base::Bind( |
- &CertificateReportingServiceTestBase::SetUpInterceptorOnIOThread, |
- base::Unretained(this), |
- base::Passed(std::unique_ptr<net::URLRequestInterceptor>( |
- url_request_interceptor_)))); |
-} |
- |
-void CertificateReportingServiceTestBase::TearDownInterceptor() { |
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
- content::BrowserThread::PostTask( |
- content::BrowserThread::IO, FROM_HERE, |
- base::Bind( |
- &CertificateReportingServiceTestBase::TearDownInterceptorOnIOThread, |
- base::Unretained(this))); |
+ base::Bind(&SetUpURLHandlersOnIOThread, |
+ base::Passed(std::unique_ptr<net::URLRequestInterceptor>( |
+ url_request_interceptor_)))); |
} |
// Changes the behavior of report uploads to fail or succeed. |
-void CertificateReportingServiceTestBase::SetFailureMode( |
+void CertificateReportingServiceTestHelper::SetFailureMode( |
ReportSendingResult expected_report_result) { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
url_request_interceptor_->SetFailureMode(expected_report_result); |
} |
-void CertificateReportingServiceTestBase::ResumeDelayedRequest() { |
+void CertificateReportingServiceTestHelper::ResumeDelayedRequest( |
+ const base::Callback<void()>& callback) { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
- url_request_interceptor_->Resume(); |
-} |
- |
-void CertificateReportingServiceTestBase::WaitForRequestsDestroyed( |
- const ReportExpectation& expectation) { |
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
- DCHECK(!run_loop_); |
- |
- const int num_request_deletions_to_wait_for = |
- expectation.successful_reports.size() + |
- expectation.failed_reports.size() + expectation.delayed_reports.size(); |
- |
- ASSERT_LE(num_deleted_requests_, num_request_deletions_to_wait_for) |
- << "Observed unexpected report"; |
- if (num_deleted_requests_ < num_request_deletions_to_wait_for) { |
- num_request_deletions_to_wait_for_ = num_request_deletions_to_wait_for; |
- run_loop_.reset(new base::RunLoop()); |
- run_loop_->Run(); |
- run_loop_.reset(nullptr); |
- EXPECT_EQ(0, num_deleted_requests_); |
- EXPECT_EQ(0, num_request_deletions_to_wait_for_); |
- } else if (num_deleted_requests_ == num_request_deletions_to_wait_for) { |
- num_deleted_requests_ = 0; |
- num_request_deletions_to_wait_for_ = 0; |
- } |
- EXPECT_EQ(expectation.successful_reports, |
- url_request_interceptor_->successful_reports()); |
- EXPECT_EQ(expectation.failed_reports, |
- url_request_interceptor_->failed_reports()); |
- EXPECT_EQ(expectation.delayed_reports, |
- url_request_interceptor_->delayed_reports()); |
- url_request_interceptor_->ClearObservedReports(); |
+ url_request_interceptor_->Resume(callback); |
} |
-uint8_t* CertificateReportingServiceTestBase::server_public_key() { |
+uint8_t* CertificateReportingServiceTestHelper::server_public_key() { |
return server_public_key_; |
} |
-uint32_t CertificateReportingServiceTestBase::server_public_key_version() |
+uint32_t CertificateReportingServiceTestHelper::server_public_key_version() |
const { |
return kServerPublicKeyTestVersion; |
} |
-net::NetworkDelegate* CertificateReportingServiceTestBase::network_delegate() { |
- return network_delegate_.get(); |
-} |
+ReportWaitHelper::ReportWaitHelper() |
+ : num_events_to_wait_for_(0), num_received_events_(0) {} |
+ReportWaitHelper::~ReportWaitHelper() {} |
-void CertificateReportingServiceTestBase::SetUpInterceptorOnIOThread( |
- std::unique_ptr<net::URLRequestInterceptor> url_request_interceptor) { |
- DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
- network_delegate_.reset(new CertificateReportingServiceTestNetworkDelegate( |
- base::Bind(&CertificateReportingServiceTestBase::OnURLRequestDestroyed, |
- base::Unretained(this)))); |
- SetUpURLHandlersOnIOThread(std::move(url_request_interceptor)); |
-} |
+void ReportWaitHelper::Wait(int num_events_to_wait_for) { |
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
+ DCHECK(!run_loop_); |
+ ASSERT_LE(num_received_events_, num_events_to_wait_for) |
+ << "Observed unexpected report"; |
-void CertificateReportingServiceTestBase::TearDownInterceptorOnIOThread() { |
- DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
- network_delegate_.reset(nullptr); |
+ if (num_received_events_ < num_events_to_wait_for) { |
+ num_events_to_wait_for_ = num_events_to_wait_for; |
+ run_loop_.reset(new base::RunLoop()); |
+ run_loop_->Run(); |
+ run_loop_.reset(nullptr); |
+ EXPECT_EQ(0, num_received_events_); |
+ EXPECT_EQ(0, num_events_to_wait_for_); |
+ } else if (num_received_events_ == num_events_to_wait_for) { |
+ num_received_events_ = 0; |
+ num_events_to_wait_for_ = 0; |
+ } |
} |
-void CertificateReportingServiceTestBase::OnURLRequestDestroyed() { |
+void ReportWaitHelper::OnEvent() { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
- num_deleted_requests_++; |
+ num_received_events_++; |
if (!run_loop_) { |
return; |
} |
- EXPECT_LE(num_deleted_requests_, num_request_deletions_to_wait_for_); |
- if (num_deleted_requests_ == num_request_deletions_to_wait_for_) { |
- num_request_deletions_to_wait_for_ = 0; |
- num_deleted_requests_ = 0; |
+ ASSERT_LE(num_received_events_, num_events_to_wait_for_) |
+ << "Observed unexpected report"; |
+ if (num_received_events_ == num_events_to_wait_for_) { |
+ num_events_to_wait_for_ = 0; |
+ num_received_events_ = 0; |
run_loop_->Quit(); |
} |
} |