blob: d4bcce96a847127817dd8d5f57b9ff4c27f2b8fe [file] [log] [blame]
kenobi85339df82015-02-13 00:15:251// Copyright (c) 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5var goog = {};
6goog.async = {};
7
8/**
kenobi70c58002015-03-11 14:51:379 * @constructor
kenobi85339df82015-02-13 00:15:2510 * @template VALUE
11 */
12goog.async.Deferred;
13
14/**
15 * @param {!function(this:T,VALUE):?} cb
16 * @param {T=} opt_scope
17 * @return {!goog.async.Deferred}
18 * @template T
19 */
20goog.async.Deferred.prototype.addCallback;
21
kenobi70c58002015-03-11 14:51:3722/** @param {VALUE=} opt_result */
kenobif7dd25c2015-03-10 17:02:5123goog.async.Deferred.prototype.callback;
24
25/**
kenobi70c58002015-03-11 14:51:3726 * @param {?(function(this:THIS, VALUE):
kenobif7dd25c2015-03-10 17:02:5127 * (RESULT|IThenable<RESULT>|Thenable))=} opt_onFulfilled
28 * @param {?(function(this:THIS, *): *)=} opt_onRejected
29 * @param {THIS=} opt_context
kenobi70c58002015-03-11 14:51:3730 * @return {!Promise<RESULT>}
kenobif7dd25c2015-03-10 17:02:5131 * @template RESULT,THIS
32 */
33goog.async.Deferred.prototype.then;
34
kenobi85339df82015-02-13 00:15:2535var analytics = {};
36
37/** @typedef {string} */
38analytics.HitType;
39
40/** @enum {analytics.HitType} */
41analytics.HitTypes = {
42 APPVIEW: 'appview',
43 EVENT: 'event',
44 SOCIAL: 'social',
45 TRANSACTION: 'transaction',
46 ITEM: 'item',
47 TIMING: 'timing',
48 EXCEPTION: 'exception'
49};
50
51/**
52 * @typedef {{
53 * id: string,
54 * name: string,
55 * valueType: analytics.ValueType,
56 * maxLength: (number|undefined),
57 * defaultValue: (string|undefined)
58 * }}
59 */
60analytics.Parameter;
61
62/** @typedef {string|number|boolean} */
63analytics.Value;
64
65/** @typedef {string} */
66analytics.ValueType;
67
68
69/**
70 * @param {string} appName
71 * @param {string=} opt_appVersion
72 * @return {!analytics.GoogleAnalytics}
73 */
74analytics.getService;
75
76
77/** @interface */
78analytics.GoogleAnalytics;
79
80/**
81 * @param {string} trackingId
82 * @return {!analytics.Tracker}
83 */
84analytics.GoogleAnalytics.prototype.getTracker;
85
86/** @return {!goog.async.Deferred.<!analytics.Config>} */
87analytics.GoogleAnalytics.prototype.getConfig;
88
89
90/** @interface */
91analytics.Tracker;
92
93/** @typedef {function(!analytics.Tracker.Hit)} */
94analytics.Tracker.Filter;
95
96/**
97 * @param {!analytics.HitType|!analytics.EventBuilder} hitType
98 * @param {(!analytics.ParameterMap|
99 * !Object.<string, !analytics.Value>)=} opt_extraParams
100 * @return {!goog.async.Deferred}
101 */
102analytics.Tracker.prototype.send;
103
104/**
105 * @param {string} description
106 * @return {!goog.async.Deferred}
107 */
108analytics.Tracker.prototype.sendAppView;
109
110/**
111 * @param {string} category
112 * @param {string} action
113 * @param {string=} opt_label
114 * @param {number=} opt_value
115 * @return {!goog.async.Deferred}
116 */
117analytics.Tracker.prototype.sendEvent;
118
119/**
120 * @param {string} network Specifies the social network, for example Facebook
121 * or Google Plus.
122 * @param {string} action Specifies the social interaction action.
123 * For example on Google Plus when a user clicks the +1 button,
124 * the social action is 'plus'.
125 * @param {string} target Specifies the target of a social interaction.
126 * This value is typically a URL but can be any text.
127 * @return {!goog.async.Deferred}
128 */
129analytics.Tracker.prototype.sendSocial;
130
131/**
132 * @param {string=} opt_description Specifies the description of an exception.
133 * @param {boolean=} opt_fatal Was the exception fatal.
134 * @return {!goog.async.Deferred}
135 */
136analytics.Tracker.prototype.sendException;
137
138/**
139 * @param {string} category Specifies the category of the timing.
140 * @param {string} variable Specifies the variable name of the timing.
141 * @param {number} value Specifies the value of the timing.
142 * @param {string=} opt_label Specifies the optional label of the timing.
143 * @param {number=} opt_sampleRate
144 * @return {!goog.async.Deferred}
145 */
146analytics.Tracker.prototype.sendTiming;
147
148analytics.Tracker.prototype.forceSessionStart;
149
150/**
151 * @param {string} category
152 * @param {string} variable
153 * @param {string=} opt_label
154 * @param {number=} opt_sampleRate
155 * @return {!analytics.Tracker.Timing}
156 */
157analytics.Tracker.prototype.startTiming;
158
159/** @interface */
160analytics.Tracker.Timing;
161
162/** @return {!goog.async.Deferred} */
163analytics.Tracker.Timing.prototype.send;
164
165/** @param {!analytics.Tracker.Filter} filter */
166analytics.Tracker.prototype.addFilter;
167
168/** @interface */
169analytics.Tracker.Hit;
170
171/** @return {!analytics.HitType} */
172analytics.Tracker.Hit.prototype.getHitType;
173
174/** @return {!analytics.ParameterMap} */
175analytics.Tracker.Hit.prototype.getParameters;
176
177analytics.Tracker.Hit.prototype.cancel;
178
179
180/** @interface */
181analytics.Config = function() {};
182
183/** @param {boolean} permitted */
184analytics.Config.prototype.setTrackingPermitted;
185
186/** @return {boolean} */
187analytics.Config.prototype.isTrackingPermitted;
188
189/** @param {number} sampleRate */
190analytics.Config.prototype.setSampleRate;
191
kenobif7dd25c2015-03-10 17:02:51192/** @return {!goog.async.Deferred} Settles once the id has been reset. */
193analytics.Config.prototype.resetUserId;
194
kenobi85339df82015-02-13 00:15:25195
196/** @interface */
197analytics.ParameterMap;
198
199/**
200 * @typedef {{
201 * key: !analytics.Parameter,
202 * value: !analytics.Value
203 * }}
204 */
205analytics.ParameterMap.Entry;
206
207/**
208 * @param {!analytics.Parameter} param
209 * @param {!analytics.Value} value
210 */
211analytics.ParameterMap.prototype.set;
212
213/**
214 * @param {!analytics.Parameter} param
215 * @return {?analytics.Value}
216 */
217analytics.ParameterMap.prototype.get;
218
219/** @param {!analytics.Parameter} param */
220analytics.ParameterMap.prototype.remove;
221
222/** @return {!Object.<string, analytics.Value>} */
223analytics.ParameterMap.prototype.toObject;
224
225
226/** @interface */
227analytics.EventBuilder;
228
229/** @typedef {{ index: number, value: string }} */
230analytics.EventBuilder.Dimension;
231
232/** @typedef {{ index: number, value: number }} */
233analytics.EventBuilder.Metric;
234
235/** @return {!analytics.EventBuilder} */
236analytics.EventBuilder.builder;
237
238/**
239 * @param {string} category
240 * @return {!analytics.EventBuilder}
241 */
242analytics.EventBuilder.prototype.category;
243
244/**
245 * @param {string} action
246 * @return {!analytics.EventBuilder}
247 */
248analytics.EventBuilder.prototype.action;
249
250/**
251 * @param {string} label
252 * @return {!analytics.EventBuilder}
253 */
254analytics.EventBuilder.prototype.label;
255
256/**
257 * @param {number} value
258 * @return {!analytics.EventBuilder}
259 */
260analytics.EventBuilder.prototype.value;
261
262/**
263 * @param {!analytics.EventBuilder.Dimension} dimension
264 * @return {!analytics.EventBuilder}
265 */
266analytics.EventBuilder.prototype.dimension;
267
268/**
269 * @param {!analytics.EventBuilder.Metric} metric
270 * @return {!analytics.EventBuilder}
271 */
272analytics.EventBuilder.prototype.metric;
273
274/**
275 * @param {!analytics.Tracker} tracker
276 * @return {!goog.async.Deferred}
277 */
278analytics.EventBuilder.prototype.send;
279
280/** @param {!analytics.ParameterMap} parameters */
281analytics.EventBuilder.prototype.collect;