chromium/components/content_settings/core/common/content_settings_types.mojom

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

[JavaPackage="org.chromium.components.content_settings"]
module content_settings.mojom;

// A particular type of content to care about. We give the user various types
// of controls over each of these. Values can be added, removed and reshuffled.
// For persistent values use the strings defined in content_settings_registry
// or the helpers defined in content_settings_uma_util.
// When adding values to this enum, be sure to update the
// kHistogramValue array in c/c/c/browser/content_settings_uma_util.cc.
// Add "NO_IFTTT=<reason>" in the commit message if it's not applicable.
// LINT.IfChange(ContentSettingsType)
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.content_settings
enum ContentSettingsType {
  // "DEFAULT" is only used as an argument to the Content Settings Window
  // opener; there it means "whatever was last shown".
  DEFAULT = -1,
  // This setting governs whether cookies are enabled by the user in the
  // provided context. However, it may be overridden by other settings. This
  // enum should NOT be read directly to determine whether cookies are enabled;
  // the client should instead rely on the CookieSettings API.
  COOKIES = 0,
  IMAGES,
  JAVASCRIPT,

  // This setting governs both popups and unwanted redirects like tab-unders and
  // framebusting.
  // TODO(csharrison): Consider renaming it to POPUPS_AND_REDIRECTS, but it
  // might not be worth the trouble.
  POPUPS,

  GEOLOCATION,
  NOTIFICATIONS,
  AUTO_SELECT_CERTIFICATE,
  MIXEDSCRIPT,
  MEDIASTREAM_MIC,
  MEDIASTREAM_CAMERA,
  PROTOCOL_HANDLERS,
  DEPRECATED_PPAPI_BROKER,
  AUTOMATIC_DOWNLOADS,

  // Advanced device-specific functions on MIDI devices. MIDI-SysEx
  // communications can be used for changing the MIDI device's persistent state
  // such as firmware.
  MIDI_SYSEX,

  SSL_CERT_DECISIONS,
  PROTECTED_MEDIA_IDENTIFIER,
  APP_BANNER,
  SITE_ENGAGEMENT,
  DURABLE_STORAGE,
  USB_CHOOSER_DATA,
  BLUETOOTH_GUARD,
  BACKGROUND_SYNC,
  AUTOPLAY,
  IMPORTANT_SITE_INFO,
  PERMISSION_AUTOBLOCKER_DATA,
  ADS,

  // Website setting which stores metadata for the subresource filter to aid in
  // decisions for whether or not to show the UI.
  ADS_DATA,

  // MIDI stands for Musical Instrument Digital Interface. It is a standard that
  // allows electronic musical instruments, computers, and other devices to
  // communicate with each other.
  MIDI,

  // This content setting type is for caching password protection service's
  // verdicts of each origin.
  PASSWORD_PROTECTION,

  // Website setting which stores engagement data for media related to a
  // specific origin.
  MEDIA_ENGAGEMENT,

  // Content setting which stores whether or not the site can play audible
  // sound. This will not block playback but instead the user will not hear it.
  SOUND,

  // Website setting which stores the list of client hints that the origin
  // requested the browser to remember. The browser is expected to send all
  // client hints in the HTTP request headers for every resource requested
  // from that origin.
  CLIENT_HINTS,

  // Generic Sensor API covering ambient-light-sensor, accelerometer, gyroscope
  // and magnetometer are all mapped to a single content_settings_type.
  // Setting for the Generic Sensor API covering ambient-light-sensor,
  // accelerometer, gyroscope and magnetometer. These are all mapped to a single
  // ContentSettingsType.
  SENSORS,

  // Content setting which stores whether or not the user has granted the site
  // permission to respond to accessibility events, which can be used to
  // provide a custom accessibility experience. Requires explicit user consent
  // because some users may not want sites to know they're using assistive
  // technology.
  ACCESSIBILITY_EVENTS,

  // Used to store whether to allow a website to install a payment handler.
  PAYMENT_HANDLER,

  // Content setting which stores whether to allow sites to ask for permission
  // to access USB devices. If this is allowed specific device permissions are
  // stored under USB_CHOOSER_DATA.
  USB_GUARD,

  // Nothing is stored in this setting at present. Please refer to
  // BackgroundFetchPermissionContext for details on how this permission
  // is ascertained.
  BACKGROUND_FETCH,

  // Website setting which stores the amount of times the user has dismissed
  // intent picker UI without explicitly choosing an option.
  INTENT_PICKER_DISPLAY,

  // Used to store whether to allow a website to detect user active/idle state.
  IDLE_DETECTION,

