This file is indexed.

/usr/share/idl/thunderbird/nsITelemetry.idl is in thunderbird-dev 1:24.4.0+build1-0ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
/* 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/. */

#include "nsISupports.idl"
#include "nsIFile.idl"

[scriptable,function, uuid(3d3b9075-5549-4244-9c08-b64fefa1dd60)]
interface nsIFetchTelemetryDataCallback : nsISupports
{
  void complete();
};

[scriptable, uuid(e70ba4cc-7ccd-41fe-a75c-e4042233a8cb)]
interface nsITelemetry : nsISupports
{
  /**
   * Histogram types:
   * HISTOGRAM_EXPONENTIAL - buckets increase exponentially
   * HISTOGRAM_LINEAR - buckets increase linearly
   * HISTOGRAM_BOOLEAN - For storing 0/1 values
   * HISTOGRAM_FLAG - For storing a single value; its count is always == 1.
   */
  const unsigned long HISTOGRAM_EXPONENTIAL = 0;
  const unsigned long HISTOGRAM_LINEAR = 1;
  const unsigned long HISTOGRAM_BOOLEAN = 2;
  const unsigned long HISTOGRAM_FLAG = 3;

  /*
   * An object containing a snapshot from all of the currently registered histograms.
   * { name1: {data1}, name2:{data2}...}
   * where data is consists of the following properties:
   *   min - Minimal bucket size
   *   max - Maximum bucket size
   *   histogram_type - HISTOGRAM_EXPONENTIAL, HISTOGRAM_LINEAR, or HISTOGRAM_BOOLEAN
   *   counts - array representing contents of the buckets in the histogram
   *   ranges -  an array with calculated bucket sizes
   *   sum - sum of the bucket contents
   *   static - true for histograms defined in TelemetryHistograms.h, false for ones defined with newHistogram
   */
  [implicit_jscontext]
  readonly attribute jsval histogramSnapshots;

  /**
   * The amount of time, in milliseconds, that the last session took
   * to shutdown.  Reads as 0 to indicate failure.
   */
  readonly attribute uint32_t lastShutdownDuration;

  /**
   * The number of failed profile lock attempts that have occurred prior to 
   * successfully locking the profile
   */
  readonly attribute uint32_t failedProfileLockCount;

  /*
   * An object containing information about slow SQL statements.
   *
   * {
   *   mainThread: { "sqlString1": [<hit count>, <total time>], "sqlString2": [...], ... },
   *   otherThreads: { "sqlString3": [<hit count>, <total time>], "sqlString4": [...], ... }
   * }
   *
   * where:
   *   mainThread: Slow statements that executed on the main thread
   *   otherThreads: Slow statements that executed on a non-main thread
   *   sqlString - String of the offending statement (see note)
   *   hit count - The number of times this statement required longer than the threshold time to execute
   *   total time - The sum of all execution times above the threshold time for this statement
   *
   * Note that dynamic SQL strings and SQL strings executed against addon DBs could contain private information.
   * This property represents such SQL as aggregate database-level stats and the sqlString contains the database
   * filename instead.
   */
  [implicit_jscontext]
  readonly attribute jsval slowSQL;

  /*
   * See slowSQL above.
   *
   * An object containing full strings of every slow SQL statement if toolkit.telemetry.debugSlowSql = true
   * The returned SQL strings may contain private information and should not be reported to Telemetry.
   */
  [implicit_jscontext]
  readonly attribute jsval debugSlowSQL;

  /**
   * A number representing the highest number of concurrent threads
   * reached during this session.
   */
  readonly attribute uint32_t maximalNumberOfConcurrentThreads;

  /*
   * An array of chrome hang reports. Each element is a hang report represented
   * as an object containing the hang duration, call stack PCs and information
   * about modules in memory.
   */
  [implicit_jscontext]
  readonly attribute jsval chromeHangs;

  /*
   * An object with two fields: memoryMap and stacks.
   * * memoryMap is a list of loaded libraries.
   * * stacks is a list of stacks. Each stack is a list of pairs of the form
   *   [moduleIndex, offset]. The moduleIndex is an index into the memoryMap and
   *   offset is an offset in the library at memoryMap[moduleIndex].
   * This format is used to make it easier to send the stacks to the
   * symbolication server.
   */
  [implicit_jscontext]
  readonly attribute jsval lateWrites;

