// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module extensions.mojom;
// Historically, where an extension was loaded from, and whether an
// extension's files were inside or outside of the profile's directory. In
// modern usage, a Location can be thought of as the installation source:
// whether an extension was explicitly installed by the user (through the
// UI), or implicitly installed by other means. For example, enterprise
// policy, being part of Chrome per se (but implemented as an extension), or
// installed as a side effect of installing third party software.
//
// NOTE: These values are stored as integers in the preferences and used
// in histograms so don't remove or reorder existing items. Just append
// to the end.
enum ManifestLocation {
kInvalidLocation = 0,
kInternal = 1, // A crx file from the internal Extensions directory. This
// includes extensions explicitly installed by the user. It
// also includes installed-by-default extensions that are not
// part of Chrome itself (and thus not a kComponent), but are
// part of a larger system (such as Chrome OS).
kExternalPref = 2, // A crx file from an external directory (via prefs).
kExternalRegistry = 3, // A crx file from an external directory (via eg the
// registry on Windows).
kUnpacked = 4, // From loading an unpacked extension from the
// extensions settings page.
kComponent = 5, // An integral component of Chrome itself, which
// happens to be implemented as an extension. We don't
// show these in the management UI.
kExternalPrefDownload = 6, // A crx file from an external directory (via
// prefs), installed from an update URL.
kExternalPolicyDownload = 7, // A crx file from an external directory (via
// admin policies), installed from an update
// URL.
kCommandLine = 8, // --load-extension.
kExternalPolicy = 9, // A crx file from an external directory (via admin
// policies), cached locally and installed from the
// cache.
kExternalComponent = 10, // Similar to kComponent in that it's considered an
// internal implementation detail of chrome, but
// installed from an update URL like the *kDownload
// ones.
};