  // Content settings for access to serial ports. The "guard" content setting
  // stores whether to allow sites to ask for permission to access a port. The
  // permissions granted to access particular ports are stored in the "chooser
  // data" website setting.
  SERIAL_GUARD,
  SERIAL_CHOOSER_DATA,

  // Nothing is stored in this setting at present. Please refer to
  // PeriodicBackgroundSyncPermissionContext for details on how this permission
  // is ascertained.
  // This content setting is not registered because it does not require access
  // to any existing providers.
  PERIODIC_BACKGROUND_SYNC,

  // Content setting which stores whether to allow sites to ask for permission
  // to do Bluetooth scanning.
  BLUETOOTH_SCANNING,

  // Content settings for access to HID devices. The "guard" content setting
  // stores whether to allow sites to ask for permission to access a device. The
  // permissions granted to access particular devices are stored in the "chooser
  // data" website setting.
  HID_GUARD,
  HID_CHOOSER_DATA,

  // Wake Lock API, which has two lock types: screen and system locks.
  // Currently, screen locks do not need any additional permission, and system
  // locks are always denied while the right UI is worked out.
  WAKE_LOCK_SCREEN,
  WAKE_LOCK_SYSTEM,

  // Legacy SameSite cookie behavior. This disables SameSite=Lax-by-default,
  // SameSite=None requires Secure, and Schemeful Same-Site, forcing the
  // legacy behavior wherein 1) cookies that don't specify SameSite are treated
  // as SameSite=None, 2) SameSite=None cookies are not required to be Secure,
  // and 3) schemeful same-site is not active.
  //
  // This will also be used to revert to legacy behavior when future changes
  // in cookie handling are introduced.
  LEGACY_COOKIE_ACCESS,

  // Content settings which stores whether to allow sites to ask for permission
  // to save changes to an original file selected by the user through the
  // File System Access API.
  FILE_SYSTEM_WRITE_GUARD,

  // Used to store whether to allow a website to exchange data with NFC devices.
  NFC,

  // Website setting to store permissions granted to access particular Bluetooth
  // devices.
  BLUETOOTH_CHOOSER_DATA,

  // Full access to the system clipboard (sanitized read without user gesture,
  // and unsanitized read and write with user gesture).
  // TODO(crbug.com/40108655): Move CLIPBOARD_READ_WRITE uses to be
  // ordered in the same order as listed in the enum.
  CLIPBOARD_READ_WRITE,

  // This is special-cased in the permissions layer to always allow, and as
  // such doesn't have associated prefs data.
  // TODO(crbug.com/40108655): Move CLIPBOARD_SANITIZED_WRITE uses to be
  // ordered in the same order as listed in the enum.
  CLIPBOARD_SANITIZED_WRITE,

  // This content setting type is for caching safe browsing real time url
  // check's verdicts of each origin.
  SAFE_BROWSING_URL_CHECK_DATA,

  // Used to store whether a site is allowed to request AR or VR sessions with
  // the WebXr Device API.
  VR,
  AR,

  // Content setting which stores whether to allow site to open and read files
  // and directories selected through the File System Access API.
  FILE_SYSTEM_READ_GUARD,

  // Access to first party storage in a third-party context. Exceptions are
  // scoped to the combination of requesting/top-level origin, and are managed
  // through the Storage Access API. For the time being, this content setting
  // exists in parallel to third-party cookie rules stored in COOKIES.
  // TODO(crbug.com/40638427): Reconcile the two.
  STORAGE_ACCESS,

  // Content setting which stores whether to allow a site to control camera
  // movements. It does not give access to camera.
  CAMERA_PAN_TILT_ZOOM,

  // Content setting for Screen Enumeration and Screen Detail functionality.
  // Permits access to detailed multi-screen information, like size and
  // position. Permits placing fullscreen and windowed content on specific
  // screens. See also: https://w3c.github.io/window-management
  WINDOW_MANAGEMENT,

  // Stores whether to allow insecure websites to make private network requests.
  // See also: https://wicg.github.io/cors-rfc1918
  // Set through enterprise policies only.
  INSECURE_PRIVATE_NETWORK,

  // Content setting which stores whether or not a site can access low-level
  // locally installed font data using the Local Fonts Access API.
  LOCAL_FONTS,

  // Stores per-origin state for permission auto-revocation (for all permission
  // types).
  PERMISSION_AUTOREVOCATION_DATA,

  // Stores per-origin state of the most recently selected directory for the use
  // by the File System Access API.
  FILE_SYSTEM_LAST_PICKED_DIRECTORY,

  // Controls access to the getDisplayMedia API.
  // No values are stored for this type, this is solely needed to be able to
  // register the PermissionContext.
  DISPLAY_CAPTURE,

