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

Unified Diff: content/browser/background_fetch/background_fetch_data_manager.cc

Issue 2973233002: [Background Fetch] Cleanup/fix thread safety (Closed)
Patch Set: Remove n.b. from comments Created 3 years, 5 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: content/browser/background_fetch/background_fetch_data_manager.cc
diff --git a/content/browser/background_fetch/background_fetch_data_manager.cc b/content/browser/background_fetch/background_fetch_data_manager.cc
index 2fcb85e21e19ebd5937f96b55a6da7ec01e73cbb..52c5ae50b97d6c4709bc380eef5611aa7b66ed2b 100644
--- a/content/browser/background_fetch/background_fetch_data_manager.cc
+++ b/content/browser/background_fetch/background_fetch_data_manager.cc
@@ -122,7 +122,10 @@ class BackgroundFetchDataManager::RegistrationData {
BackgroundFetchDataManager::BackgroundFetchDataManager(
BrowserContext* browser_context)
: weak_ptr_factory_(this) {
+ // Constructed on the UI thread, then used on a different thread.
DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ DETACH_FROM_SEQUENCE(sequence_checker_);
+
DCHECK(browser_context);
// Store the blob storage context for the given |browser_context|.
@@ -131,13 +134,17 @@ BackgroundFetchDataManager::BackgroundFetchDataManager(
DCHECK(blob_storage_context_);
}
-BackgroundFetchDataManager::~BackgroundFetchDataManager() = default;
+BackgroundFetchDataManager::~BackgroundFetchDataManager() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+}
void BackgroundFetchDataManager::CreateRegistration(
const BackgroundFetchRegistrationId& registration_id,
const std::vector<ServiceWorkerFetchRequest>& requests,
const BackgroundFetchOptions& options,
CreateRegistrationCallback callback) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
if (registrations_.find(registration_id) != registrations_.end()) {
std::move(callback).Run(
blink::mojom::BackgroundFetchError::DUPLICATED_TAG,
@@ -170,6 +177,8 @@ void BackgroundFetchDataManager::MarkRequestAsStarted(
const BackgroundFetchRegistrationId& registration_id,
BackgroundFetchRequestInfo* request,
const std::string& download_guid) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
auto iter = registrations_.find(registration_id);
DCHECK(iter != registrations_.end());
@@ -181,6 +190,8 @@ void BackgroundFetchDataManager::MarkRequestAsCompleteAndGetNextRequest(
const BackgroundFetchRegistrationId& registration_id,
BackgroundFetchRequestInfo* request,
NextRequestCallback callback) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
auto iter = registrations_.find(registration_id);
DCHECK(iter != registrations_.end());
@@ -197,6 +208,8 @@ void BackgroundFetchDataManager::MarkRequestAsCompleteAndGetNextRequest(
void BackgroundFetchDataManager::GetSettledFetchesForRegistration(
const BackgroundFetchRegistrationId& registration_id,
SettledFetchesCallback callback) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
auto iter = registrations_.find(registration_id);
DCHECK(iter != registrations_.end());
@@ -235,6 +248,8 @@ void BackgroundFetchDataManager::GetSettledFetchesForRegistration(
if (request->GetFileSize() > 0) {
DCHECK(!request->GetFilePath().empty());
+ // CreateFileBackedBlob DCHECKs that it is called on the IO thread. This
+ // imposes a more specific requirement than our sequence_checker_.
std::unique_ptr<BlobHandle> blob_handle =
blob_storage_context_->CreateFileBackedBlob(
request->GetFilePath(), 0 /* offset */, request->GetFileSize(),
@@ -271,6 +286,8 @@ void BackgroundFetchDataManager::GetSettledFetchesForRegistration(
void BackgroundFetchDataManager::DeleteRegistration(
const BackgroundFetchRegistrationId& registration_id,
DeleteRegistrationCallback callback) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
auto iter = registrations_.find(registration_id);
if (iter == registrations_.end()) {
std::move(callback).Run(blink::mojom::BackgroundFetchError::INVALID_TAG);

Powered by Google App Engine
This is Rietveld 408576698