Source code

Revision control

Copy as Markdown

Other Tools

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
// This file defines a list of use counters, which are things that can
// record usage of Web platform features and then report this information
// through Telemetry.
//
// The format of this file is very strict. Each line can be:
//
// (a) a blank line
//
// (b) a comment, which is a line that begins with "//"
//
// (c) one of three possible use counter declarations:
//
// method <IDL interface name>.<IDL operation name>
// attribute <IDL interface name>.<IDL attribute name>
// custom <any valid identifier> <description>
//
// The <description> for custom counters will be appended to "Whether a document "
// or "Whether a page ", so phrase it appropriately. For instance, "constructs a
// Foo object" or "calls Document.bar('some value')". It may contain any
// character (including whitespace).
//
// To actually cause use counters to be incremented, DOM methods
// and attributes must have a [UseCounter] extended attribute in
// the Web IDL file.
//
// Custom counters are incremented when
// SetUseCounter(eUseCounter_custom_MyName) is called on a Document object.
//
// You might reasonably ask why we have this file and we require
// annotating things with [UseCounter] in the relevant WebIDL file as
// well. Generating things from bindings codegen and ensuring all the
// dependencies were correct would have been rather difficult.
//
// NOTE: You might need a data collection review if you are adding
// a custom use counter. And for WebIDL methods or attributes,
// deprecated operations, or CSS properties: you almost certainly
// don't need a data collection review.
method SVGSVGElement.getElementById
attribute SVGSVGElement.currentScale
// Push API
method PushManager.subscribe
method PushSubscription.unsubscribe
// window.sidebar
attribute Window.sidebar
// DataTransfer API (gecko-only methods)
method DataTransfer.addElement
attribute DataTransfer.mozItemCount
attribute DataTransfer.mozCursor
method DataTransfer.mozTypesAt
method DataTransfer.mozClearDataAt
method DataTransfer.mozSetDataAt
method DataTransfer.mozGetDataAt
attribute DataTransfer.mozUserCancelled
attribute DataTransfer.mozSourceNode
// Element non-standard events
custom onoverflow sets an element onoverflow event listener
custom onunderflow sets an element onunderflow event listener
// JavaScript feature usage
custom JS_asmjs uses asm.js
custom JS_wasm uses WebAssembly
custom JS_wasm_legacy_exceptions uses WebAssembly legacy exception-handling
custom JS_isHTMLDDA_fuse has used the document.all getter (popping the EmulatesUndefined Fuse)
custom JS_optimizeGetIterator_fuse has modified any builtins such that the GetIterator fuse is popped
custom JS_thenable resolved a promise using thenable support rather than builtin methods
custom JS_thenable_proto resolved a promise using thenable on prototype
custom JS_thenable_standard_proto resolved a promise using thenable on a standard prototype
custom JS_legacy_lang_subtag uses a 5-to-8-character language subtag in Intl.Locale constructor
custom JS_ic_stub_too_large tried to create an IC stub that was too large
custom JS_ic_stub_oom OOMed while creating IC stub
custom JS_errorstack_getter called error.stack getter
custom JS_errorstack_getter_no_errordata called error.stack getter on object without ErrorData internal slot
custom JS_errorstack_setter called error.stack setter
custom JS_errorstack_setter_nonstring called error.stack setter with non-string input
custom JS_errorstack_setter_no_errordata called error.stack setter on object without ErrorData internal slot
custom JS_dateparse called Date.parse
custom JS_dateparse_impl_def call to Date.parse used implementation defined behaviour
// Console API
method console.assert
method console.clear
method console.count
method console.countReset
method console.debug
method console.error
method console.info
method console.log
method console.table
method console.trace
method console.warn
method console.dir
method console.dirxml
method console.group
method console.groupCollapsed
method console.groupEnd
method console.time
method console.timeLog
method console.timeEnd
method console.exception
method console.timeStamp
method console.profile
method console.profileEnd
// CookieStore API
method CookieStore.get
method CookieStore.getAll
method CookieStore.set
method CookieStore.delete
// document.open information
custom DocumentOpen calls document.open in a way that creates a new Window object
// HTMLDocument named getter
custom HTMLDocumentNamedGetterHit calls to the named getter on HTMLDocument that find something via the name lookup
custom FilteredCrossOriginIFrame cross-origin <iframe> within a CSS/SVG filter
// Custom Elements
method CustomElementRegistry.define
custom CustomizedBuiltin registers a customized built-in element
// XSLT
custom XSLStylesheet uses an XSL Stylesheet
method XSLTProcessor.constructor
// Shadow DOM
method Element.attachShadow
// Non-standard capture methods
method Element.setCapture
method Element.releaseCapture
// Pointer Capture
method Element.setPointerCapture
method Element.releasePointerCapture
// Media Device Access
method MediaDevices.enumerateDevices
custom EnumerateDevicesInsec calls MediaDevices.enumerateDevices from an insecure context
custom EnumerateDevicesUnfocused calls MediaDevices.enumerateDevices from a unfocused document
method MediaDevices.getUserMedia
method Navigator.mozGetUserMedia
custom GetUserMediaUnfocused calls MediaDevices.getUserMedia from an unfocused document
custom GetUserMediaInsec calls MediaDevices.getUserMedia from an insecure context
custom MozGetUserMediaInsec calls Navigator.mozGetUserMedia from an insecure context
method MediaDevices.getDisplayMedia
// Non-standard Messaging Layer Security
method MLS.stateDelete
method MLS.stateDeleteGroup
method MLS.generateSignatureKeypair
method MLS.generateCredentialBasic
method MLS.generateKeyPackage
method MLS.groupCreate
method MLS.groupJoin
method MLS.groupAdd
method MLS.groupProposeAdd
method MLS.groupRemove
method MLS.groupProposeRemove
method MLS.groupClose
method MLS.groupMembers
method MLS.receive
method MLS.send
method MLS.deriveExporter
// Non-standard Document.mozSetImageElement.
method Document.mozSetImageElement
// Non-standard Window.DOMMouseScroll and MozMousePixelScroll
custom ondommousescroll sets DOMMouseScroll event listener
custom onmozmousepixelscroll sets MozMousePixelScroll event listener
custom PercentageStrokeWidthInSVG whether percentage stroke-width is used in SVG elements (excluding <text>)
custom PercentageStrokeWidthInSVGText whether percentage stroke-width is used in SVG <text>
// Missing-property use counters. We claim these are "method" use
// counters, because we don't need a separate description string for
// them and we only need one use counter, not a getter/setter pair.
method HTMLDocument.caretRangeFromPoint
method HTMLDocument.exitPictureInPicture
method HTMLDocument.featurePolicy
method HTMLDocument.onbeforecopy
method HTMLDocument.onbeforecut
method HTMLDocument.onbeforepaste
method HTMLDocument.oncancel
method HTMLDocument.onfreeze
method HTMLDocument.onmousewheel
method HTMLDocument.onresume
method HTMLDocument.onsearch
method HTMLDocument.onwebkitfullscreenchange
method HTMLDocument.onwebkitfullscreenerror
method HTMLDocument.pictureInPictureElement
method HTMLDocument.pictureInPictureEnabled
method HTMLDocument.registerElement
method HTMLDocument.wasDiscarded
method HTMLDocument.webkitCancelFullScreen
method HTMLDocument.webkitCurrentFullScreenElement
method HTMLDocument.webkitExitFullscreen
method HTMLDocument.webkitFullscreenElement
method HTMLDocument.webkitFullscreenEnabled
method HTMLDocument.webkitHidden
method HTMLDocument.webkitIsFullScreen
method HTMLDocument.webkitVisibilityState
method HTMLDocument.xmlEncoding
method HTMLDocument.xmlStandalone
method HTMLDocument.xmlVersion
method Location.ancestorOrigins
method Window.AbsoluteOrientationSensor
method Window.Accelerometer
method Window.BackgroundFetchManager
method Window.BackgroundFetchRecord
method Window.BackgroundFetchRegistration
method Window.BeforeInstallPromptEvent
method Window.Bluetooth
method Window.BluetoothCharacteristicProperties
method Window.BluetoothDevice
method Window.BluetoothRemoteGATTCharacteristic
method Window.BluetoothRemoteGATTDescriptor
method Window.BluetoothRemoteGATTServer
method Window.BluetoothRemoteGATTService
method Window.BluetoothUUID
method Window.CanvasCaptureMediaStreamTrack
method Window.chrome
method Window.ClipboardItem
method Window.CSSImageValue
method Window.CSSKeywordValue
method Window.CSSMathClamp
method Window.CSSMathInvert
method Window.CSSMathMax
method Window.CSSMathMin
method Window.CSSMathNegate
method Window.CSSMathProduct
method Window.CSSMathSum
method Window.CSSMathValue
method Window.CSSMatrixComponent
method Window.CSSNumericArray
method Window.CSSNumericValue
method Window.CSSPerspective
method Window.CSSPositionValue
method Window.CSSPropertyRule
method Window.CSSRotate
method Window.CSSScale
method Window.CSSSkew
method Window.CSSSkewX
method Window.CSSSkewY
method Window.CSSStyleValue
method Window.CSSTransformComponent
method Window.CSSTransformValue
method Window.CSSTranslate
method Window.CSSUnitValue
method Window.CSSUnparsedValue
method Window.CSSVariableReferenceValue
method Window.defaultStatus
// See comments in Window.webidl about why this is disabled.
//method Window.defaultstatus
method Window.DeviceMotionEventAcceleration
method Window.DeviceMotionEventRotationRate
method Window.DOMError
method Window.EncodedVideoChunk
method Window.EnterPictureInPictureEvent
method Window.External
method Window.FederatedCredential
method Window.Gyroscope
method Window.HTMLContentElement
method Window.HTMLShadowElement
method Window.ImageCapture
method Window.InputDeviceCapabilities
method Window.InputDeviceInfo
method Window.Keyboard
method Window.KeyboardLayoutMap
method Window.LinearAccelerationSensor
method Window.MediaSettingsRange
method Window.MIDIAccess
method Window.MIDIConnectionEvent
method Window.MIDIInput
method Window.MIDIInputMap
method Window.MIDIMessageEvent
method Window.MIDIOutput
method Window.MIDIOutputMap
method Window.MIDIPort
method Window.NetworkInformation
method Window.offscreenBuffering
method Window.onbeforeinstallprompt
method Window.oncancel
method Window.onmousewheel
method Window.onorientationchange
method Window.onsearch
method Window.onselectionchange
method Window.openDatabase
method Window.orientation
method Window.OrientationSensor
method Window.OverconstrainedError
method Window.PasswordCredential
method Window.PaymentAddress
method Window.PaymentInstruments
method Window.PaymentManager
method Window.PaymentMethodChangeEvent
method Window.PaymentRequest
method Window.PaymentRequestUpdateEvent
method Window.PaymentResponse
method Window.PerformanceLongTaskTiming
method Window.PhotoCapabilities
method Window.PictureInPictureEvent
method Window.PictureInPictureWindow
method Window.Presentation
method Window.PresentationAvailability
method Window.PresentationConnection
method Window.PresentationConnectionAvailableEvent
method Window.PresentationConnectionCloseEvent
method Window.PresentationConnectionList
method Window.PresentationReceiver
method Window.PresentationRequest
method Window.RelativeOrientationSensor
method Window.RemotePlayback
method Window.Report
method Window.ReportBody
method Window.ReportingObserver
method Window.RTCError
method Window.RTCErrorEvent
method Window.RTCIceTransport
method Window.RTCPeerConnectionIceErrorEvent
method Window.Sensor
method Window.SensorErrorEvent
method Window.SpeechRecognitionAlternative
method Window.SpeechRecognitionResult
method Window.SpeechRecognitionResultList
method Window.styleMedia
method Window.StylePropertyMap
method Window.StylePropertyMapReadOnly
method Window.SVGDiscardElement
method Window.SyncManager
method Window.TaskAttributionTiming
method Window.TextEvent
method Window.Touch
method Window.TouchEvent
method Window.TouchList
method Window.USB
method Window.USBAlternateInterface
method Window.USBConfiguration
method Window.USBConnectionEvent
method Window.USBDevice
method Window.USBEndpoint
method Window.USBInterface
method Window.USBInTransferResult
method Window.USBIsochronousInTransferPacket
method Window.USBIsochronousInTransferResult
method Window.USBIsochronousOutTransferPacket
method Window.USBIsochronousOutTransferResult
method Window.USBOutTransferResult
method Window.UserActivation
method Window.VideoColorSpace
method Window.VideoDecoder
method Window.VideoEncoder
method Window.VideoFrame
method Window.WakeLock
method Window.WakeLockSentinel
method Window.webkitCancelAnimationFrame
method Window.webkitMediaStream
method Window.WebKitMutationObserver
method Window.webkitRequestAnimationFrame
method Window.webkitRequestFileSystem
method Window.webkitResolveLocalFileSystemURL
method Window.webkitRTCPeerConnection
method Window.webkitSpeechGrammar
method Window.webkitSpeechGrammarList
method Window.webkitSpeechRecognition
method Window.webkitSpeechRecognitionError
method Window.webkitSpeechRecognitionEvent
method Window.webkitStorageInfo
// Gecko-specific command usage of `Document.execCommand`
custom DocumentExecCommandContentReadOnly calls execCommand with contentReadOnly
// Methods used in frameworks to create DOM from strings
method DOMParser.parseFromString
method Range.createContextualFragment
// Gecko-specific command usage of `Document.queryCommandState` or `Document.queryCommandValue`
custom DocumentQueryCommandStateOrValueContentReadOnly calls queryCommandState or queryCommandValue with contentReadOnly
custom DocumentQueryCommandStateOrValueInsertBrOnReturn calls queryCommandState or queryCommandValue with insertBrOnReturn
// Gecko-specific command usage of `Document.queryCommandSupported` or `Document.queryCommandEnabled`
custom DocumentQueryCommandSupportedOrEnabledContentReadOnly calls queryCommandSupported or queryCommandEnabled with contentReadOnly
custom DocumentQueryCommandSupportedOrEnabledInsertBrOnReturn calls queryCommandSupported or queryCommandEnabled with insertBrOnReturn
// SVG filters
custom feBlend uses the feBlend SVG filter.
custom feColorMatrix uses the feColorMatrix SVG filter.
custom feComponentTransfer uses the feComponentTransfer SVG filter.
custom feComposite uses the feComposite SVG filter.
custom feConvolveMatrix uses the feConvolveMatrix SVG filter.
custom feDiffuseLighting uses the feDiffuseLighting SVG filter.
custom feDisplacementMap uses the feDisplacementMap SVG filter.
custom feFlood uses the feFlood SVG filter.
custom feGaussianBlur uses the feGaussianBlur SVG filter.
custom feImage uses the feImage SVG filter.
custom feMerge uses the feMerge SVG filter.
custom feMorphology uses the feMorphology SVG filter.
custom feOffset uses the feOffset SVG filter.
custom feSpecularLighting uses the feSpecularLighting SVG filter.
custom feTile uses the feTile SVG filter.
custom feTurbulence uses the feTurbulence SVG filter.
custom WrFilterFallback triggers the blob fallback for an SVG filter.
// Sanitizer API
method Sanitizer.constructor
method Sanitizer.sanitize
method Element.setHTML
// Features that might be deprecated in the future
custom WindowOpenEmptyUrl calls window.open with an empty url argument
// Unsupported web APIs in Private Browsing Mode
custom PrivateBrowsingIDBFactoryOpen calls indexedDB.open in Private Browsing Mode
custom PrivateBrowsingIDBFactoryDeleteDatabase calls indexedDB.deleteDatabase in Private Browsing Mode
custom PrivateBrowsingCachesMatch calls caches.match in Private Browsing Mode
custom PrivateBrowsingCachesHas calls caches.has in Private Browsing Mode
custom PrivateBrowsingCachesOpen calls caches.open in Private Browsing Mode
custom PrivateBrowsingCachesDelete calls caches.delete in Private Browsing Mode
custom PrivateBrowsingCachesKeys calls caches.keys in Private Browsing Mode
custom PrivateBrowsingNavigatorServiceWorker accesses navigator.serviceWorker in Private Browsing Mode
// Mechanism for rewriting old YouTube flash embeds to use HTML5 video
custom YouTubeFlashEmbed in <object> or <embed>
method Scheduler.postTask
method HTMLDialogElement.show
// Use Counters for HTTPS Features like Mixed-Content-Blocking, HTTPS-First ...
custom MixedContentUpgradedImageSuccess includes a mixed content img element that loads.
custom MixedContentUpgradedImageFailure includes a mixed content img element that does not load.
custom MixedContentUpgradedVideoSuccess includes a mixed content video element that loads.
custom MixedContentUpgradedVideoFailure includes a mixed content video element that does not laod.
custom MixedContentUpgradedAudioSuccess includes a mixed content audio element that loads.
custom MixedContentUpgradedAudioFailure includes a mixed content audio element that does not load.
// Counterparts for when we do not enable upgrading
custom MixedContentNotUpgradedImageSuccess includes a mixed content img element that loads.
custom MixedContentNotUpgradedImageFailure includes a mixed content img element that does not load.
custom MixedContentNotUpgradedVideoSuccess includes a mixed content video element that loads.
custom MixedContentNotUpgradedVideoFailure includes a mixed content video element that does not laod.
custom MixedContentNotUpgradedAudioSuccess includes a mixed content audio element that loads.
custom MixedContentNotUpgradedAudioFailure includes a mixed content audio element that does not load.
custom ComponentsShimResolved resolves the components shim.
custom SectioningH1WithNoFontSizeOrMargins found sectioned h1 element with no font-size or no margins
// NOTE: You might need a data collection review if you are adding
// a custom use counter. And for WebIDL methods or attributes,
// deprecated operations, or CSS properties: you almost certainly
// don't need a data collection review.