  // Website setting to store permissions metadata granted to paths on the local
  // file system via the File System Access API. |FILE_SYSTEM_WRITE_GUARD| is
  // the corresponding "guard" setting. The stored data represents valid
  // permission only if |FILE_SYSTEM_ACCESS_EXTENDED_PERMISSION| is enabled
  // via user opt-in. Otherwise, they represent "recently granted but revoked
  // permission", which are used to restore the permission.
  FILE_SYSTEM_ACCESS_CHOOSER_DATA,

  // Stores a grant that allows a relying party to send a request for identity
  // information to specified identity providers, potentially through any
  // anti-tracking measures that would otherwise prevent it. This setting is
  // associated with the relying party's origin.
  FEDERATED_IDENTITY_SHARING,

  // Whether to use the v8 optimized JIT for running JavaScript on the page.
  JAVASCRIPT_JIT,

  // Content setting which stores user decisions to allow loading a site over
  // HTTP. Entries are added by hostname when a user bypasses the HTTPS-First
  // Mode interstitial warning when a site does not support HTTPS. Allowed hosts
  // are exact hostname matches -- subdomains of a host on the allowlist must be
  // separately allowlisted.
  HTTP_ALLOWED,

  // Stores metadata related to form fill, such as e.g. whether user data was
  // autofilled on a specific website.
  FORMFILL_METADATA,

  // Setting to indicate that there is an active federated sign-in session
  // between a specified relying party and a specified identity provider for
  // a specified account. When this is present it allows access to session
  // management capabilities between the sites. This setting is associated
  // with the relying party's origin.
  // Obsolete on Nov 2023.
  DEPRECATED_FEDERATED_IDENTITY_ACTIVE_SESSION,

  // Setting to indicate whether Chrome should automatically apply darkening to
  // web content.
  AUTO_DARK_WEB_CONTENT,

  // Setting to indicate whether Chrome should request the desktop view of a
  // site instead of the mobile one.
  REQUEST_DESKTOP_SITE,

  // Setting to indicate whether browser should allow signing into a website via
  // the browser FedCM API.
  FEDERATED_IDENTITY_API,

  // Stores notification interactions per origin for the past 90 days.
  // Interactions per origin are pre-aggregated over seven-day windows: A
  // notification interaction or display is assigned to the last Monday midnight
  // in local time.
  NOTIFICATION_INTERACTIONS,

  // Website setting which stores the last reduced accept language negotiated
  // for a given origin, to be used on future visits to the origin.
  REDUCED_ACCEPT_LANGUAGE,

  // Website setting which is used for NotificationPermissionReviewService to
  // store origin blocklist from review notification permissions feature.
  NOTIFICATION_PERMISSION_REVIEW,

  // Website setting to store permissions granted to access particular devices
  // in private network.
  PRIVATE_NETWORK_GUARD,
  PRIVATE_NETWORK_CHOOSER_DATA,

  // Website setting which stores whether the browser has observed the user
  // signing into an identity-provider based on observing the IdP-SignIn-Status
  // HTTP header.
  FEDERATED_IDENTITY_IDENTITY_PROVIDER_SIGNIN_STATUS,

  // Website setting which is used for UnusedSitePermissionsService to
  // store revoked permissions of unused sites from unused site permissions
  // feature.
  REVOKED_UNUSED_SITE_PERMISSIONS,

  // Similar to STORAGE_ACCESS, but applicable at the page-level rather than
  // being specific to a frame.
  TOP_LEVEL_STORAGE_ACCESS,

  // Setting to indicate whether user has opted in to allowing auto re-authn via
  // the FedCM API.
  FEDERATED_IDENTITY_AUTO_REAUTHN_PERMISSION,

  // Website setting which stores whether the user has explicitly registered
  // a website as an identity-provider.
  FEDERATED_IDENTITY_IDENTITY_PROVIDER_REGISTRATION,

  // Content setting which is used to indicate whether anti-abuse functionality
  // should be enabled.
  ANTI_ABUSE,

  // Content setting used to indicate whether third-party storage partitioning
  // should be enabled.
  THIRD_PARTY_STORAGE_PARTITIONING,

  // Used to indicate whether HTTPS-First Mode is enabled on the hostname.
  HTTPS_ENFORCED,

  // Setting for enabling the `getAllScreensMedia` API. Spec link:
  // https://github.com/screen-share/capture-all-screens
  ALL_SCREEN_CAPTURE,

  // Stores per origin metadata for cookie controls.
  COOKIE_CONTROLS_METADATA,

  // Content Setting for temporary 3PC accesses granted by user behavior
  // heuristics.
  TPCD_HEURISTICS_GRANTS,