  /**
   * An object whose properties are the names of histograms defined in
   * TelemetryHistograms.h and whose corresponding values are the textual
   * comments associated with said histograms.
   */
  [implicit_jscontext]
  readonly attribute jsval registeredHistograms;

  /** 
   * Create and return a histogram.  Parameters:
   *
   * @param name Unique histogram name
   * @param min - Minimal bucket size
   * @param max - Maximum bucket size
   * @param bucket_count - number of buckets in the histogram.
   * @param type - HISTOGRAM_EXPONENTIAL, HISTOGRAM_LINEAR or HISTOGRAM_BOOLEAN
   * The returned object has the following functions:
   *   add(int) - Adds an int value to the appropriate bucket
   *   snapshot() - Returns a snapshot of the histogram with the same data fields as in histogramSnapshots()
   *   clear() - Zeros out the histogram's buckets and sum
   */
  [implicit_jscontext]
  jsval newHistogram(in ACString name, in uint32_t min, in uint32_t max, in uint32_t bucket_count, in unsigned long histogram_type);

  /**
   * Create a histogram using the current state of an existing histogram.  The
   * existing histogram must be registered in TelemetryHistograms.h.
   *
   * @param name Unique histogram name
   * @param existing_name Existing histogram name
   * The returned object has the same functions as a histogram returned from newHistogram.
   */
  [implicit_jscontext]
  jsval histogramFrom(in ACString name, in ACString existing_name);

  /**
   * Same as newHistogram above, but for histograms registered in TelemetryHistograms.h.
   *
   * @param id - unique identifier from TelemetryHistograms.h
   */
  [implicit_jscontext]
  jsval getHistogramById(in ACString id);

  /**
   * Set this to false to disable gathering of telemetry statistics.
   */
  attribute boolean canRecord;

  /**
   * A flag indicating whether Telemetry can submit official results.
   */
  readonly attribute boolean canSend;

  /** Addon telemetry hooks */

  /**
   * Register a histogram for an addon.  Throws an error if the
   * histogram name has been registered previously.
   *
   * @param addon_id - Unique ID of the addon
   * @param name - Unique histogram name
   * @param min - Minimal bucket size
   * @param max - Maximum bucket size
   * @param bucket_count - number of buckets in the histogram
   * @param histogram_type - HISTOGRAM_EXPONENTIAL, HISTOGRAM_LINEAR, or
   *        HISTOGRAM_BOOLEAN
   */
  void registerAddonHistogram(in ACString addon_id, in ACString name,
                              in uint32_t min, in uint32_t max,
                              in uint32_t bucket_count,
                              in unsigned long histogram_type);

  /**
   * Return a histogram previously registered via
   * registerAddonHistogram.  Throws an error if the id/name combo has
   * not been registered via registerAddonHistogram.
   *
   * @param addon_id - Unique ID of the addon
   * @param name - Registered histogram name
   *
   * The returned object has the same functions as a histogram returned
   * from newHistogram.
   */
  [implicit_jscontext]
  jsval getAddonHistogram(in ACString addon_id, in ACString name);

  /**
   * Delete all histograms associated with the given addon id.
   *
   * @param addon_id - Unique ID of the addon
   */
  void unregisterAddonHistograms(in ACString addon_id);

  /**
   * An object containing a snapshot from all of the currently
   * registered addon histograms.
   * { addon-id1 : data1, ... }
   *
   * where data is an object whose properties are the names of the
   * addon's histograms and whose corresponding values are as in
   * histogramSnapshots.
   */
  [implicit_jscontext]
  readonly attribute jsval addonHistogramSnapshots;

  /**
   * Read data from the previous run. After the callback is called, the last
   * shutdown time is available in lastShutdownDuration and any late
   * writes in lateWrites.
   */
  void asyncFetchTelemetryData(in nsIFetchTelemetryDataCallback aCallback);
};