473 lines
18 KiB
Text
473 lines
18 KiB
Text
// 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.
|
|
// https://firefox-source-docs.mozilla.org/dom/use-counters.html#data-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
|
|
|
|
// 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_optimizeArraySpecies_fuse has modified builtin Array objects such that the ArraySpecies fuse is popped
|
|
custom JS_optimizePromiseLookup_fuse has modified builtin Promise objects such that the PromiseLookup 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_thenable_object_proto resolved a promise using thenable on a realms Object.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
|
|
custom JS_regexp_symbol_protocol_on_primitive passed a primitive with a custom implementation of the regexp protocol symbols to one of the String methods that accept a regexp
|
|
|
|
// 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
|
|
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
|
|
|
|
// Web Animations
|
|
method Animation.commitStyles
|
|
custom CommitStylesNonFillingFinalValue calls commitStyles and its result differs depending on whether the endpoint-inclusive pref is enabled or not
|
|
|
|
// 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
|
|
|
|
custom TextDirectivePages used text fragments
|
|
custom InvalidTextDirectives had a text fragment that could not be found after loading has finished
|
|
custom TextDirectiveNotCreated has not succeeded in creating a text fragment
|
|
|
|
custom MathMLUsed has used MathML
|
|
|
|
// 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.
|
|
// https://firefox-source-docs.mozilla.org/dom/use-counters.html#data-review
|