  // Content Setting for 3PC accesses granted by metadata delivered via the
  // component updater service. This type will only be used when
  // `net::features::kTpcdMetadataGrants` is enabled.
  TPCD_METADATA_GRANTS,

  // Content Setting for 3PC accesses granted via 3PC deprecation trial.
  TPCD_TRIAL,

  // Content Setting for 3PC accesses granted via top-level 3PC deprecation
  // trial. Similar to TPCD_TRIAL, but applicable at the page-level for the
  // lifetime of the page that served the token, rather than being specific to a
  // requesting-origin/top-level-site combination and persistent.
  TOP_LEVEL_TPCD_TRIAL,

  // Content Setting for a first-party origin trial that allows websites to
  // enable third-party cookie deprecation.
  // ALLOW (default): no effect (e.g. third-party cookies allowed, if not
  //                  blocked otherwise).
  // BLOCK: third-party cookies blocked, but 3PCD mitigations enabled.
  TOP_LEVEL_TPCD_ORIGIN_TRIAL,

  // Content setting used to indicate whether entering picture-in-picture
  // automatically should be enabled.
  AUTO_PICTURE_IN_PICTURE,

  // Whether user has opted into keeping file/directory permissions persistent
  // between visits for a given origin. When enabled, permission metadata stored
  // under |FILE_SYSTEM_ACCESS_CHOOSER_DATA| can auto-grant incoming permission
  // request.
  FILE_SYSTEM_ACCESS_EXTENDED_PERMISSION,

  // Whether the FSA Persistent Permissions restore prompt is eligible to be
  // shown to the user, for a given origin.
  FILE_SYSTEM_ACCESS_RESTORE_PERMISSION,

  // Whether an application capturing another tab, may scroll and zoom
  // the captured tab.
  CAPTURED_SURFACE_CONTROL,

  // Content setting for access to smart card readers.
  // The "guard" content setting stores whether to allow sites to access the
  // Smart Card API.
  SMART_CARD_GUARD,
  SMART_CARD_DATA,

  // Content settings for access to printers for the Web Printing API.
  WEB_PRINTING,

  // Content setting used to indicate whether entering HTML Fullscreen
  // automatically (i.e. without transient activation) should be enabled.
  AUTOMATIC_FULLSCREEN,

  // Content settings used to indicate that a web app is allowed to prompt the
  // user for the installation of sub apps.
  SUB_APP_INSTALLATION_PROMPTS,

  // Whether an application can enumerate audio output device.
  SPEAKER_SELECTION,

  // Content settings for access to the Direct Sockets API.
  DIRECT_SOCKETS,

  // Keyboard Lock API allows a site to capture keyboard inputs that would
  // otherwise be handled by the OS or the browser.
  KEYBOARD_LOCK,

  // Pointer Lock API allows a site to hide the cursor and have exclusive access
  // to mouse inputs.
  POINTER_LOCK,

  // Website setting which is used for UnusedSitePermissionsService to store
  // auto-revoked notification permissions from abusive sites.
  REVOKED_ABUSIVE_NOTIFICATION_PERMISSIONS,

  // Content setting that controls tracking protection status per site.
  // BLOCK: Protections enabled. This is the default state.
  // ALLOW: Protections disabled.
  TRACKING_PROTECTION,

  // With this permission, when the application calls `getDisplayMedia()`, a
  // system audio track can be returned without showing the display media
  // selection picker. The application can explicitly specify
  // `systemAudio: 'exclude'` or `video: true` to still show the display media
  // selection picker if needed. Please note that the setting only works for
  // WebUI.
  DISPLAY_MEDIA_SYSTEM_AUDIO,

  // Whether to use the higher-tier v8 optimizers for running JavaScript on the
  // page.
  JAVASCRIPT_OPTIMIZER,

  // Content Setting for the Storage Access Headers persistent origin trial that
  // allows origins to opt into the storage access header behavior. Should be
  // scoped to `REQUESTING_ORIGIN_AND_TOP_SCHEMEFUL_SITE_SCOPE` in order to
  // correspond to the design of persistent origin trials. See also:
  // https://github.com/cfredric/storage-access-headers
  // ALLOW: storage access request headers will be attached to cross-site
  //        requests, and url requests will look for response headers from
  //        origins to retry a request or load with storage access.
  // BLOCK (default): no effect.
  STORAGE_ACCESS_HEADER_ORIGIN_TRIAL,

  // Whether or not sites can request Hand Tracking data within WebXR Sessions.
  HAND_TRACKING,

  // Website setting to indicate whether user has opted in to allow web apps to
  // install other web apps.
  WEB_APP_INSTALLATION,
};
// LINT.ThenChange(//components/content_settings/core/browser/content_settings_uma_util.cc:kHistogramValue)