Commit 0c37f576 authored by Kenichi Ishibashi's avatar Kenichi Ishibashi Committed by Commit Bot

Add DCHECKs to make sure ServiceWorkerRegistry runs on correct threads

This is a preparation for moving SpecialStoragePolicy out of
ServiceWorkerStorage.

We are planning to take an approach similar to crrev.com/c/1945940.
ServiceWorkerRegistry will own SpecialStoragePolicy and observe policy
changes. We will need to observe policy changes on the IO thread so we
will add a method to ServiceWorkerRegistry which runs on the IO thread.

For now, all methods in ServiceWorkerRegistry run on the core thread.
This CL adds DCHECKs to annotate the fact explicitly.

Bug: 1055677
Change-Id: I767296f045a6d3d454c25cdaf18587073a111209
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2087320Reviewed-by: default avatarMakoto Shimazu <shimazu@chromium.org>
Commit-Queue: Kenichi Ishibashi <bashi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#747134}
parent 99405d96
...@@ -86,6 +86,7 @@ ServiceWorkerRegistry::ServiceWorkerRegistry( ...@@ -86,6 +86,7 @@ ServiceWorkerRegistry::ServiceWorkerRegistry(
std::move(database_task_runner), std::move(database_task_runner),
quota_manager_proxy, quota_manager_proxy,
special_storage_policy)) { special_storage_policy)) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
DCHECK(context_); DCHECK(context_);
} }
...@@ -94,6 +95,7 @@ ServiceWorkerRegistry::ServiceWorkerRegistry( ...@@ -94,6 +95,7 @@ ServiceWorkerRegistry::ServiceWorkerRegistry(
ServiceWorkerRegistry* old_registry) ServiceWorkerRegistry* old_registry)
: context_(context), : context_(context),
storage_(ServiceWorkerStorage::Create(old_registry->storage())) { storage_(ServiceWorkerStorage::Create(old_registry->storage())) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
DCHECK(context_); DCHECK(context_);
} }
...@@ -102,6 +104,7 @@ ServiceWorkerRegistry::~ServiceWorkerRegistry() = default; ...@@ -102,6 +104,7 @@ ServiceWorkerRegistry::~ServiceWorkerRegistry() = default;
void ServiceWorkerRegistry::CreateNewRegistration( void ServiceWorkerRegistry::CreateNewRegistration(
blink::mojom::ServiceWorkerRegistrationOptions options, blink::mojom::ServiceWorkerRegistrationOptions options,
NewRegistrationCallback callback) { NewRegistrationCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
storage()->GetNewRegistrationId(base::BindOnce( storage()->GetNewRegistrationId(base::BindOnce(
&ServiceWorkerRegistry::DidGetNewRegistrationId, &ServiceWorkerRegistry::DidGetNewRegistrationId,
weak_factory_.GetWeakPtr(), std::move(options), std::move(callback))); weak_factory_.GetWeakPtr(), std::move(options), std::move(callback)));
...@@ -112,6 +115,7 @@ void ServiceWorkerRegistry::CreateNewVersion( ...@@ -112,6 +115,7 @@ void ServiceWorkerRegistry::CreateNewVersion(
const GURL& script_url, const GURL& script_url,
blink::mojom::ScriptType script_type, blink::mojom::ScriptType script_type,
NewVersionCallback callback) { NewVersionCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
DCHECK(registration); DCHECK(registration);
storage()->GetNewVersionId(base::BindOnce( storage()->GetNewVersionId(base::BindOnce(
&ServiceWorkerRegistry::DidGetNewVersionId, weak_factory_.GetWeakPtr(), &ServiceWorkerRegistry::DidGetNewVersionId, weak_factory_.GetWeakPtr(),
...@@ -121,6 +125,7 @@ void ServiceWorkerRegistry::CreateNewVersion( ...@@ -121,6 +125,7 @@ void ServiceWorkerRegistry::CreateNewVersion(
void ServiceWorkerRegistry::FindRegistrationForClientUrl( void ServiceWorkerRegistry::FindRegistrationForClientUrl(
const GURL& client_url, const GURL& client_url,
FindRegistrationCallback callback) { FindRegistrationCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
// To connect this TRACE_EVENT with the callback, Time::Now() is used as a // To connect this TRACE_EVENT with the callback, Time::Now() is used as a
// trace event id. // trace event id.
int64_t trace_event_id = int64_t trace_event_id =
...@@ -138,6 +143,7 @@ void ServiceWorkerRegistry::FindRegistrationForClientUrl( ...@@ -138,6 +143,7 @@ void ServiceWorkerRegistry::FindRegistrationForClientUrl(
void ServiceWorkerRegistry::FindRegistrationForScope( void ServiceWorkerRegistry::FindRegistrationForScope(
const GURL& scope, const GURL& scope,
FindRegistrationCallback callback) { FindRegistrationCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (is_storage_disabled_) { if (is_storage_disabled_) {
RunSoon( RunSoon(
FROM_HERE, FROM_HERE,
...@@ -164,6 +170,7 @@ void ServiceWorkerRegistry::FindRegistrationForId( ...@@ -164,6 +170,7 @@ void ServiceWorkerRegistry::FindRegistrationForId(
int64_t registration_id, int64_t registration_id,
const GURL& origin, const GURL& origin,
FindRegistrationCallback callback) { FindRegistrationCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
// Registration lookup is expected to abort when storage is disabled. // Registration lookup is expected to abort when storage is disabled.
if (is_storage_disabled_) { if (is_storage_disabled_) {
CompleteFindNow(nullptr, blink::ServiceWorkerStatusCode::kErrorAbort, CompleteFindNow(nullptr, blink::ServiceWorkerStatusCode::kErrorAbort,
...@@ -193,6 +200,7 @@ void ServiceWorkerRegistry::FindRegistrationForId( ...@@ -193,6 +200,7 @@ void ServiceWorkerRegistry::FindRegistrationForId(
void ServiceWorkerRegistry::FindRegistrationForIdOnly( void ServiceWorkerRegistry::FindRegistrationForIdOnly(
int64_t registration_id, int64_t registration_id,
FindRegistrationCallback callback) { FindRegistrationCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
// Registration lookup is expected to abort when storage is disabled. // Registration lookup is expected to abort when storage is disabled.
if (is_storage_disabled_) { if (is_storage_disabled_) {
CompleteFindNow(nullptr, blink::ServiceWorkerStatusCode::kErrorAbort, CompleteFindNow(nullptr, blink::ServiceWorkerStatusCode::kErrorAbort,
...@@ -222,6 +230,7 @@ void ServiceWorkerRegistry::FindRegistrationForIdOnly( ...@@ -222,6 +230,7 @@ void ServiceWorkerRegistry::FindRegistrationForIdOnly(
void ServiceWorkerRegistry::GetRegistrationsForOrigin( void ServiceWorkerRegistry::GetRegistrationsForOrigin(
const GURL& origin, const GURL& origin,
GetRegistrationsCallback callback) { GetRegistrationsCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
storage()->GetRegistrationsForOrigin( storage()->GetRegistrationsForOrigin(
origin, origin,
base::BindOnce(&ServiceWorkerRegistry::DidGetRegistrationsForOrigin, base::BindOnce(&ServiceWorkerRegistry::DidGetRegistrationsForOrigin,
...@@ -230,6 +239,7 @@ void ServiceWorkerRegistry::GetRegistrationsForOrigin( ...@@ -230,6 +239,7 @@ void ServiceWorkerRegistry::GetRegistrationsForOrigin(
void ServiceWorkerRegistry::GetAllRegistrationsInfos( void ServiceWorkerRegistry::GetAllRegistrationsInfos(
GetRegistrationsInfosCallback callback) { GetRegistrationsInfosCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
storage()->GetAllRegistrations( storage()->GetAllRegistrations(
base::BindOnce(&ServiceWorkerRegistry::DidGetAllRegistrations, base::BindOnce(&ServiceWorkerRegistry::DidGetAllRegistrations,
weak_factory_.GetWeakPtr(), std::move(callback))); weak_factory_.GetWeakPtr(), std::move(callback)));
...@@ -237,6 +247,7 @@ void ServiceWorkerRegistry::GetAllRegistrationsInfos( ...@@ -237,6 +247,7 @@ void ServiceWorkerRegistry::GetAllRegistrationsInfos(
ServiceWorkerRegistration* ServiceWorkerRegistry::GetUninstallingRegistration( ServiceWorkerRegistration* ServiceWorkerRegistry::GetUninstallingRegistration(
const GURL& scope) { const GURL& scope) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
// TODO(bashi): Should we check state of ServiceWorkerStorage? // TODO(bashi): Should we check state of ServiceWorkerStorage?
for (const auto& registration : uninstalling_registrations_) { for (const auto& registration : uninstalling_registrations_) {
if (registration.second->scope() == scope) { if (registration.second->scope() == scope) {
...@@ -250,6 +261,7 @@ ServiceWorkerRegistration* ServiceWorkerRegistry::GetUninstallingRegistration( ...@@ -250,6 +261,7 @@ ServiceWorkerRegistration* ServiceWorkerRegistry::GetUninstallingRegistration(
std::vector<scoped_refptr<ServiceWorkerRegistration>> std::vector<scoped_refptr<ServiceWorkerRegistration>>
ServiceWorkerRegistry::GetUninstallingRegistrationsForOrigin( ServiceWorkerRegistry::GetUninstallingRegistrationsForOrigin(
const GURL& origin) { const GURL& origin) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
std::vector<scoped_refptr<ServiceWorkerRegistration>> results; std::vector<scoped_refptr<ServiceWorkerRegistration>> results;
for (const auto& registration : uninstalling_registrations_) { for (const auto& registration : uninstalling_registrations_) {
if (registration.second->scope().GetOrigin() == origin) { if (registration.second->scope().GetOrigin() == origin) {
...@@ -263,6 +275,7 @@ void ServiceWorkerRegistry::StoreRegistration( ...@@ -263,6 +275,7 @@ void ServiceWorkerRegistry::StoreRegistration(
ServiceWorkerRegistration* registration, ServiceWorkerRegistration* registration,
ServiceWorkerVersion* version, ServiceWorkerVersion* version,
StatusCallback callback) { StatusCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
DCHECK(registration); DCHECK(registration);
DCHECK(version); DCHECK(version);
...@@ -329,6 +342,7 @@ void ServiceWorkerRegistry::DeleteRegistration( ...@@ -329,6 +342,7 @@ void ServiceWorkerRegistry::DeleteRegistration(
scoped_refptr<ServiceWorkerRegistration> registration, scoped_refptr<ServiceWorkerRegistration> registration,
const GURL& origin, const GURL& origin,
StatusCallback callback) { StatusCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (is_storage_disabled_) { if (is_storage_disabled_) {
RunSoon(FROM_HERE, RunSoon(FROM_HERE,
base::BindOnce(std::move(callback), base::BindOnce(std::move(callback),
...@@ -352,6 +366,7 @@ void ServiceWorkerRegistry::DeleteRegistration( ...@@ -352,6 +366,7 @@ void ServiceWorkerRegistry::DeleteRegistration(
void ServiceWorkerRegistry::NotifyInstallingRegistration( void ServiceWorkerRegistry::NotifyInstallingRegistration(
ServiceWorkerRegistration* registration) { ServiceWorkerRegistration* registration) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
DCHECK(installing_registrations_.find(registration->id()) == DCHECK(installing_registrations_.find(registration->id()) ==
installing_registrations_.end()); installing_registrations_.end());
installing_registrations_[registration->id()] = registration; installing_registrations_[registration->id()] = registration;
...@@ -361,6 +376,7 @@ void ServiceWorkerRegistry::NotifyDoneInstallingRegistration( ...@@ -361,6 +376,7 @@ void ServiceWorkerRegistry::NotifyDoneInstallingRegistration(
ServiceWorkerRegistration* registration, ServiceWorkerRegistration* registration,
ServiceWorkerVersion* version, ServiceWorkerVersion* version,
blink::ServiceWorkerStatusCode status) { blink::ServiceWorkerStatusCode status) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
installing_registrations_.erase(registration->id()); installing_registrations_.erase(registration->id());
if (status != blink::ServiceWorkerStatusCode::kOk && version) { if (status != blink::ServiceWorkerStatusCode::kOk && version) {
ResourceList resources; ResourceList resources;
...@@ -376,6 +392,7 @@ void ServiceWorkerRegistry::NotifyDoneInstallingRegistration( ...@@ -376,6 +392,7 @@ void ServiceWorkerRegistry::NotifyDoneInstallingRegistration(
void ServiceWorkerRegistry::NotifyDoneUninstallingRegistration( void ServiceWorkerRegistry::NotifyDoneUninstallingRegistration(
ServiceWorkerRegistration* registration, ServiceWorkerRegistration* registration,
ServiceWorkerRegistration::Status new_status) { ServiceWorkerRegistration::Status new_status) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
registration->SetStatus(new_status); registration->SetStatus(new_status);
uninstalling_registrations_.erase(registration->id()); uninstalling_registrations_.erase(registration->id());
} }
...@@ -383,6 +400,7 @@ void ServiceWorkerRegistry::NotifyDoneUninstallingRegistration( ...@@ -383,6 +400,7 @@ void ServiceWorkerRegistry::NotifyDoneUninstallingRegistration(
void ServiceWorkerRegistry::UpdateToActiveState(int64_t registration_id, void ServiceWorkerRegistry::UpdateToActiveState(int64_t registration_id,
const GURL& origin, const GURL& origin,
StatusCallback callback) { StatusCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
storage()->UpdateToActiveState( storage()->UpdateToActiveState(
registration_id, origin, registration_id, origin,
base::BindOnce(&ServiceWorkerRegistry::DidUpdateToActiveState, base::BindOnce(&ServiceWorkerRegistry::DidUpdateToActiveState,
...@@ -394,6 +412,7 @@ void ServiceWorkerRegistry::UpdateLastUpdateCheckTime( ...@@ -394,6 +412,7 @@ void ServiceWorkerRegistry::UpdateLastUpdateCheckTime(
const GURL& origin, const GURL& origin,
base::Time last_update_check_time, base::Time last_update_check_time,
StatusCallback callback) { StatusCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
storage()->UpdateLastUpdateCheckTime( storage()->UpdateLastUpdateCheckTime(
registration_id, origin, last_update_check_time, registration_id, origin, last_update_check_time,
CreateDatabaseStatusCallback(std::move(callback))); CreateDatabaseStatusCallback(std::move(callback)));
...@@ -404,6 +423,7 @@ void ServiceWorkerRegistry::UpdateNavigationPreloadEnabled( ...@@ -404,6 +423,7 @@ void ServiceWorkerRegistry::UpdateNavigationPreloadEnabled(
const GURL& origin, const GURL& origin,
bool enable, bool enable,
StatusCallback callback) { StatusCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
storage()->UpdateNavigationPreloadEnabled( storage()->UpdateNavigationPreloadEnabled(
registration_id, origin, enable, registration_id, origin, enable,
CreateDatabaseStatusCallback(std::move(callback))); CreateDatabaseStatusCallback(std::move(callback)));
...@@ -414,6 +434,7 @@ void ServiceWorkerRegistry::UpdateNavigationPreloadHeader( ...@@ -414,6 +434,7 @@ void ServiceWorkerRegistry::UpdateNavigationPreloadHeader(
const GURL& origin, const GURL& origin,
const std::string& value, const std::string& value,
StatusCallback callback) { StatusCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
storage()->UpdateNavigationPreloadHeader( storage()->UpdateNavigationPreloadHeader(
registration_id, origin, value, registration_id, origin, value,
CreateDatabaseStatusCallback(std::move(callback))); CreateDatabaseStatusCallback(std::move(callback)));
...@@ -421,6 +442,7 @@ void ServiceWorkerRegistry::UpdateNavigationPreloadHeader( ...@@ -421,6 +442,7 @@ void ServiceWorkerRegistry::UpdateNavigationPreloadHeader(
void ServiceWorkerRegistry::StoreUncommittedResourceId(int64_t resource_id, void ServiceWorkerRegistry::StoreUncommittedResourceId(int64_t resource_id,
const GURL& origin) { const GURL& origin) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
storage()->StoreUncommittedResourceId( storage()->StoreUncommittedResourceId(
resource_id, origin, resource_id, origin,
base::BindOnce(&ServiceWorkerRegistry::DidWriteUncommittedResourceIds, base::BindOnce(&ServiceWorkerRegistry::DidWriteUncommittedResourceIds,
...@@ -428,11 +450,13 @@ void ServiceWorkerRegistry::StoreUncommittedResourceId(int64_t resource_id, ...@@ -428,11 +450,13 @@ void ServiceWorkerRegistry::StoreUncommittedResourceId(int64_t resource_id,
} }
void ServiceWorkerRegistry::DoomUncommittedResource(int64_t resource_id) { void ServiceWorkerRegistry::DoomUncommittedResource(int64_t resource_id) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
DoomUncommittedResources(std::set<int64_t>(&resource_id, &resource_id + 1)); DoomUncommittedResources(std::set<int64_t>(&resource_id, &resource_id + 1));
} }
void ServiceWorkerRegistry::DoomUncommittedResources( void ServiceWorkerRegistry::DoomUncommittedResources(
const std::set<int64_t>& resource_ids) { const std::set<int64_t>& resource_ids) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
storage()->DoomUncommittedResources( storage()->DoomUncommittedResources(
resource_ids, resource_ids,
base::BindOnce(&ServiceWorkerRegistry::DidDoomUncommittedResourceIds, base::BindOnce(&ServiceWorkerRegistry::DidDoomUncommittedResourceIds,
...@@ -442,6 +466,7 @@ void ServiceWorkerRegistry::DoomUncommittedResources( ...@@ -442,6 +466,7 @@ void ServiceWorkerRegistry::DoomUncommittedResources(
void ServiceWorkerRegistry::GetUserData(int64_t registration_id, void ServiceWorkerRegistry::GetUserData(int64_t registration_id,
const std::vector<std::string>& keys, const std::vector<std::string>& keys,
GetUserDataCallback callback) { GetUserDataCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId || if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId ||
keys.empty()) { keys.empty()) {
RunSoon(FROM_HERE, RunSoon(FROM_HERE,
...@@ -468,6 +493,7 @@ void ServiceWorkerRegistry::GetUserDataByKeyPrefix( ...@@ -468,6 +493,7 @@ void ServiceWorkerRegistry::GetUserDataByKeyPrefix(
int64_t registration_id, int64_t registration_id,
const std::string& key_prefix, const std::string& key_prefix,
GetUserDataCallback callback) { GetUserDataCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId || if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId ||
key_prefix.empty()) { key_prefix.empty()) {
RunSoon(FROM_HERE, RunSoon(FROM_HERE,
...@@ -486,6 +512,7 @@ void ServiceWorkerRegistry::GetUserKeysAndDataByKeyPrefix( ...@@ -486,6 +512,7 @@ void ServiceWorkerRegistry::GetUserKeysAndDataByKeyPrefix(
int64_t registration_id, int64_t registration_id,
const std::string& key_prefix, const std::string& key_prefix,
GetUserKeysAndDataCallback callback) { GetUserKeysAndDataCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId || if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId ||
key_prefix.empty()) { key_prefix.empty()) {
RunSoon(FROM_HERE, RunSoon(FROM_HERE,
...@@ -506,6 +533,7 @@ void ServiceWorkerRegistry::StoreUserData( ...@@ -506,6 +533,7 @@ void ServiceWorkerRegistry::StoreUserData(
const GURL& origin, const GURL& origin,
const std::vector<std::pair<std::string, std::string>>& key_value_pairs, const std::vector<std::pair<std::string, std::string>>& key_value_pairs,
StatusCallback callback) { StatusCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId || if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId ||
key_value_pairs.empty()) { key_value_pairs.empty()) {
RunSoon(FROM_HERE, RunSoon(FROM_HERE,
...@@ -531,6 +559,7 @@ void ServiceWorkerRegistry::StoreUserData( ...@@ -531,6 +559,7 @@ void ServiceWorkerRegistry::StoreUserData(
void ServiceWorkerRegistry::ClearUserData(int64_t registration_id, void ServiceWorkerRegistry::ClearUserData(int64_t registration_id,
const std::vector<std::string>& keys, const std::vector<std::string>& keys,
StatusCallback callback) { StatusCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId || if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId ||
keys.empty()) { keys.empty()) {
RunSoon(FROM_HERE, RunSoon(FROM_HERE,
...@@ -557,6 +586,7 @@ void ServiceWorkerRegistry::ClearUserDataByKeyPrefixes( ...@@ -557,6 +586,7 @@ void ServiceWorkerRegistry::ClearUserDataByKeyPrefixes(
int64_t registration_id, int64_t registration_id,
const std::vector<std::string>& key_prefixes, const std::vector<std::string>& key_prefixes,
StatusCallback callback) { StatusCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId || if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId ||
key_prefixes.empty()) { key_prefixes.empty()) {
RunSoon(FROM_HERE, RunSoon(FROM_HERE,
...@@ -582,6 +612,7 @@ void ServiceWorkerRegistry::ClearUserDataByKeyPrefixes( ...@@ -582,6 +612,7 @@ void ServiceWorkerRegistry::ClearUserDataByKeyPrefixes(
void ServiceWorkerRegistry::ClearUserDataForAllRegistrationsByKeyPrefix( void ServiceWorkerRegistry::ClearUserDataForAllRegistrationsByKeyPrefix(
const std::string& key_prefix, const std::string& key_prefix,
StatusCallback callback) { StatusCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (key_prefix.empty()) { if (key_prefix.empty()) {
RunSoon(FROM_HERE, RunSoon(FROM_HERE,
base::BindOnce(std::move(callback), base::BindOnce(std::move(callback),
...@@ -598,6 +629,7 @@ void ServiceWorkerRegistry::ClearUserDataForAllRegistrationsByKeyPrefix( ...@@ -598,6 +629,7 @@ void ServiceWorkerRegistry::ClearUserDataForAllRegistrationsByKeyPrefix(
void ServiceWorkerRegistry::GetUserDataForAllRegistrations( void ServiceWorkerRegistry::GetUserDataForAllRegistrations(
const std::string& key, const std::string& key,
GetUserDataForAllRegistrationsCallback callback) { GetUserDataForAllRegistrationsCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (key.empty()) { if (key.empty()) {
RunSoon(FROM_HERE, RunSoon(FROM_HERE,
base::BindOnce(std::move(callback), base::BindOnce(std::move(callback),
...@@ -615,6 +647,7 @@ void ServiceWorkerRegistry::GetUserDataForAllRegistrations( ...@@ -615,6 +647,7 @@ void ServiceWorkerRegistry::GetUserDataForAllRegistrations(
void ServiceWorkerRegistry::GetUserDataForAllRegistrationsByKeyPrefix( void ServiceWorkerRegistry::GetUserDataForAllRegistrationsByKeyPrefix(
const std::string& key_prefix, const std::string& key_prefix,
GetUserDataForAllRegistrationsCallback callback) { GetUserDataForAllRegistrationsCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (key_prefix.empty()) { if (key_prefix.empty()) {
RunSoon(FROM_HERE, RunSoon(FROM_HERE,
base::BindOnce(std::move(callback), base::BindOnce(std::move(callback),
...@@ -649,6 +682,7 @@ void ServiceWorkerRegistry::DisableDeleteAndStartOverForTesting() { ...@@ -649,6 +682,7 @@ void ServiceWorkerRegistry::DisableDeleteAndStartOverForTesting() {
ServiceWorkerRegistration* ServiceWorkerRegistration*
ServiceWorkerRegistry::FindInstallingRegistrationForClientUrl( ServiceWorkerRegistry::FindInstallingRegistrationForClientUrl(
const GURL& client_url) { const GURL& client_url) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
DCHECK(!client_url.has_ref()); DCHECK(!client_url.has_ref());
LongestScopeMatcher matcher(client_url); LongestScopeMatcher matcher(client_url);
...@@ -664,6 +698,7 @@ ServiceWorkerRegistry::FindInstallingRegistrationForClientUrl( ...@@ -664,6 +698,7 @@ ServiceWorkerRegistry::FindInstallingRegistrationForClientUrl(
ServiceWorkerRegistration* ServiceWorkerRegistration*
ServiceWorkerRegistry::FindInstallingRegistrationForScope(const GURL& scope) { ServiceWorkerRegistry::FindInstallingRegistrationForScope(const GURL& scope) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
for (const auto& registration : installing_registrations_) for (const auto& registration : installing_registrations_)
if (registration.second->scope() == scope) if (registration.second->scope() == scope)
return registration.second.get(); return registration.second.get();
...@@ -673,6 +708,7 @@ ServiceWorkerRegistry::FindInstallingRegistrationForScope(const GURL& scope) { ...@@ -673,6 +708,7 @@ ServiceWorkerRegistry::FindInstallingRegistrationForScope(const GURL& scope) {
ServiceWorkerRegistration* ServiceWorkerRegistration*
ServiceWorkerRegistry::FindInstallingRegistrationForId( ServiceWorkerRegistry::FindInstallingRegistrationForId(
int64_t registration_id) { int64_t registration_id) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
RegistrationRefsById::const_iterator found = RegistrationRefsById::const_iterator found =
installing_registrations_.find(registration_id); installing_registrations_.find(registration_id);
if (found == installing_registrations_.end()) if (found == installing_registrations_.end())
...@@ -684,6 +720,7 @@ scoped_refptr<ServiceWorkerRegistration> ...@@ -684,6 +720,7 @@ scoped_refptr<ServiceWorkerRegistration>
ServiceWorkerRegistry::GetOrCreateRegistration( ServiceWorkerRegistry::GetOrCreateRegistration(
const storage::mojom::ServiceWorkerRegistrationData& data, const storage::mojom::ServiceWorkerRegistrationData& data,
const ResourceList& resources) { const ResourceList& resources) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
scoped_refptr<ServiceWorkerRegistration> registration = scoped_refptr<ServiceWorkerRegistration> registration =
context_->GetLiveRegistration(data.registration_id); context_->GetLiveRegistration(data.registration_id);
if (registration) if (registration)
...@@ -737,6 +774,7 @@ ServiceWorkerRegistry::GetOrCreateRegistration( ...@@ -737,6 +774,7 @@ ServiceWorkerRegistry::GetOrCreateRegistration(
base::Optional<scoped_refptr<ServiceWorkerRegistration>> base::Optional<scoped_refptr<ServiceWorkerRegistration>>
ServiceWorkerRegistry::FindFromLiveRegistrationsForId(int64_t registration_id) { ServiceWorkerRegistry::FindFromLiveRegistrationsForId(int64_t registration_id) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
scoped_refptr<ServiceWorkerRegistration> registration = scoped_refptr<ServiceWorkerRegistration> registration =
context_->GetLiveRegistration(registration_id); context_->GetLiveRegistration(registration_id);
if (registration) { if (registration) {
...@@ -762,6 +800,7 @@ void ServiceWorkerRegistry::DidFindRegistrationForClientUrl( ...@@ -762,6 +800,7 @@ void ServiceWorkerRegistry::DidFindRegistrationForClientUrl(
storage::mojom::ServiceWorkerRegistrationDataPtr data, storage::mojom::ServiceWorkerRegistrationDataPtr data,
std::unique_ptr<ResourceList> resources, std::unique_ptr<ResourceList> resources,
storage::mojom::ServiceWorkerDatabaseStatus database_status) { storage::mojom::ServiceWorkerDatabaseStatus database_status) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (database_status != storage::mojom::ServiceWorkerDatabaseStatus::kOk && if (database_status != storage::mojom::ServiceWorkerDatabaseStatus::kOk &&
database_status != database_status !=
storage::mojom::ServiceWorkerDatabaseStatus::kErrorNotFound) { storage::mojom::ServiceWorkerDatabaseStatus::kErrorNotFound) {
...@@ -811,6 +850,7 @@ void ServiceWorkerRegistry::DidFindRegistrationForScope( ...@@ -811,6 +850,7 @@ void ServiceWorkerRegistry::DidFindRegistrationForScope(
storage::mojom::ServiceWorkerRegistrationDataPtr data, storage::mojom::ServiceWorkerRegistrationDataPtr data,
std::unique_ptr<ResourceList> resources, std::unique_ptr<ResourceList> resources,
storage::mojom::ServiceWorkerDatabaseStatus database_status) { storage::mojom::ServiceWorkerDatabaseStatus database_status) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (database_status != storage::mojom::ServiceWorkerDatabaseStatus::kOk && if (database_status != storage::mojom::ServiceWorkerDatabaseStatus::kOk &&
database_status != database_status !=
storage::mojom::ServiceWorkerDatabaseStatus::kErrorNotFound) { storage::mojom::ServiceWorkerDatabaseStatus::kErrorNotFound) {
...@@ -836,6 +876,7 @@ void ServiceWorkerRegistry::DidFindRegistrationForId( ...@@ -836,6 +876,7 @@ void ServiceWorkerRegistry::DidFindRegistrationForId(
storage::mojom::ServiceWorkerRegistrationDataPtr data, storage::mojom::ServiceWorkerRegistrationDataPtr data,
std::unique_ptr<ResourceList> resources, std::unique_ptr<ResourceList> resources,
storage::mojom::ServiceWorkerDatabaseStatus database_status) { storage::mojom::ServiceWorkerDatabaseStatus database_status) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (database_status != storage::mojom::ServiceWorkerDatabaseStatus::kOk && if (database_status != storage::mojom::ServiceWorkerDatabaseStatus::kOk &&
database_status != database_status !=
storage::mojom::ServiceWorkerDatabaseStatus::kErrorNotFound) { storage::mojom::ServiceWorkerDatabaseStatus::kErrorNotFound) {
...@@ -872,6 +913,7 @@ void ServiceWorkerRegistry::DidGetRegistrationsForOrigin( ...@@ -872,6 +913,7 @@ void ServiceWorkerRegistry::DidGetRegistrationsForOrigin(
storage::mojom::ServiceWorkerDatabaseStatus database_status, storage::mojom::ServiceWorkerDatabaseStatus database_status,
std::unique_ptr<RegistrationList> registration_data_list, std::unique_ptr<RegistrationList> registration_data_list,
std::unique_ptr<std::vector<ResourceList>> resources_list) { std::unique_ptr<std::vector<ResourceList>> resources_list) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
DCHECK(origin_filter.is_valid()); DCHECK(origin_filter.is_valid());
blink::ServiceWorkerStatusCode status = blink::ServiceWorkerStatusCode status =
...@@ -914,6 +956,7 @@ void ServiceWorkerRegistry::DidGetAllRegistrations( ...@@ -914,6 +956,7 @@ void ServiceWorkerRegistry::DidGetAllRegistrations(
GetRegistrationsInfosCallback callback, GetRegistrationsInfosCallback callback,
storage::mojom::ServiceWorkerDatabaseStatus database_status, storage::mojom::ServiceWorkerDatabaseStatus database_status,
std::unique_ptr<RegistrationList> registration_data_list) { std::unique_ptr<RegistrationList> registration_data_list) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
blink::ServiceWorkerStatusCode status = blink::ServiceWorkerStatusCode status =
DatabaseStatusToStatusCode(database_status); DatabaseStatusToStatusCode(database_status);
...@@ -1013,6 +1056,7 @@ void ServiceWorkerRegistry::DidStoreRegistration( ...@@ -1013,6 +1056,7 @@ void ServiceWorkerRegistry::DidStoreRegistration(
storage::mojom::ServiceWorkerDatabaseStatus database_status, storage::mojom::ServiceWorkerDatabaseStatus database_status,
int64_t deleted_version_id, int64_t deleted_version_id,
const std::vector<int64_t>& newly_purgeable_resources) { const std::vector<int64_t>& newly_purgeable_resources) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
blink::ServiceWorkerStatusCode status = blink::ServiceWorkerStatusCode status =
DatabaseStatusToStatusCode(database_status); DatabaseStatusToStatusCode(database_status);
...@@ -1056,6 +1100,7 @@ void ServiceWorkerRegistry::DidDeleteRegistration( ...@@ -1056,6 +1100,7 @@ void ServiceWorkerRegistry::DidDeleteRegistration(
storage::mojom::ServiceWorkerDatabaseStatus database_status, storage::mojom::ServiceWorkerDatabaseStatus database_status,
int64_t deleted_version_id, int64_t deleted_version_id,
const std::vector<int64_t>& newly_purgeable_resources) { const std::vector<int64_t>& newly_purgeable_resources) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
blink::ServiceWorkerStatusCode status = blink::ServiceWorkerStatusCode status =
DatabaseStatusToStatusCode(database_status); DatabaseStatusToStatusCode(database_status);
...@@ -1118,6 +1163,7 @@ void ServiceWorkerRegistry::DidGetUserKeysAndData( ...@@ -1118,6 +1163,7 @@ void ServiceWorkerRegistry::DidGetUserKeysAndData(
GetUserKeysAndDataCallback callback, GetUserKeysAndDataCallback callback,
const base::flat_map<std::string, std::string>& data_map, const base::flat_map<std::string, std::string>& data_map,
storage::mojom::ServiceWorkerDatabaseStatus status) { storage::mojom::ServiceWorkerDatabaseStatus status) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (status != storage::mojom::ServiceWorkerDatabaseStatus::kOk && if (status != storage::mojom::ServiceWorkerDatabaseStatus::kOk &&
status != storage::mojom::ServiceWorkerDatabaseStatus::kErrorNotFound) { status != storage::mojom::ServiceWorkerDatabaseStatus::kErrorNotFound) {
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
...@@ -1128,6 +1174,7 @@ void ServiceWorkerRegistry::DidGetUserKeysAndData( ...@@ -1128,6 +1174,7 @@ void ServiceWorkerRegistry::DidGetUserKeysAndData(
void ServiceWorkerRegistry::DidStoreUserData( void ServiceWorkerRegistry::DidStoreUserData(
StatusCallback callback, StatusCallback callback,
storage::mojom::ServiceWorkerDatabaseStatus status) { storage::mojom::ServiceWorkerDatabaseStatus status) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
// |status| can be NOT_FOUND when the associated registration did not exist in // |status| can be NOT_FOUND when the associated registration did not exist in
// the database. In the case, we don't have to schedule the corruption // the database. In the case, we don't have to schedule the corruption
// recovery. // recovery.
...@@ -1141,6 +1188,7 @@ void ServiceWorkerRegistry::DidStoreUserData( ...@@ -1141,6 +1188,7 @@ void ServiceWorkerRegistry::DidStoreUserData(
void ServiceWorkerRegistry::DidClearUserData( void ServiceWorkerRegistry::DidClearUserData(
StatusCallback callback, StatusCallback callback,
storage::mojom::ServiceWorkerDatabaseStatus status) { storage::mojom::ServiceWorkerDatabaseStatus status) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (status != storage::mojom::ServiceWorkerDatabaseStatus::kOk) if (status != storage::mojom::ServiceWorkerDatabaseStatus::kOk)
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
std::move(callback).Run(DatabaseStatusToStatusCode(status)); std::move(callback).Run(DatabaseStatusToStatusCode(status));
...@@ -1150,6 +1198,7 @@ void ServiceWorkerRegistry::DidGetUserDataForAllRegistrations( ...@@ -1150,6 +1198,7 @@ void ServiceWorkerRegistry::DidGetUserDataForAllRegistrations(
GetUserDataForAllRegistrationsCallback callback, GetUserDataForAllRegistrationsCallback callback,
const std::vector<std::pair<int64_t, std::string>>& user_data, const std::vector<std::pair<int64_t, std::string>>& user_data,
storage::mojom::ServiceWorkerDatabaseStatus status) { storage::mojom::ServiceWorkerDatabaseStatus status) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (status != storage::mojom::ServiceWorkerDatabaseStatus::kOk) if (status != storage::mojom::ServiceWorkerDatabaseStatus::kOk)
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
std::move(callback).Run(user_data, DatabaseStatusToStatusCode(status)); std::move(callback).Run(user_data, DatabaseStatusToStatusCode(status));
...@@ -1159,6 +1208,7 @@ void ServiceWorkerRegistry::DidGetNewRegistrationId( ...@@ -1159,6 +1208,7 @@ void ServiceWorkerRegistry::DidGetNewRegistrationId(
blink::mojom::ServiceWorkerRegistrationOptions options, blink::mojom::ServiceWorkerRegistrationOptions options,
NewRegistrationCallback callback, NewRegistrationCallback callback,
int64_t registration_id) { int64_t registration_id) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId) { if (registration_id == blink::mojom::kInvalidServiceWorkerRegistrationId) {
std::move(callback).Run(nullptr); std::move(callback).Run(nullptr);
return; return;
...@@ -1173,6 +1223,7 @@ void ServiceWorkerRegistry::DidGetNewVersionId( ...@@ -1173,6 +1223,7 @@ void ServiceWorkerRegistry::DidGetNewVersionId(
blink::mojom::ScriptType script_type, blink::mojom::ScriptType script_type,
NewVersionCallback callback, NewVersionCallback callback,
int64_t version_id) { int64_t version_id) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (version_id == blink::mojom::kInvalidServiceWorkerVersionId) { if (version_id == blink::mojom::kInvalidServiceWorkerVersionId) {
std::move(callback).Run(nullptr); std::move(callback).Run(nullptr);
return; return;
...@@ -1183,6 +1234,7 @@ void ServiceWorkerRegistry::DidGetNewVersionId( ...@@ -1183,6 +1234,7 @@ void ServiceWorkerRegistry::DidGetNewVersionId(
} }
void ServiceWorkerRegistry::ScheduleDeleteAndStartOver() { void ServiceWorkerRegistry::ScheduleDeleteAndStartOver() {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (!should_schedule_delete_and_start_over_) { if (!should_schedule_delete_and_start_over_) {
// Recovery process has already been scheduled. // Recovery process has already been scheduled.
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment