chromium/extensions/common/mojom/manifest.mojom

// 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.
};