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

Unified Diff: chrome/browser/safe_browsing/two_phase_uploader.cc

Issue 2851083002: Bind TwoPhaseUploader to a sequence, not a thread.
Patch Set: Created 3 years, 8 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
« no previous file with comments | « chrome/browser/safe_browsing/two_phase_uploader.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/safe_browsing/two_phase_uploader.cc
diff --git a/chrome/browser/safe_browsing/two_phase_uploader.cc b/chrome/browser/safe_browsing/two_phase_uploader.cc
index 07fd70a4ee80cf56aaa1087634a8b4b146c7b195..d5652ff8d6e73ebfbcf1e69e05bb487ca01bcfcc 100644
--- a/chrome/browser/safe_browsing/two_phase_uploader.cc
+++ b/chrome/browser/safe_browsing/two_phase_uploader.cc
@@ -11,9 +11,9 @@
#include "base/bind.h"
#include "base/macros.h"
#include "base/memory/ptr_util.h"
+#include "base/sequence_checker.h"
#include "base/task_runner.h"
#include "components/data_use_measurement/core/data_use_user_data.h"
-#include "content/public/browser/browser_thread.h"
#include "net/base/net_errors.h"
#include "net/http/http_response_headers.h"
#include "net/url_request/url_fetcher.h"
@@ -42,7 +42,7 @@ class TwoPhaseUploaderImpl : public net::URLFetcherDelegate,
const ProgressCallback& progress_callback,
const FinishCallback& finish_callback,
const net::NetworkTrafficAnnotationTag& traffic_annotation);
- ~TwoPhaseUploaderImpl() override;
+ ~TwoPhaseUploaderImpl() override = default;
// Begins the upload process.
void Start() override;
@@ -71,6 +71,10 @@ class TwoPhaseUploaderImpl : public net::URLFetcherDelegate,
std::unique_ptr<net::URLFetcher> url_fetcher_;
+ // Ensure access to the state_ variable is sequenced, and that callbacks are
+ // invoked on the same sequence as Start.
+ base::SequenceChecker sequence_checker_;
+
DISALLOW_COPY_AND_ASSIGN(TwoPhaseUploaderImpl);
};
@@ -92,22 +96,22 @@ TwoPhaseUploaderImpl::TwoPhaseUploaderImpl(
progress_callback_(progress_callback),
finish_callback_(finish_callback),
traffic_annotation_(traffic_annotation) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-}
-
-TwoPhaseUploaderImpl::~TwoPhaseUploaderImpl() {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ // The callbacks must be invoked on the same sequence as Start, but that
+ // doesn't need to be the same sequence the TwoPhaseUploaderImpl was
+ // constructed on.
+ sequence_checker_.DetachFromSequence();
}
void TwoPhaseUploaderImpl::Start() {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ // Bind the sequence checker to the current sequence.
+ DCHECK(sequence_checker_.CalledOnValidSequence());
DCHECK_EQ(STATE_NONE, state_);
UploadMetadata();
}
void TwoPhaseUploaderImpl::OnURLFetchComplete(const net::URLFetcher* source) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK(sequence_checker_.CalledOnValidSequence());
net::URLRequestStatus status = source->GetStatus();
int response_code = source->GetResponseCode();
@@ -163,7 +167,7 @@ void TwoPhaseUploaderImpl::OnURLFetchUploadProgress(
const net::URLFetcher* source,
int64_t current,
int64_t total) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK(sequence_checker_.CalledOnValidSequence());
DVLOG(3) << __func__ << " " << source->GetURL().spec() << " " << current
<< "/" << total;
if (state_ == UPLOAD_FILE && !progress_callback_.is_null())
@@ -171,7 +175,7 @@ void TwoPhaseUploaderImpl::OnURLFetchUploadProgress(
}
void TwoPhaseUploaderImpl::UploadMetadata() {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK(sequence_checker_.CalledOnValidSequence());
state_ = UPLOAD_METADATA;
url_fetcher_ = net::URLFetcher::Create(base_url_, net::URLFetcher::POST, this,
traffic_annotation_);
@@ -185,7 +189,7 @@ void TwoPhaseUploaderImpl::UploadMetadata() {
}
void TwoPhaseUploaderImpl::UploadFile() {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK(sequence_checker_.CalledOnValidSequence());
state_ = UPLOAD_FILE;
url_fetcher_ = net::URLFetcher::Create(upload_url_, net::URLFetcher::PUT,
@@ -202,7 +206,7 @@ void TwoPhaseUploaderImpl::UploadFile() {
void TwoPhaseUploaderImpl::Finish(int net_error,
int response_code,
const std::string& response) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK(sequence_checker_.CalledOnValidSequence());
finish_callback_.Run(state_, net_error, response_code, response);
}
« no previous file with comments | « chrome/browser/safe_browsing/two_phase_uploader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698