summaryrefslogtreecommitdiffstats
path: root/dom/base/UseCounters.conf
blob: 67aa98817611924fc29496cc1dbd7fe17ea0668d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
// 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

// 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
custom JS_late_weekday parses a Date with day of week in an unexpected position
custom JS_wasm_legacy_exceptions uses WebAssembly legacy exception-handling

// 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 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 Clipboard.read
method Clipboard.readText
method Clipboard.write
method DataTransferItem.webkitGetAsEntry
method Document.caretRangeFromPoint
method Document.exitPictureInPicture
method Document.featurePolicy
method Document.onbeforecopy
method Document.onbeforecut
method Document.onbeforepaste
method Document.oncancel
method Document.onfreeze
method Document.onmousewheel
method Document.onresume
method Document.onsearch
method Document.onwebkitfullscreenchange
method Document.onwebkitfullscreenerror
method Document.pictureInPictureElement
method Document.pictureInPictureEnabled
method Document.registerElement
method Document.wasDiscarded
method Document.webkitCancelFullScreen
method Document.webkitCurrentFullScreenElement
method Document.webkitExitFullscreen
method Document.webkitFullscreenElement
method Document.webkitFullscreenEnabled
method Document.webkitHidden
method Document.webkitIsFullScreen
method Document.webkitVisibilityState
method Document.xmlEncoding
method Document.xmlStandalone
method Document.xmlVersion
method Element.computedStyleMap
method Element.onmousewheel
method Element.scrollIntoViewIfNeeded
method HTMLButtonElement.popoverTargetAction
method HTMLButtonElement.popoverTargetElement
method HTMLElement.attributeStyleMap
method HTMLElement.hidePopover
method HTMLElement.popover
method HTMLElement.showPopover
method HTMLElement.togglePopover
method HTMLIFrameElement.loading
method HTMLInputElement.capture
method HTMLInputElement.incremental
method HTMLInputElement.onsearch
method HTMLInputElement.popoverTargetAction
method HTMLInputElement.popoverTargetElement
method HTMLInputElement.webkitdirectory
method HTMLInputElement.webkitEntries
method HTMLMediaElement.disableRemotePlayback
method HTMLMediaElement.remote
method HTMLVideoElement.cancelVideoFrameCallback
method HTMLVideoElement.disablePictureInPicture
method HTMLVideoElement.onenterpictureinpicture
method HTMLVideoElement.onleavepictureinpicture
method HTMLVideoElement.playsInline
method HTMLVideoElement.requestPictureInPicture
method HTMLVideoElement.requestVideoFrameCallback
method ImageData.colorSpace
method Location.ancestorOrigins
method Navigator.canShare
method Navigator.clearAppBadge
method Navigator.setAppBadge
method Navigator.share
method Navigator.userActivation
method Navigator.wakeLock
method ShadowRoot.pictureInPictureElement
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
method WorkerNavigator.permissions

// 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.

// 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