Commit fa0d2774 authored by Kenichi Ishibashi's avatar Kenichi Ishibashi Committed by Commit Bot

Add ServiceWorkerStorageControl::GetAllRegistrations()

This is a wrapper of ServiceWorkerStorage::GetAllRegistrations().

Bug: 1055677
Change-Id: I3c4155348c34f247b396d9312bb8b31ace7ffc42
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2319929Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarMakoto Shimazu <shimazu@chromium.org>
Commit-Queue: Kenichi Ishibashi <bashi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#792473}
parent c2888fa9
......@@ -139,6 +139,13 @@ interface ServiceWorkerStorageControl {
GetUsageForOrigin(url.mojom.Origin origin) =>
(ServiceWorkerDatabaseStatus status, int64 usage);
// Returns all stored registrations.
// NOTE: Don't use this method for new code. Reading all registrations
// from storage doesn't scale. See https://crbug.com/807440 for details.
GetAllRegistrationsDeprecated() =>
(ServiceWorkerDatabaseStatus status,
array<ServiceWorkerRegistrationData> registrations);
// Stores |registration_data| and |resources|.
StoreRegistration(ServiceWorkerRegistrationData registration,
array<ServiceWorkerResourceRecord> resources) =>
......
......@@ -306,7 +306,7 @@ void ServiceWorkerRegistry::GetStorageUsageForOrigin(
void ServiceWorkerRegistry::GetAllRegistrationsInfos(
GetRegistrationsInfosCallback callback) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
storage()->GetAllRegistrations(
GetRemoteStorageControl()->GetAllRegistrationsDeprecated(
base::BindOnce(&ServiceWorkerRegistry::DidGetAllRegistrations,
weak_factory_.GetWeakPtr(), std::move(callback)));
}
......@@ -1043,7 +1043,7 @@ void ServiceWorkerRegistry::DidGetRegistrationsForOrigin(
void ServiceWorkerRegistry::DidGetAllRegistrations(
GetRegistrationsInfosCallback callback,
storage::mojom::ServiceWorkerDatabaseStatus database_status,
std::unique_ptr<RegistrationList> registration_data_list) {
RegistrationList registration_data_list) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
blink::ServiceWorkerStatusCode status =
DatabaseStatusToStatusCode(database_status);
......@@ -1056,12 +1056,10 @@ void ServiceWorkerRegistry::DidGetAllRegistrations(
return;
}
DCHECK(registration_data_list);
// Add all stored registrations.
std::set<int64_t> pushed_registrations;
std::vector<ServiceWorkerRegistrationInfo> infos;
for (const auto& registration_data : *registration_data_list) {
for (const auto& registration_data : registration_data_list) {
const bool inserted =
pushed_registrations.insert(registration_data->registration_id).second;
DCHECK(inserted);
......
......@@ -296,7 +296,7 @@ class CONTENT_EXPORT ServiceWorkerRegistry {
void DidGetAllRegistrations(
GetRegistrationsInfosCallback callback,
storage::mojom::ServiceWorkerDatabaseStatus database_status,
std::unique_ptr<RegistrationList> registration_data_list);
RegistrationList registration_data_list);
void DidStoreRegistration(
int64_t stored_registration_id,
......
......@@ -55,6 +55,19 @@ void DidGetUserDataForAllRegistrations(
std::move(callback).Run(status, std::move(values));
}
void DidGetAllRegistrations(
ServiceWorkerStorageControlImpl::GetAllRegistrationsDeprecatedCallback
callback,
storage::mojom::ServiceWorkerDatabaseStatus status,
std::unique_ptr<ServiceWorkerStorage::RegistrationList> registrations) {
if (status != storage::mojom::ServiceWorkerDatabaseStatus::kOk) {
std::move(callback).Run(status, ServiceWorkerStorage::RegistrationList());
return;
}
DCHECK(registrations);
std::move(callback).Run(status, std::move(*registrations));
}
} // namespace
class ServiceWorkerLiveVersionRefImpl
......@@ -181,6 +194,12 @@ void ServiceWorkerStorageControlImpl::GetUsageForOrigin(
storage_->GetUsageForOrigin(origin, std::move(callback));
}
void ServiceWorkerStorageControlImpl::GetAllRegistrationsDeprecated(
GetAllRegistrationsDeprecatedCallback callback) {
storage_->GetAllRegistrations(
base::BindOnce(&DidGetAllRegistrations, std::move(callback)));
}
void ServiceWorkerStorageControlImpl::StoreRegistration(
storage::mojom::ServiceWorkerRegistrationDataPtr registration,
std::vector<storage::mojom::ServiceWorkerResourceRecordPtr> resources,
......
......@@ -64,6 +64,8 @@ class CONTENT_EXPORT ServiceWorkerStorageControlImpl
GetRegistrationsForOriginCallback callback) override;
void GetUsageForOrigin(const url::Origin& origin,
GetUsageForOriginCallback callback) override;
void GetAllRegistrationsDeprecated(
GetAllRegistrationsDeprecatedCallback calback) override;
void StoreRegistration(
storage::mojom::ServiceWorkerRegistrationDataPtr registration,
std::vector<storage::mojom::ServiceWorkerResourceRecordPtr> resources,
......
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