Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(229)

Unified Diff: components/domain_reliability/uploader.cc

Issue 2336043007: Domain Reliability: Don't crash on shutdown with uploads pending (Closed)
Patch Set: Shutdown uploader in unittest Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/domain_reliability/uploader.cc
diff --git a/components/domain_reliability/uploader.cc b/components/domain_reliability/uploader.cc
index a3fb91d4620f3d059ab29dfb9ef1a82b3bf4517c..e03dac68ddcda0969a01ba6dee30c440e74855c3 100644
--- a/components/domain_reliability/uploader.cc
+++ b/components/domain_reliability/uploader.cc
@@ -59,9 +59,12 @@ class DomainReliabilityUploaderImpl
net::URLRequestContextGetter>& url_request_context_getter)
: time_(time),
url_request_context_getter_(url_request_context_getter),
- discard_uploads_(true) {}
+ discard_uploads_(true),
+ shutdown_(false) {}
- ~DomainReliabilityUploaderImpl() override {}
+ ~DomainReliabilityUploaderImpl() override {
+ DCHECK(shutdown_);
+ }
// DomainReliabilityUploader implementation:
void UploadReport(
@@ -72,7 +75,7 @@ class DomainReliabilityUploaderImpl
VLOG(1) << "Uploading report to " << upload_url;
VLOG(2) << "Report JSON: " << report_json;
- if (discard_uploads_) {
+ if (discard_uploads_ || shutdown_) {
mmenke 2016/09/27 16:56:15 Test coverage for this?
VLOG(1) << "Discarding report instead of uploading.";
UploadResult result;
result.status = UploadResult::SUCCESS;
@@ -103,6 +106,12 @@ class DomainReliabilityUploaderImpl
VLOG(1) << "Setting discard_uploads to " << discard_uploads;
}
+ void Shutdown() override {
+ DCHECK(!shutdown_);
+ shutdown_ = true;
+ upload_callbacks_.clear();
+ }
+
// net::URLFetcherDelegate implementation:
void OnURLFetchComplete(const net::URLFetcher* fetcher) override {
DCHECK(fetcher);
@@ -153,6 +162,7 @@ class DomainReliabilityUploaderImpl
std::pair<std::unique_ptr<net::URLFetcher>, UploadCallback>>
upload_callbacks_;
bool discard_uploads_;
+ bool shutdown_;
};
} // namespace
@@ -179,4 +189,6 @@ int DomainReliabilityUploader::GetURLRequestUploadDepth(
return data->depth();
}
+void DomainReliabilityUploader::Shutdown() {}
+
} // namespace domain_reliability

Powered by Google App Engine
This is Rietveld 408576698