| // Copyright 2017 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. |
| |
| syntax = "proto2"; |
| |
| option optimize_for = LITE_RUNTIME; |
| |
| option java_outer_classname = "ExtensionInstallProtos"; |
| option java_package = "org.chromium.components.metrics"; |
| |
| package metrics; |
| |
| // Stores information about an extension installed on a user's machine. |
| // Next tag: 17. |
| message ExtensionInstallProto { |
| // The type of extension item this is. |
| enum Type { |
| UNKNOWN_TYPE = 0; // Unknown (hopefully never used) |
| EXTENSION = 1; // A browser extension |
| THEME = 2; // A browser theme |
| USER_SCRIPT = 3; // An extension converted from a user script |
| HOSTED_APP = 4; // A hosted app |
| LEGACY_PACKAGED_APP = 5; // A (deprecated) v1 packaged app |
| PLATFORM_APP = 6; // A platform app |
| SHARED_MODULE = 7; // A shared module |
| } |
| optional Type type = 1; |
| |
| // The source of the extension. |
| enum InstallLocation { |
| UNKNOWN_LOCATION = 0; // Unknown (hopefully never used) |
| INTERNAL = 1; // A crx file from the internal Extensions directory; most |
| // webstore-installed extensions fall into this category. |
| EXTERNAL_PREF = 2; // A crx file from an external directory (via prefs). |
| EXTERNAL_REGISTRY = 3; // A crx file from an external directory (via the |
| // Windows registry) |
| UNPACKED = 4; // An unpacked extension loaded from chrome://extensions. |
| COMPONENT = 5; // An internal component extension. |
| EXTERNAL_PREF_DOWNLOAD = 6; // A crx file from an external directory (via |
| // prefs), downloaded from an update URL. |
| EXTERNAL_POLICY_DOWNLOAD = 7; // A crx file from an external directory (via |
| // admin policies), downloaded from an update |
| // URL. |
| COMMAND_LINE = 8; // Loaded from the commandline (e.g. --load-extension). |
| EXTERNAL_POLICY = 9; // A crx file from an external directory (via admin |
| // policies), cached locally and installed from the |
| // cache. |
| EXTERNAL_COMPONENT = 10; // A component extension that was downloaded |
| // externally via an update url. |
| } |
| optional InstallLocation install_location = 2; |
| |
| // The manifest version in the extension. Note: this refers to the |
| // Chrome-required versioning of the manifest, not the extension version. |
| // Currently, it is always 1 or 2. |
| optional int32 manifest_version = 3; |
| |
| // The associated UI action in the extension. Each extension can have at most |
| // one type of action. |
| enum ActionType { |
| NO_ACTION = 0; |
| BROWSER_ACTION = 1; |
| PAGE_ACTION = 2; |
| SYSTEM_INDICATOR = 3; |
| } |
| optional ActionType action_type = 4; |
| |
| // If the extension has been granted file access. |
| optional bool has_file_access = 5; |
| |
| // If the extension has been granted permission to run in incognito contexts. |
| optional bool has_incognito_access = 6; |
| |
| // If the extension originated from the Chrome Web Store according to the |
| // prefs. |
| // This differs from install_location, which specifies from where the location |
| // on the user’s machine from where the install originated, but not whether |
| // the extension is hosted in the store. For instance, sideloaded extensions |
| // that are specified via ID in the registry are downloaded from the store. |
| optional bool is_from_store = 7; |
| |
| // If the extension automatically updates from the Chrome Web Store. |
| optional bool updates_from_store = 8; |
| |
| // If the extension is a bookmark app that was generated from a web page. This |
| // is distinct from install_location above, which specifies from where on the |
| // user’s machine the install originated. |
| optional bool is_from_bookmark = 9; |
| |
| // If the extension was created from a user script. This is distinct from |
| // install_location above, which specifies from where on the user’s machine |
| // the install originated. |
| optional bool is_converted_from_user_script = 10; |
| |
| // If the extension was installed by default when the profile was created. |
| // These extensions are specified by Chrome. |
| optional bool is_default_installed = 11; |
| |
| // If the extension was installed by an OEM. This differs from |
| // "is_default_installed", since these extensions are specified by the OEM |
| // rather than by Chrome. These are specified in a file that is created as |
| // part of the creation of the Chrome image, and can be specific to different |
| // OEMs. |
| optional bool is_oem_installed = 12; |
| |
| // The type of background page this extension has. Each extension can have at |
| // most one type of background presence. |
| enum BackgroundScriptType { |
| NO_BACKGROUND_SCRIPT = 0; // The extension has no background page. |
| PERSISTENT_BACKGROUND_PAGE = 1; // The extension has a persistent |
| // background page. |
| EVENT_PAGE = 2; // The extension has a (lazy) event page. |
| } |
| optional BackgroundScriptType background_script_type = 13; |
| |
| // The reasons an extension may be disabled. |
| enum DisableReason { |
| USER_ACTION = 0; // The user disabled the extension. |
| PERMISSIONS_INCREASE = 1; // The extension increased permissions. |
| RELOAD = 2; // The extension is reloading. |
| UNSUPPORTED_REQUIREMENT = 3; // The extension has requirements that weren't |
| // met (e.g. graphics capabilities). |
| SIDELOAD_WIPEOUT = 4; // The extension was disabled in the sideload |
| // wipeout. |
| UNKNOWN_FROM_SYNC = 5; // The extension was disabled by sync. |
| NOT_VERIFIED = 6; // The extension couldn't be verified. |
| GREYLIST = 7; // The extension was found on the greylist. |
| CORRUPTED = 8; // The extension install was corrupted according to content |
| // verification. |
| REMOTE_INSTALL = 9; // The extension was installed remotely and hasn't been |
| // enabled. |
| EXTERNAL_EXTENSION = 10; // The extension was sideloaded and hasn't been |
| // enabled. |
| UPDATE_REQUIRED_BY_POLICY = 11; // Policy requires an unmet minimum |
| // version. |
| CUSTODIAN_APPROVAL_REQUIRED = 12; // The extension is pending custodian |
| // approval for a supervised user. |
| BLOCKED_BY_POLICY = 13; // The extension is disabled because it's blocked |
| // by enterprise policy. |
| } |
| // Any DisableReasons in effect for the extension. An empty list means the |
| // extension is not disabled. Note that an extension that is not disabled may |
| // nonetheless not be running, e.g., terminated because the extension process |
| // was killed. |
| repeated DisableReason disable_reasons = 14; |
| |
| // The state of the extension in the safe browsing blacklist. |
| // The numeric values here match the values of the respective enum in |
| // ClientCRXListInfoResponse proto. |
| enum BlacklistState { |
| // The extension is not in the blacklist. |
| NOT_BLACKLISTED = 0; |
| // The extension is malware. |
| BLACKLISTED_MALWARE = 1; |
| // The extension has a serious security vulnerability. |
| BLACKLISTED_SECURITY_VULNERABILITY = 2; |
| // The extension violated CWS policy. |
| BLACKLISTED_CWS_POLICY_VIOLATION = 3; |
| // The extension is considered potentially unwanted. |
| BLACKLISTED_POTENTIALLY_UNWANTED = 4; |
| // Used when we couldn't connect to server, e.g. when offline. |
| BLACKLISTED_UNKNOWN = 5; |
| } |
| optional BlacklistState blacklist_state = 15; |
| |
| // Whether the extension was installed in the current sampling period. This |
| // is useful if trying to use extension installation in conjunction with other |
| // metrics (e.g. page load). Since some of the metrics from this period will |
| // have the extension installed and others won't, these records can be |
| // discarded for that analysis. |
| optional bool installed_in_this_sample_period = 16; |
| } |