Commit 8a7d3b6a authored by Kenichi Ishibashi's avatar Kenichi Ishibashi Committed by Commit Bot

service worker: Convert ServiceWorkerDatabaseStatus to a mojo enum

This enum is going to be used as status code of operations
performed by the Storage Service. Convert it to a mojo enum so
that we can define mojo interfaces for service worker storage.

Bug: 1046335
Change-Id: Ie4cf45a5dc119cc6b9e454d31e680dce32084986
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2040790Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarVictor Costan <pwnall@chromium.org>
Commit-Queue: Kenichi Ishibashi <bashi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#739244}
parent cfbc93a8
...@@ -11,6 +11,7 @@ mojom("mojom") { ...@@ -11,6 +11,7 @@ mojom("mojom") {
"native_file_system_context.mojom", "native_file_system_context.mojom",
"origin_context.mojom", "origin_context.mojom",
"partition.mojom", "partition.mojom",
"service_worker_database.mojom",
"storage_service.mojom", "storage_service.mojom",
] ]
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module storage.mojom;
// Status code of service worker database operations.
// This is used in UMA. A new value must be appended only.
enum ServiceWorkerDatabaseStatus {
kOk = 0,
kErrorNotFound = 1,
kErrorIOError = 2,
kErrorCorrupted = 3,
kErrorFailed = 4,
kErrorNotSupported = 5,
kErrorDisabled = 6,
};
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "base/optional.h" #include "base/optional.h"
#include "base/sequence_checker.h" #include "base/sequence_checker.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "components/services/storage/public/mojom/service_worker_database.mojom.h"
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "services/network/public/mojom/cross_origin_embedder_policy.mojom.h" #include "services/network/public/mojom/cross_origin_embedder_policy.mojom.h"
#include "third_party/blink/public/mojom/service_worker/navigation_preload_state.mojom.h" #include "third_party/blink/public/mojom/service_worker/navigation_preload_state.mojom.h"
...@@ -52,19 +53,8 @@ class CONTENT_EXPORT ServiceWorkerDatabase { ...@@ -52,19 +53,8 @@ class CONTENT_EXPORT ServiceWorkerDatabase {
explicit ServiceWorkerDatabase(const base::FilePath& path); explicit ServiceWorkerDatabase(const base::FilePath& path);
~ServiceWorkerDatabase(); ~ServiceWorkerDatabase();
// Used in UMA. A new value must be appended only. using Status = storage::mojom::ServiceWorkerDatabaseStatus;
// TODO(bashi): Change this enum to a mojo enum and update corresponding
// UMAs. See //tools/metrics/histograms/README.md
enum Status {
STATUS_OK,
STATUS_ERROR_NOT_FOUND,
STATUS_ERROR_IO_ERROR,
STATUS_ERROR_CORRUPTED,
STATUS_ERROR_FAILED,
STATUS_ERROR_NOT_SUPPORTED,
STATUS_ERROR_DISABLED,
STATUS_ERROR_MAX,
};
static const char* StatusToString(Status status); static const char* StatusToString(Status status);
using FeatureToTokensMap = std::map<std::string /* feature_name */, using FeatureToTokensMap = std::map<std::string /* feature_name */,
......
...@@ -679,8 +679,8 @@ void ServiceWorkerRegistry::DidFindRegistrationForClientUrl( ...@@ -679,8 +679,8 @@ void ServiceWorkerRegistry::DidFindRegistrationForClientUrl(
std::unique_ptr<ServiceWorkerDatabase::RegistrationData> data, std::unique_ptr<ServiceWorkerDatabase::RegistrationData> data,
std::unique_ptr<ResourceList> resources, std::unique_ptr<ResourceList> resources,
ServiceWorkerDatabase::Status database_status) { ServiceWorkerDatabase::Status database_status) {
if (database_status != ServiceWorkerDatabase::STATUS_OK && if (database_status != ServiceWorkerDatabase::Status::kOk &&
database_status != ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) { database_status != ServiceWorkerDatabase::Status::kErrorNotFound) {
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
} }
...@@ -727,8 +727,8 @@ void ServiceWorkerRegistry::DidFindRegistrationForScope( ...@@ -727,8 +727,8 @@ void ServiceWorkerRegistry::DidFindRegistrationForScope(
std::unique_ptr<ServiceWorkerDatabase::RegistrationData> data, std::unique_ptr<ServiceWorkerDatabase::RegistrationData> data,
std::unique_ptr<ResourceList> resources, std::unique_ptr<ResourceList> resources,
ServiceWorkerDatabase::Status database_status) { ServiceWorkerDatabase::Status database_status) {
if (database_status != ServiceWorkerDatabase::STATUS_OK && if (database_status != ServiceWorkerDatabase::Status::kOk &&
database_status != ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) { database_status != ServiceWorkerDatabase::Status::kErrorNotFound) {
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
} }
...@@ -751,8 +751,8 @@ void ServiceWorkerRegistry::DidFindRegistrationForId( ...@@ -751,8 +751,8 @@ void ServiceWorkerRegistry::DidFindRegistrationForId(
std::unique_ptr<ServiceWorkerDatabase::RegistrationData> data, std::unique_ptr<ServiceWorkerDatabase::RegistrationData> data,
std::unique_ptr<ResourceList> resources, std::unique_ptr<ResourceList> resources,
ServiceWorkerDatabase::Status database_status) { ServiceWorkerDatabase::Status database_status) {
if (database_status != ServiceWorkerDatabase::STATUS_OK && if (database_status != ServiceWorkerDatabase::Status::kOk &&
database_status != ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) { database_status != ServiceWorkerDatabase::Status::kErrorNotFound) {
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
} }
...@@ -975,8 +975,8 @@ void ServiceWorkerRegistry::DidDeleteRegistration( ...@@ -975,8 +975,8 @@ void ServiceWorkerRegistry::DidDeleteRegistration(
void ServiceWorkerRegistry::DidUpdateToActiveState( void ServiceWorkerRegistry::DidUpdateToActiveState(
StatusCallback callback, StatusCallback callback,
ServiceWorkerDatabase::Status status) { ServiceWorkerDatabase::Status status) {
if (status != ServiceWorkerDatabase::STATUS_OK && if (status != ServiceWorkerDatabase::Status::kOk &&
status != ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) { status != ServiceWorkerDatabase::Status::kErrorNotFound) {
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
} }
std::move(callback).Run( std::move(callback).Run(
...@@ -985,14 +985,14 @@ void ServiceWorkerRegistry::DidUpdateToActiveState( ...@@ -985,14 +985,14 @@ void ServiceWorkerRegistry::DidUpdateToActiveState(
void ServiceWorkerRegistry::DidWriteUncommittedResourceIds( void ServiceWorkerRegistry::DidWriteUncommittedResourceIds(
ServiceWorkerDatabase::Status status) { ServiceWorkerDatabase::Status status) {
if (status != ServiceWorkerDatabase::STATUS_OK) if (status != ServiceWorkerDatabase::Status::kOk)
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
} }
void ServiceWorkerRegistry::DidDoomUncommittedResourceIds( void ServiceWorkerRegistry::DidDoomUncommittedResourceIds(
const std::set<int64_t>& resource_ids, const std::set<int64_t>& resource_ids,
ServiceWorkerDatabase::Status status) { ServiceWorkerDatabase::Status status) {
if (status != ServiceWorkerDatabase::STATUS_OK) { if (status != ServiceWorkerDatabase::Status::kOk) {
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
return; return;
} }
...@@ -1003,8 +1003,8 @@ void ServiceWorkerRegistry::DidGetUserData( ...@@ -1003,8 +1003,8 @@ void ServiceWorkerRegistry::DidGetUserData(
GetUserDataCallback callback, GetUserDataCallback callback,
const std::vector<std::string>& data, const std::vector<std::string>& data,
ServiceWorkerDatabase::Status status) { ServiceWorkerDatabase::Status status) {
if (status != ServiceWorkerDatabase::STATUS_OK && if (status != ServiceWorkerDatabase::Status::kOk &&
status != ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) { status != ServiceWorkerDatabase::Status::kErrorNotFound) {
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
} }
std::move(callback).Run( std::move(callback).Run(
...@@ -1015,8 +1015,8 @@ void ServiceWorkerRegistry::DidGetUserKeysAndData( ...@@ -1015,8 +1015,8 @@ 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,
ServiceWorkerDatabase::Status status) { ServiceWorkerDatabase::Status status) {
if (status != ServiceWorkerDatabase::STATUS_OK && if (status != ServiceWorkerDatabase::Status::kOk &&
status != ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) { status != ServiceWorkerDatabase::Status::kErrorNotFound) {
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
} }
std::move(callback).Run( std::move(callback).Run(
...@@ -1029,8 +1029,8 @@ void ServiceWorkerRegistry::DidStoreUserData( ...@@ -1029,8 +1029,8 @@ void ServiceWorkerRegistry::DidStoreUserData(
// |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.
if (status != ServiceWorkerDatabase::STATUS_OK && if (status != ServiceWorkerDatabase::Status::kOk &&
status != ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) { status != ServiceWorkerDatabase::Status::kErrorNotFound) {
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
} }
std::move(callback).Run( std::move(callback).Run(
...@@ -1040,7 +1040,7 @@ void ServiceWorkerRegistry::DidStoreUserData( ...@@ -1040,7 +1040,7 @@ void ServiceWorkerRegistry::DidStoreUserData(
void ServiceWorkerRegistry::DidClearUserData( void ServiceWorkerRegistry::DidClearUserData(
StatusCallback callback, StatusCallback callback,
ServiceWorkerDatabase::Status status) { ServiceWorkerDatabase::Status status) {
if (status != ServiceWorkerDatabase::STATUS_OK) if (status != ServiceWorkerDatabase::Status::kOk)
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
std::move(callback).Run( std::move(callback).Run(
ServiceWorkerStorage::DatabaseStatusToStatusCode(status)); ServiceWorkerStorage::DatabaseStatusToStatusCode(status));
...@@ -1050,7 +1050,7 @@ void ServiceWorkerRegistry::DidGetUserDataForAllRegistrations( ...@@ -1050,7 +1050,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,
ServiceWorkerDatabase::Status status) { ServiceWorkerDatabase::Status status) {
if (status != ServiceWorkerDatabase::STATUS_OK) if (status != ServiceWorkerDatabase::Status::kOk)
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
std::move(callback).Run( std::move(callback).Run(
user_data, ServiceWorkerStorage::DatabaseStatusToStatusCode(status)); user_data, ServiceWorkerStorage::DatabaseStatusToStatusCode(status));
......
...@@ -540,7 +540,7 @@ class ServiceWorkerStorageTest : public testing::Test { ...@@ -540,7 +540,7 @@ class ServiceWorkerStorageTest : public testing::Test {
FROM_HERE, base::BindLambdaForTesting([&]() { FROM_HERE, base::BindLambdaForTesting([&]() {
RegistrationData deleted_version; RegistrationData deleted_version;
std::vector<int64_t> newly_purgeable_resources; std::vector<int64_t> newly_purgeable_resources;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, ASSERT_EQ(ServiceWorkerDatabase::Status::kOk,
database_raw->WriteRegistration( database_raw->WriteRegistration(
registration, resources, &deleted_version, registration, resources, &deleted_version,
&newly_purgeable_resources)); &newly_purgeable_resources));
...@@ -555,7 +555,7 @@ class ServiceWorkerStorageTest : public testing::Test { ...@@ -555,7 +555,7 @@ class ServiceWorkerStorageTest : public testing::Test {
ServiceWorkerDatabase* database_raw = database(); ServiceWorkerDatabase* database_raw = database();
storage()->database_task_runner_->PostTask( storage()->database_task_runner_->PostTask(
FROM_HERE, base::BindLambdaForTesting([&]() { FROM_HERE, base::BindLambdaForTesting([&]() {
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, EXPECT_EQ(ServiceWorkerDatabase::Status::kOk,
database_raw->GetPurgeableResourceIds(&ids)); database_raw->GetPurgeableResourceIds(&ids));
loop.Quit(); loop.Quit();
})); }));
...@@ -569,7 +569,7 @@ class ServiceWorkerStorageTest : public testing::Test { ...@@ -569,7 +569,7 @@ class ServiceWorkerStorageTest : public testing::Test {
ServiceWorkerDatabase* database_raw = database(); ServiceWorkerDatabase* database_raw = database();
storage()->database_task_runner_->PostTask( storage()->database_task_runner_->PostTask(
FROM_HERE, base::BindLambdaForTesting([&]() { FROM_HERE, base::BindLambdaForTesting([&]() {
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, EXPECT_EQ(ServiceWorkerDatabase::Status::kOk,
database_raw->GetUncommittedResourceIds(&ids)); database_raw->GetUncommittedResourceIds(&ids));
loop.Quit(); loop.Quit();
})); }));
......
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