UseCounters.conf (18933B)
1 // This Source Code Form is subject to the terms of the Mozilla Public 2 // License, v. 2.0. If a copy of the MPL was not distributed with this 3 // file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 5 // This file defines a list of use counters, which are things that can 6 // record usage of Web platform features and then report this information 7 // through Telemetry. 8 // 9 // The format of this file is very strict. Each line can be: 10 // 11 // (a) a blank line 12 // 13 // (b) a comment, which is a line that begins with "//" 14 // 15 // (c) one of three possible use counter declarations: 16 // 17 // method <IDL interface name>.<IDL operation name> 18 // attribute <IDL interface name>.<IDL attribute name> 19 // custom <any valid identifier> <description> 20 // 21 // The <description> for custom counters will be appended to "Whether a document " 22 // or "Whether a page ", so phrase it appropriately. For instance, "constructs a 23 // Foo object" or "calls Document.bar('some value')". It may contain any 24 // character (including whitespace). 25 // 26 // To actually cause use counters to be incremented, DOM methods 27 // and attributes must have a [UseCounter] extended attribute in 28 // the Web IDL file. 29 // 30 // Custom counters are incremented when 31 // SetUseCounter(eUseCounter_custom_MyName) is called on a Document object. 32 // 33 // You might reasonably ask why we have this file and we require 34 // annotating things with [UseCounter] in the relevant WebIDL file as 35 // well. Generating things from bindings codegen and ensuring all the 36 // dependencies were correct would have been rather difficult. 37 // 38 // NOTE: You might need a data collection review if you are adding 39 // a custom use counter. And for WebIDL methods or attributes, 40 // deprecated operations, or CSS properties: you almost certainly 41 // don't need a data collection review. 42 // https://firefox-source-docs.mozilla.org/dom/use-counters.html#data-review 43 44 method SVGSVGElement.getElementById 45 attribute SVGSVGElement.currentScale 46 47 // Push API 48 method PushManager.subscribe 49 method PushSubscription.unsubscribe 50 51 // window.sidebar 52 attribute Window.sidebar 53 54 // DataTransfer API (gecko-only methods) 55 method DataTransfer.addElement 56 attribute DataTransfer.mozItemCount 57 attribute DataTransfer.mozCursor 58 method DataTransfer.mozTypesAt 59 method DataTransfer.mozClearDataAt 60 method DataTransfer.mozSetDataAt 61 method DataTransfer.mozGetDataAt 62 attribute DataTransfer.mozUserCancelled 63 attribute DataTransfer.mozSourceNode 64 65 // JavaScript feature usage 66 custom JS_asmjs uses asm.js 67 custom JS_wasm uses WebAssembly 68 custom JS_use_asm has instantiated a script containing "use asm" either in the top level or a nested function 69 custom JS_wasm_legacy_exceptions uses WebAssembly legacy exception-handling 70 custom JS_isHTMLDDA_fuse has used the document.all getter (popping the EmulatesUndefined Fuse) 71 custom JS_optimizeGetIterator_fuse has modified any builtins such that the GetIterator fuse is popped 72 custom JS_optimizeArraySpecies_fuse has modified builtin Array objects such that the ArraySpecies fuse is popped 73 custom JS_optimizePromiseLookup_fuse has modified builtin Promise objects such that the PromiseLookup fuse is popped 74 custom JS_thenable resolved a promise using thenable support rather than builtin methods 75 custom JS_thenable_proto resolved a promise using thenable on prototype 76 custom JS_thenable_standard_proto resolved a promise using thenable on a standard prototype 77 custom JS_thenable_object_proto resolved a promise using thenable on a realms Object.prototype 78 custom JS_legacy_lang_subtag uses a 5-to-8-character language subtag in Intl.Locale constructor 79 custom JS_ic_stub_too_large tried to create an IC stub that was too large 80 custom JS_ic_stub_oom OOMed while creating IC stub 81 custom JS_dateparse called Date.parse 82 custom JS_dateparse_impl_def call to Date.parse used implementation defined behaviour 83 custom JS_large_oom_reported reported a large oom 84 custom JS_small_oom_reported reported a small oom 85 custom JS_large_oom_recovered recovered a large oom 86 custom JS_small_oom_recovered recovered a small oom 87 88 // Console API 89 method console.assert 90 method console.clear 91 method console.count 92 method console.countReset 93 method console.debug 94 method console.error 95 method console.info 96 method console.log 97 method console.table 98 method console.trace 99 method console.warn 100 method console.dir 101 method console.dirxml 102 method console.group 103 method console.groupCollapsed 104 method console.groupEnd 105 method console.time 106 method console.timeLog 107 method console.timeEnd 108 method console.exception 109 method console.timeStamp 110 method console.profile 111 method console.profileEnd 112 113 // CookieStore API 114 method CookieStore.get 115 method CookieStore.getAll 116 method CookieStore.set 117 method CookieStore.delete 118 119 // document.open information 120 custom DocumentOpen calls document.open in a way that creates a new Window object 121 122 // HTMLDocument named getter 123 custom HTMLDocumentNamedGetterHit calls to the named getter on HTMLDocument that find something via the name lookup 124 125 custom FilteredCrossOriginIFrame cross-origin <iframe> within a CSS/SVG filter 126 127 // Custom Elements 128 method CustomElementRegistry.define 129 custom CustomizedBuiltin registers a customized built-in element 130 131 // XSLT 132 custom XSLStylesheet uses an XSL Stylesheet 133 method XSLTProcessor.constructor 134 135 // Shadow DOM 136 method Element.attachShadow 137 138 // Non-standard capture methods 139 method Element.setCapture 140 method Element.releaseCapture 141 142 // Pointer Capture 143 method Element.setPointerCapture 144 method Element.releasePointerCapture 145 146 // Media Device Access 147 method MediaDevices.enumerateDevices 148 custom EnumerateDevicesInsec calls MediaDevices.enumerateDevices from an insecure context 149 custom EnumerateDevicesUnfocused calls MediaDevices.enumerateDevices from a unfocused document 150 method MediaDevices.getUserMedia 151 method Navigator.mozGetUserMedia 152 custom GetUserMediaUnfocused calls MediaDevices.getUserMedia from an unfocused document 153 custom GetUserMediaInsec calls MediaDevices.getUserMedia from an insecure context 154 method MediaDevices.getDisplayMedia 155 156 // Non-standard Messaging Layer Security 157 method MLS.stateDelete 158 method MLS.stateDeleteGroup 159 method MLS.generateSignatureKeypair 160 method MLS.generateCredentialBasic 161 method MLS.generateKeyPackage 162 method MLS.groupCreate 163 method MLS.groupJoin 164 method MLS.groupAdd 165 method MLS.groupProposeAdd 166 method MLS.groupRemove 167 method MLS.groupProposeRemove 168 method MLS.groupClose 169 method MLS.groupMembers 170 method MLS.receive 171 method MLS.send 172 method MLS.deriveExporter 173 174 // Non-standard Document.mozSetImageElement. 175 method Document.mozSetImageElement 176 177 // Non-standard Window.DOMMouseScroll and MozMousePixelScroll 178 custom ondommousescroll sets DOMMouseScroll event listener 179 custom onmozmousepixelscroll sets MozMousePixelScroll event listener 180 181 custom PercentageStrokeWidthInSVG whether percentage stroke-width is used in SVG elements (excluding <text>) 182 custom PercentageStrokeWidthInSVGText whether percentage stroke-width is used in SVG <text> 183 184 // Missing-property use counters. We claim these are "method" use 185 // counters, because we don't need a separate description string for 186 // them and we only need one use counter, not a getter/setter pair. 187 method HTMLDocument.caretRangeFromPoint 188 method HTMLDocument.exitPictureInPicture 189 method HTMLDocument.featurePolicy 190 method HTMLDocument.onbeforecopy 191 method HTMLDocument.onbeforecut 192 method HTMLDocument.onbeforepaste 193 method HTMLDocument.oncancel 194 method HTMLDocument.onfreeze 195 method HTMLDocument.onmousewheel 196 method HTMLDocument.onresume 197 method HTMLDocument.onsearch 198 method HTMLDocument.onwebkitfullscreenchange 199 method HTMLDocument.onwebkitfullscreenerror 200 method HTMLDocument.pictureInPictureElement 201 method HTMLDocument.pictureInPictureEnabled 202 method HTMLDocument.registerElement 203 method HTMLDocument.wasDiscarded 204 method HTMLDocument.webkitCancelFullScreen 205 method HTMLDocument.webkitCurrentFullScreenElement 206 method HTMLDocument.webkitExitFullscreen 207 method HTMLDocument.webkitFullscreenElement 208 method HTMLDocument.webkitFullscreenEnabled 209 method HTMLDocument.webkitHidden 210 method HTMLDocument.webkitIsFullScreen 211 method HTMLDocument.webkitVisibilityState 212 method HTMLDocument.xmlEncoding 213 method HTMLDocument.xmlStandalone 214 method HTMLDocument.xmlVersion 215 method Location.ancestorOrigins 216 method Window.AbsoluteOrientationSensor 217 method Window.Accelerometer 218 method Window.BackgroundFetchManager 219 method Window.BackgroundFetchRecord 220 method Window.BackgroundFetchRegistration 221 method Window.BeforeInstallPromptEvent 222 method Window.Bluetooth 223 method Window.BluetoothCharacteristicProperties 224 method Window.BluetoothDevice 225 method Window.BluetoothRemoteGATTCharacteristic 226 method Window.BluetoothRemoteGATTDescriptor 227 method Window.BluetoothRemoteGATTServer 228 method Window.BluetoothRemoteGATTService 229 method Window.BluetoothUUID 230 method Window.CanvasCaptureMediaStreamTrack 231 method Window.chrome 232 method Window.ClipboardItem 233 method Window.CSSImageValue 234 method Window.CSSKeywordValue 235 method Window.CSSMathClamp 236 method Window.CSSMathInvert 237 method Window.CSSMathMax 238 method Window.CSSMathMin 239 method Window.CSSMathNegate 240 method Window.CSSMathProduct 241 method Window.CSSMathSum 242 method Window.CSSMathValue 243 method Window.CSSMatrixComponent 244 method Window.CSSNumericArray 245 method Window.CSSNumericValue 246 method Window.CSSPerspective 247 method Window.CSSPositionValue 248 method Window.CSSPropertyRule 249 method Window.CSSRotate 250 method Window.CSSScale 251 method Window.CSSSkew 252 method Window.CSSSkewX 253 method Window.CSSSkewY 254 method Window.CSSStyleValue 255 method Window.CSSTransformComponent 256 method Window.CSSTransformValue 257 method Window.CSSTranslate 258 method Window.CSSUnitValue 259 method Window.CSSUnparsedValue 260 method Window.CSSVariableReferenceValue 261 method Window.defaultStatus 262 // See comments in Window.webidl about why this is disabled. 263 //method Window.defaultstatus 264 method Window.DeviceMotionEventAcceleration 265 method Window.DeviceMotionEventRotationRate 266 method Window.DOMError 267 method Window.EncodedVideoChunk 268 method Window.EnterPictureInPictureEvent 269 method Window.External 270 method Window.FederatedCredential 271 method Window.Gyroscope 272 method Window.HTMLContentElement 273 method Window.HTMLShadowElement 274 method Window.ImageCapture 275 method Window.InputDeviceCapabilities 276 method Window.InputDeviceInfo 277 method Window.Keyboard 278 method Window.KeyboardLayoutMap 279 method Window.LinearAccelerationSensor 280 method Window.MediaSettingsRange 281 method Window.MIDIAccess 282 method Window.MIDIConnectionEvent 283 method Window.MIDIInput 284 method Window.MIDIInputMap 285 method Window.MIDIMessageEvent 286 method Window.MIDIOutput 287 method Window.MIDIOutputMap 288 method Window.MIDIPort 289 method Window.NetworkInformation 290 method Window.offscreenBuffering 291 method Window.onbeforeinstallprompt 292 method Window.oncancel 293 method Window.onmousewheel 294 method Window.onorientationchange 295 method Window.onsearch 296 method Window.onselectionchange 297 method Window.openDatabase 298 method Window.orientation 299 method Window.OrientationSensor 300 method Window.OverconstrainedError 301 method Window.PasswordCredential 302 method Window.PaymentAddress 303 method Window.PaymentInstruments 304 method Window.PaymentManager 305 method Window.PaymentMethodChangeEvent 306 method Window.PaymentRequest 307 method Window.PaymentRequestUpdateEvent 308 method Window.PaymentResponse 309 method Window.PerformanceLongTaskTiming 310 method Window.PhotoCapabilities 311 method Window.PictureInPictureEvent 312 method Window.PictureInPictureWindow 313 method Window.Presentation 314 method Window.PresentationAvailability 315 method Window.PresentationConnection 316 method Window.PresentationConnectionAvailableEvent 317 method Window.PresentationConnectionCloseEvent 318 method Window.PresentationConnectionList 319 method Window.PresentationReceiver 320 method Window.PresentationRequest 321 method Window.RelativeOrientationSensor 322 method Window.RemotePlayback 323 method Window.Report 324 method Window.ReportBody 325 method Window.ReportingObserver 326 method Window.RTCError 327 method Window.RTCErrorEvent 328 method Window.RTCIceTransport 329 method Window.RTCPeerConnectionIceErrorEvent 330 method Window.Sensor 331 method Window.SensorErrorEvent 332 method Window.SpeechRecognitionAlternative 333 method Window.SpeechRecognitionResult 334 method Window.SpeechRecognitionResultList 335 method Window.styleMedia 336 method Window.StylePropertyMap 337 method Window.StylePropertyMapReadOnly 338 method Window.SVGDiscardElement 339 method Window.SyncManager 340 method Window.TaskAttributionTiming 341 method Window.TextEvent 342 method Window.Touch 343 method Window.TouchEvent 344 method Window.TouchList 345 method Window.USB 346 method Window.USBAlternateInterface 347 method Window.USBConfiguration 348 method Window.USBConnectionEvent 349 method Window.USBDevice 350 method Window.USBEndpoint 351 method Window.USBInterface 352 method Window.USBInTransferResult 353 method Window.USBIsochronousInTransferPacket 354 method Window.USBIsochronousInTransferResult 355 method Window.USBIsochronousOutTransferPacket 356 method Window.USBIsochronousOutTransferResult 357 method Window.USBOutTransferResult 358 method Window.UserActivation 359 method Window.VideoColorSpace 360 method Window.VideoDecoder 361 method Window.VideoEncoder 362 method Window.VideoFrame 363 method Window.WakeLock 364 method Window.WakeLockSentinel 365 method Window.webkitCancelAnimationFrame 366 method Window.webkitMediaStream 367 method Window.WebKitMutationObserver 368 method Window.webkitRequestAnimationFrame 369 method Window.webkitRequestFileSystem 370 method Window.webkitResolveLocalFileSystemURL 371 method Window.webkitRTCPeerConnection 372 method Window.webkitSpeechGrammar 373 method Window.webkitSpeechGrammarList 374 method Window.webkitSpeechRecognition 375 method Window.webkitSpeechRecognitionError 376 method Window.webkitSpeechRecognitionEvent 377 method Window.webkitStorageInfo 378 379 // Gecko-specific command usage of `Document.execCommand` 380 custom DocumentExecCommandContentReadOnly calls execCommand with contentReadOnly 381 382 // Methods used in frameworks to create DOM from strings 383 method DOMParser.parseFromString 384 method Range.createContextualFragment 385 386 // Gecko-specific command usage of `Document.queryCommandState` or `Document.queryCommandValue` 387 custom DocumentQueryCommandStateOrValueContentReadOnly calls queryCommandState or queryCommandValue with contentReadOnly 388 custom DocumentQueryCommandStateOrValueInsertBrOnReturn calls queryCommandState or queryCommandValue with insertBrOnReturn 389 390 // Gecko-specific command usage of `Document.queryCommandSupported` or `Document.queryCommandEnabled` 391 custom DocumentQueryCommandSupportedOrEnabledContentReadOnly calls queryCommandSupported or queryCommandEnabled with contentReadOnly 392 custom DocumentQueryCommandSupportedOrEnabledInsertBrOnReturn calls queryCommandSupported or queryCommandEnabled with insertBrOnReturn 393 394 // SVG filters 395 custom feBlend uses the feBlend SVG filter. 396 custom feColorMatrix uses the feColorMatrix SVG filter. 397 custom feComponentTransfer uses the feComponentTransfer SVG filter. 398 custom feComposite uses the feComposite SVG filter. 399 custom feConvolveMatrix uses the feConvolveMatrix SVG filter. 400 custom feDiffuseLighting uses the feDiffuseLighting SVG filter. 401 custom feDisplacementMap uses the feDisplacementMap SVG filter. 402 custom feFlood uses the feFlood SVG filter. 403 custom feGaussianBlur uses the feGaussianBlur SVG filter. 404 custom feImage uses the feImage SVG filter. 405 custom feMerge uses the feMerge SVG filter. 406 custom feMorphology uses the feMorphology SVG filter. 407 custom feOffset uses the feOffset SVG filter. 408 custom feSpecularLighting uses the feSpecularLighting SVG filter. 409 custom feTile uses the feTile SVG filter. 410 custom feTurbulence uses the feTurbulence SVG filter. 411 412 custom WrFilterFallback triggers the blob fallback for an SVG filter. 413 414 // WebGPU 415 custom WebgpuRequestAdapter requests a WebGPU adapter 416 custom WebgpuRenderOutput displays WebGPU rendering output 417 418 // Sanitizer API 419 method Sanitizer.constructor 420 method Sanitizer.sanitize 421 method Element.setHTML 422 423 // Features that might be deprecated in the future 424 custom WindowOpenEmptyUrl calls window.open with an empty url argument 425 426 // Unsupported web APIs in Private Browsing Mode 427 custom PrivateBrowsingIDBFactoryOpen calls indexedDB.open in Private Browsing Mode 428 custom PrivateBrowsingIDBFactoryDeleteDatabase calls indexedDB.deleteDatabase in Private Browsing Mode 429 custom PrivateBrowsingCachesMatch calls caches.match in Private Browsing Mode 430 custom PrivateBrowsingCachesHas calls caches.has in Private Browsing Mode 431 custom PrivateBrowsingCachesOpen calls caches.open in Private Browsing Mode 432 custom PrivateBrowsingCachesDelete calls caches.delete in Private Browsing Mode 433 custom PrivateBrowsingCachesKeys calls caches.keys in Private Browsing Mode 434 custom PrivateBrowsingNavigatorServiceWorker accesses navigator.serviceWorker in Private Browsing Mode 435 436 // Mechanism for rewriting old YouTube flash embeds to use HTML5 video 437 custom YouTubeFlashEmbed in <object> or <embed> 438 439 method Scheduler.postTask 440 441 method HTMLDialogElement.show 442 443 // Use Counters for HTTPS Features like Mixed-Content-Blocking, HTTPS-First ... 444 custom MixedContentUpgradedImageSuccess includes a mixed content img element that loads. 445 custom MixedContentUpgradedImageFailure includes a mixed content img element that does not load. 446 custom MixedContentUpgradedVideoSuccess includes a mixed content video element that loads. 447 custom MixedContentUpgradedVideoFailure includes a mixed content video element that does not laod. 448 custom MixedContentUpgradedAudioSuccess includes a mixed content audio element that loads. 449 custom MixedContentUpgradedAudioFailure includes a mixed content audio element that does not load. 450 // Counterparts for when we do not enable upgrading 451 custom MixedContentNotUpgradedImageSuccess includes a mixed content img element that loads. 452 custom MixedContentNotUpgradedImageFailure includes a mixed content img element that does not load. 453 custom MixedContentNotUpgradedVideoSuccess includes a mixed content video element that loads. 454 custom MixedContentNotUpgradedVideoFailure includes a mixed content video element that does not laod. 455 custom MixedContentNotUpgradedAudioSuccess includes a mixed content audio element that loads. 456 custom MixedContentNotUpgradedAudioFailure includes a mixed content audio element that does not load. 457 458 custom ComponentsShimResolved resolves the components shim. 459 460 custom TextDirectivePages used text fragments 461 custom InvalidTextDirectives had a text fragment that could not be found after loading has finished 462 custom TextDirectiveNotCreated has not succeeded in creating a text fragment 463 464 custom MathMLUsed has used MathML 465 466 // Dictionary members for Notifications API 467 // Those are not methods but it doesn't matter for the generated Glean entries. 468 method NotificationOptions.navigate 469 method NotificationOptions.image 470 method NotificationOptions.badge 471 method NotificationOptions.vibrate 472 method NotificationOptions.timestamp 473 method NotificationOptions.renotify 474 method NotificationOptions.requireInteraction 475 method NotificationOptions.actions 476 477 // NOTE: You might need a data collection review if you are adding 478 // a custom use counter. And for WebIDL methods or attributes, 479 // deprecated operations, or CSS properties: you almost certainly 480 // don't need a data collection review. 481 // https://firefox-source-docs.mozilla.org/dom/use-counters.html#data-review