// 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: Adding use counters requires data review, see // https://wiki.mozilla.org/Data_Collection method SVGSVGElement.getElementById attribute SVGSVGElement.currentScale // Push API method PushManager.subscribe method PushSubscription.unsubscribe // window.sidebar attribute Window.sidebar // AppCache API method OfflineResourceList.swapCache method OfflineResourceList.update attribute OfflineResourceList.status attribute OfflineResourceList.onchecking attribute OfflineResourceList.onerror attribute OfflineResourceList.onnoupdate attribute OfflineResourceList.ondownloading attribute OfflineResourceList.onprogress attribute OfflineResourceList.onupdateready attribute OfflineResourceList.oncached attribute OfflineResourceList.onobsolete // 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 // Marquee events custom onstart sets a <marquee> onstart event listener custom onbounce sets a <marquee> onbounce event listener custom onfinish sets a <marquee> onfinish event listener // 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 // 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 // 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 ContentUrlOnImageContent how often bug 1484928 can cause trouble. // 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 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.adoptedStyleSheets method HTMLDocument.caretRangeFromPoint method HTMLDocument.clear 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.onsecuritypolicyviolation 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 Window.AbsoluteOrientationSensor method Window.Accelerometer method Window.ApplicationCache method Window.ApplicationCacheErrorEvent method Window.Atomics method Window.AudioParamMap method Window.AudioWorklet method Window.AudioWorkletNode 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.clientInformation method Window.ClipboardItem method Window.CSSImageValue method Window.CSSKeywordValue 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.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.EnterPictureInPictureEvent method Window.External method Window.FederatedCredential method Window.Gyroscope method Window.HTMLContentElement method Window.HTMLDialogElement method Window.HTMLShadowElement method Window.ImageCapture method Window.InputDeviceCapabilities method Window.InputDeviceInfo method Window.Keyboard method Window.KeyboardLayoutMap method Window.LinearAccelerationSensor method Window.Lock method Window.LockManager method Window.MediaMetadata method Window.MediaSession 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.NavigationPreloadManager method Window.NetworkInformation method Window.offscreenBuffering method Window.OffscreenCanvas method Window.OffscreenCanvasRenderingContext2D method Window.onbeforeinstallprompt method Window.oncancel method Window.onmousewheel method Window.onsearch method Window.onselectionchange method Window.openDatabase 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.PerformanceEventTiming method Window.PerformanceLongTaskTiming method Window.PerformancePaintTiming method Window.PhotoCapabilities 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.ReportingObserver method Window.RTCDtlsTransport method Window.RTCError method Window.RTCErrorEvent method Window.RTCIceTransport method Window.RTCSctpTransport method Window.Sensor method Window.SensorErrorEvent method Window.SharedArrayBuffer method Window.styleMedia method Window.StylePropertyMap method Window.StylePropertyMapReadOnly method Window.SVGDiscardElement method Window.SyncManager method Window.TaskAttributionTiming method Window.TextDecoderStream method Window.TextEncoderStream method Window.TextEvent method Window.Touch method Window.TouchEvent method Window.TouchList method Window.TransformStream 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.visualViewport 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 method Window.Worklet method Window.WritableStream // Gecko-specific command usage of `Document.execCommand` custom DocumentExecCommandContentReadOnly calls execCommand with contentReadOnly // 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 method Scheduler.postTask // NOTE: Adding use counters requires data review, see // https://wiki.mozilla.org/Data_Collection