blob: 8960b0438ec01d125882b31f1f0277206df0191e [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_DATABASE_SERIALIZATION_H_
#define CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_DATABASE_SERIALIZATION_H_
#include <memory>
#include <string>
#include "components/webapps/common/web_app_id.h"
namespace web_app {
class WebApp;
namespace proto {
class WebApp;
} // namespace proto
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
//
// LINT.IfChange(ProtoParseResult)
enum class ProtoParseResult {
kSuccess = 0,
kNoSyncData = 1,
kNoStartUrlInSyncData = 2,
kInvalidStartUrl = 3,
kNoScope = 4,
kInvalidScope = 5,
kInvalidScopeWithRef = 6,
kInvalidScopeWithQuery = 7,
kNoRelativeManifestId = 8,
kInvalidManifestId = 9,
kNoUserDisplayModeInSync = 10,
kMissingUserDisplayModeForCurrentPlatform = 11,
kNoSources = 12,
kNoSourcesAndNotUninstalling = 13,
kNoName = 14,
kNoInstallState = 15,
kInvalidInstallState = 16,
kMissingChromeOsData = 17,
kHasChromeOsDataOnNonChromeOs = 18,
kNoManifestIcons = 19,
kInvalidFileHandlerNoActionOrLaunchType = 20,
kInvalidFileHandlerAction = 21,
kInvalidFileHandlerAcceptEntry = 22,
kInvalidIconsInFileHandler = 23,
kInvalidShareTarget = 24,
kInvalidShareTargetAction = 25,
kInvalidShareTargetFile = 26,
kInvalidShortcutsMenuItemInfo = 27,
kMoreDownloadedShortcutIconsThanInfos = 28,
kEmptyAdditionalSearchTerm = 29,
kInvalidProtocolHandler = 30,
kInvalidProtocolHandlerUrl = 31,
kEmptyAllowedLaunchProtocol = 32,
kEmptyDisallowedLaunchProtocol = 33,
kInvalidScopeExtension = 34,
kOpaqueScopeExtensionOrigin = 35,
kEmptyScopeExtensionOrigin = 36,
kInvalidScopeExtensionScope = 37,
kOpaqueValidatedScopeExtension = 38,
kEmptyValidatedScopeExtensionOrigin = 39,
kInvalidScopeExtensionValidated = 40,
kScopeExtensionOriginMismatchWithScope = 41,
kInvalidManifestUrl = 42,
kInvalidInstallUrl = 43,
kEmptyPolicyId = 44,
kInvalidIsolationDataVersion = 45,
kInvalidIsolationDataLocation = 46,
kInvalidPendingUpdateInfoLocation = 47,
kDevModeMismatchInIsolationData = 48,
kInvalidPendingUpdateInfoVersion = 49,
kInvalidPendingUpdateIntegrityBlockData = 50,
kInvalidIntegrityBlockData = 51,
kInvalidUpdateManifestUrlIwa = 52,
kInvalidUpdateChannel = 53,
kInvalidGeneratedIconFix = 54,
kEmptyPendingUpdateInfo = 55,
kMismatchedPendingUpdateInfoIcons = 56,
kMissingDownloadedIconsForPendingUpdate = 57,
kInvalidPendingUpdateManifestIcons = 58,
kInvalidPendingUpdateTrustedIcons = 59,
kInvalidDownloadedManifestIconForPendingUpdate = 60,
kInvalidDownloadedTrustedIconForPendingUpdate = 61,
kMissingWasIgnoredForPendingUpdate = 62,
kInvalidParsedTrustedIcons = 63,
kInvalidBorderlessUrlPatterns = 64,
kInvalidInstalledBy = 65,
kMaxValue = kInvalidInstalledBy,
};
// LINT.ThenChange(//tools/metrics/histograms/metadata/webapps/enums.xml:WebAppProtoParseResult)
std::unique_ptr<WebApp> ParseWebAppProtoForTesting(const webapps::AppId& app_id,
const std::string& value);
std::unique_ptr<WebApp> ParseWebAppProto(const proto::WebApp& proto);
std::unique_ptr<proto::WebApp> WebAppToProto(const WebApp& web_app);
} // namespace web_app
#endif // CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_DATABASE_SERIALIZATION_H_