summaryrefslogtreecommitdiffstats
path: root/dom/base/UseCounters.conf
blob: f00105a1ddb06a7586b92f2c8c01a58070831b14 (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
// 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

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

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

method Scheduler.postTask

// NOTE: Adding use counters requires data review, see
// https://wiki.mozilla.org/Data_Collection