blob: d5971ddd4a35cb8244d3b3fd4ef69b2c39ce876b [file] [log] [blame]
// Copyright 2018 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.
#ifndef CHROME_BROWSER_EXTENSIONS_FORCED_EXTENSIONS_INSTALLATION_FAILURES_H_
#define CHROME_BROWSER_EXTENSIONS_FORCED_EXTENSIONS_INSTALLATION_FAILURES_H_
#include "extensions/common/extension_id.h"
class Profile;
namespace extensions {
// Encapsulates reasons for installation failures, saving and getting them.
// Guaranteed reasons only for force-installed extensions.
class InstallationFailures {
public:
// Enum used for UMA. Do NOT reorder or remove entry. Don't forget to
// update enums.xml when adding new entries.
enum class Reason {
// Reason for the failure is not reported.
UNKNOWN = 0,
// Invalid id of the extension.
INVALID_ID = 1,
// Error during parsing extension individual settings.
MALFORMED_EXTENSION_SETTINGS = 2,
// The extension is marked as replaced by ARC app.
REPLACED_BY_ARC_APP = 3,
// Malformed extension dictionary for the extension.
MALFORMED_EXTENSION_DICT = 4,
// The extension format from extension dict is not supported.
NOT_SUPPORTED_EXTENSION_DICT = 5,
// Invalid file path in the extension dict.
MALFORMED_EXTENSION_DICT_FILE_PATH = 6,
// Invalid version in the extension dict.
MALFORMED_EXTENSION_DICT_VERSION = 7,
// Invalid updated URL in the extension dict.
MALFORMED_EXTENSION_DICT_UPDATE_URL = 8,
// The extension doesn't support browser locale.
LOCALE_NOT_SUPPORTED = 9,
// The extension marked as it shouldn't be installed.
NOT_PERFORMING_NEW_INSTALL = 10,
// Profile is older than supported by the extension.
TOO_OLD_PROFILE = 11,
// The extension can't be installed for enterprise.
DO_NOT_INSTALL_FOR_ENTERPRISE = 12,
// The extension is already installed.
ALREADY_INSTALLED = 13,
// The download of the crx failed.
CRX_FETCH_FAILED = 14,
// Failed to fetch the manifest for this extension.
MANIFEST_FETCH_FAILED = 15,
// The manifest couldn't be parsed.
MANIFEST_INVALID = 16,
// The manifest was fetched and parsed, and there are no updates for this
// extension.
NO_UPDATE = 17,
// Magic constant used by the histogram macros.
// Always update it to the max value.
kMaxValue = NO_UPDATE
};
// Remembers failure reason in memory.
static void ReportFailure(const Profile* profile,
const ExtensionId& id,
Reason reason);
// Retrieves reason for installation failure.
// Returns UNKNOWN if not found.
static Reason Get(const Profile* profile, const ExtensionId& id);
// Clears all failures for the given profile.
static void Clear(const Profile* profile);
};
} // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_FORCED_EXTENSIONS_INSTALLATION_FAILURES_H_