google-closure-compiler 20170806.0.0 → 20170910.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/compiler.jar CHANGED
Binary file
@@ -2299,7 +2299,7 @@ angular.$routeProvider.Params.prototype.controller;
2299
2299
  /** @type {string|undefined} */
2300
2300
  angular.$routeProvider.Params.prototype.controllerAs;
2301
2301
 
2302
- /** @type {string|undefined} */
2302
+ /** @type {string|function(!Object<string, string>): string|undefined} */
2303
2303
  angular.$routeProvider.Params.prototype.template;
2304
2304
 
2305
2305
  /** @type {string|!Object|function(!Object<string,string>=)} */
@@ -130,10 +130,11 @@ ExpectChain.prototype.below = function(value, opt_message) {};
130
130
  ExpectChain.prototype.most = function(value, opt_message) {};
131
131
 
132
132
  /**
133
- * @param {number} value
133
+ * @param {number} start
134
+ * @param {number} finish
134
135
  * @param {string=} opt_message
135
136
  */
136
- ExpectChain.prototype.within = function(value, opt_message) {};
137
+ ExpectChain.prototype.within = function(start, finish, opt_message) {};
137
138
 
138
139
  /**
139
140
  * @param {function(new: Object)} constructor
@@ -0,0 +1,669 @@
1
+ /*
2
+ * Copyright 2013 The Closure Compiler Authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ /**
18
+ * @fileoverview Definitions for globals in Chrome. This file describes the
19
+ * externs API for the chrome.* object when running in a normal browser
20
+ * context. For APIs available in Chrome Extensions, see chrome_extensions.js
21
+ * in this directory.
22
+ * @externs
23
+ */
24
+
25
+
26
+ /**
27
+ * namespace
28
+ * @const
29
+ */
30
+ var chrome = {};
31
+
32
+
33
+ /**
34
+ * @see http://developer.chrome.com/apps/runtime.html#type-Port
35
+ * @constructor
36
+ */
37
+ function Port() {}
38
+
39
+
40
+ /** @type {string} */
41
+ Port.prototype.name;
42
+
43
+
44
+ /** @type {!ChromeEvent} */
45
+ Port.prototype.onDisconnect;
46
+
47
+
48
+ /** @type {!ChromeEvent} */
49
+ Port.prototype.onMessage;
50
+
51
+
52
+ /** @type {!MessageSender|undefined} */
53
+ Port.prototype.sender;
54
+
55
+
56
+ /**
57
+ * @param {*} obj Message object.
58
+ * @return {undefined}
59
+ */
60
+ Port.prototype.postMessage = function(obj) {};
61
+
62
+
63
+ /** @return {undefined} */
64
+ Port.prototype.disconnect = function() {};
65
+
66
+
67
+ /**
68
+ * @see https://developer.chrome.com/extensions/events.html
69
+ * @constructor
70
+ * TODO(tbreisacher): Update *Listener methods to take {function()}
71
+ * instead of {!Function}. See discussion at go/ChromeEvent-TODO
72
+ */
73
+ function ChromeEvent() {}
74
+
75
+
76
+ /**
77
+ * @param {!Function} callback
78
+ * @return {undefined}
79
+ */
80
+ ChromeEvent.prototype.addListener = function(callback) {};
81
+
82
+
83
+ /**
84
+ * @param {!Function} callback
85
+ * @return {undefined}
86
+ */
87
+ ChromeEvent.prototype.removeListener = function(callback) {};
88
+
89
+
90
+ /**
91
+ * @param {!Function} callback
92
+ * @return {boolean}
93
+ */
94
+ ChromeEvent.prototype.hasListener = function(callback) {};
95
+
96
+
97
+ /** @return {boolean} */
98
+ ChromeEvent.prototype.hasListeners = function() {};
99
+
100
+ // TODO(tbreisacher): Add the addRules, getRules, and removeRules methods?
101
+
102
+
103
+
104
+ /**
105
+ * Event whose listeners take a string parameter.
106
+ * @constructor
107
+ */
108
+ function ChromeStringEvent() {}
109
+
110
+
111
+ /**
112
+ * @param {function(string): void} callback
113
+ * @return {undefined}
114
+ */
115
+ ChromeStringEvent.prototype.addListener = function(callback) {};
116
+
117
+
118
+ /**
119
+ * @param {function(string): void} callback
120
+ * @return {undefined}
121
+ */
122
+ ChromeStringEvent.prototype.removeListener = function(callback) {};
123
+
124
+
125
+ /**
126
+ * @param {function(string): void} callback
127
+ * @return {boolean}
128
+ */
129
+ ChromeStringEvent.prototype.hasListener = function(callback) {};
130
+
131
+
132
+ /** @return {boolean} */
133
+ ChromeStringEvent.prototype.hasListeners = function() {};
134
+
135
+
136
+
137
+ /**
138
+ * Event whose listeners take a boolean parameter.
139
+ * @constructor
140
+ */
141
+
142
+ function ChromeBooleanEvent() {}
143
+
144
+
145
+ /**
146
+ * @param {function(boolean): void} callback
147
+ * @return {undefined}
148
+ */
149
+ ChromeBooleanEvent.prototype.addListener = function(callback) {};
150
+
151
+
152
+ /**
153
+ * @param {function(boolean): void} callback
154
+ * @return {undefined}
155
+ */
156
+ ChromeBooleanEvent.prototype.removeListener = function(callback) {};
157
+
158
+
159
+ /**
160
+ * @param {function(boolean): void} callback
161
+ * @return {boolean}
162
+ */
163
+ ChromeBooleanEvent.prototype.hasListener = function(callback) {};
164
+
165
+
166
+ /**
167
+ * @return {boolean}
168
+ */
169
+ ChromeBooleanEvent.prototype.hasListeners = function() {};
170
+
171
+
172
+
173
+ /**
174
+ * Event whose listeners take a number parameter.
175
+ * @constructor
176
+ */
177
+
178
+ function ChromeNumberEvent() {}
179
+
180
+
181
+ /**
182
+ * @param {function(number): void} callback
183
+ * @return {undefined}
184
+ */
185
+ ChromeNumberEvent.prototype.addListener = function(callback) {};
186
+
187
+
188
+ /**
189
+ * @param {function(number): void} callback
190
+ * @return {undefined}
191
+ */
192
+ ChromeNumberEvent.prototype.removeListener = function(callback) {};
193
+
194
+
195
+ /**
196
+ * @param {function(number): void} callback
197
+ * @return {boolean}
198
+ */
199
+ ChromeNumberEvent.prototype.hasListener = function(callback) {};
200
+
201
+
202
+ /**
203
+ * @return {boolean}
204
+ */
205
+ ChromeNumberEvent.prototype.hasListeners = function() {};
206
+
207
+
208
+
209
+ /**
210
+ * Event whose listeners take an Object parameter.
211
+ * @constructor
212
+ */
213
+ function ChromeObjectEvent() {}
214
+
215
+
216
+ /**
217
+ * @param {function(!Object): void} callback Callback.
218
+ * @return {undefined}
219
+ */
220
+ ChromeObjectEvent.prototype.addListener = function(callback) {};
221
+
222
+
223
+ /**
224
+ * @param {function(!Object): void} callback Callback.
225
+ * @return {undefined}
226
+ */
227
+ ChromeObjectEvent.prototype.removeListener = function(callback) {};
228
+
229
+
230
+ /**
231
+ * @param {function(!Object): void} callback Callback.
232
+ * @return {boolean}
233
+ */
234
+ ChromeObjectEvent.prototype.hasListener = function(callback) {};
235
+
236
+
237
+ /**
238
+ * @return {boolean}
239
+ */
240
+ ChromeObjectEvent.prototype.hasListeners = function() {};
241
+
242
+
243
+
244
+ /**
245
+ * Event whose listeners take a string array parameter.
246
+ * @constructor
247
+ */
248
+ function ChromeStringArrayEvent() {}
249
+
250
+
251
+ /**
252
+ * @param {function(!Array<string>): void} callback
253
+ * @return {undefined}
254
+ */
255
+ ChromeStringArrayEvent.prototype.addListener = function(callback) {};
256
+
257
+
258
+ /**
259
+ * @param {function(!Array<string>): void} callback
260
+ * @return {undefined}
261
+ */
262
+ ChromeStringArrayEvent.prototype.removeListener = function(callback) {};
263
+
264
+
265
+ /**
266
+ * @param {function(!Array<string>): void} callback
267
+ * @return {boolean}
268
+ */
269
+ ChromeStringArrayEvent.prototype.hasListener = function(callback) {};
270
+
271
+
272
+ /** @return {boolean} */
273
+ ChromeStringArrayEvent.prototype.hasListeners = function() {};
274
+
275
+
276
+
277
+ /**
278
+ * Event whose listeners take two strings as parameters.
279
+ * @constructor
280
+ */
281
+ function ChromeStringStringEvent() {}
282
+
283
+
284
+ /**
285
+ * @param {function(string, string): void} callback
286
+ * @return {undefined}
287
+ */
288
+ ChromeStringStringEvent.prototype.addListener = function(callback) {};
289
+
290
+
291
+ /**
292
+ * @param {function(string, string): void} callback
293
+ * @return {undefined}
294
+ */
295
+ ChromeStringStringEvent.prototype.removeListener = function(callback) {};
296
+
297
+
298
+ /**
299
+ * @param {function(string, string): void} callback
300
+ * @return {boolean}
301
+ */
302
+ ChromeStringStringEvent.prototype.hasListener = function(callback) {};
303
+
304
+
305
+ /** @return {boolean} */
306
+ ChromeStringStringEvent.prototype.hasListeners = function() {};
307
+
308
+
309
+
310
+ /**
311
+ * @see http://developer.chrome.com/extensions/runtime.html#type-MessageSender
312
+ * @constructor
313
+ */
314
+ function MessageSender() {}
315
+
316
+
317
+ /** @type {!Tab|undefined} */
318
+ MessageSender.prototype.tab;
319
+
320
+
321
+ /** @type {number|undefined} */
322
+ MessageSender.prototype.frameId;
323
+
324
+
325
+ /** @type {string|undefined} */
326
+ MessageSender.prototype.id;
327
+
328
+
329
+ /** @type {string|undefined} */
330
+ MessageSender.prototype.url;
331
+
332
+
333
+ /** @type {string|undefined} */
334
+ MessageSender.prototype.tlsChannelId;
335
+
336
+
337
+ /**
338
+ * @enum {string}
339
+ * @see https://developer.chrome.com/extensions/tabs#type-MutedInfoReason
340
+ */
341
+ var MutedInfoReason = {
342
+ USER: '',
343
+ CAPTURE: '',
344
+ EXTENSION: '',
345
+ };
346
+
347
+
348
+ /**
349
+ * @see https://developer.chrome.com/extensions/tabs#type-MutedInfo
350
+ * @constructor
351
+ */
352
+ var MutedInfo = function() {};
353
+
354
+
355
+ /** @type {boolean} */
356
+ MutedInfo.prototype.muted;
357
+
358
+
359
+ /** @type {!MutedInfoReason|string|undefined} */
360
+ MutedInfo.prototype.reason;
361
+
362
+
363
+ /** @type {string|undefined} */
364
+ MutedInfo.prototype.extensionId;
365
+
366
+
367
+
368
+
369
+ /**
370
+ * @see https://developer.chrome.com/extensions/tabs#type-Tab
371
+ * @constructor
372
+ */
373
+ function Tab() {}
374
+
375
+
376
+ // TODO: Make this field optional once dependent projects have been updated.
377
+ /** @type {number} */
378
+ Tab.prototype.id;
379
+
380
+
381
+ /** @type {number} */
382
+ Tab.prototype.index;
383
+
384
+
385
+ /** @type {number} */
386
+ Tab.prototype.windowId;
387
+
388
+
389
+ // TODO: Make this field optional once dependent projects have been updated.
390
+ /** @type {number} */
391
+ Tab.prototype.openerTabId;
392
+
393
+
394
+ /** @type {boolean} */
395
+ Tab.prototype.highlighted;
396
+
397
+
398
+ /** @type {boolean} */
399
+ Tab.prototype.active;
400
+
401
+
402
+ /** @type {boolean} */
403
+ Tab.prototype.pinned;
404
+
405
+
406
+ /** @type {boolean|undefined} */
407
+ Tab.prototype.audible;
408
+
409
+
410
+ /** @type {boolean} */
411
+ Tab.prototype.discarded;
412
+
413
+
414
+ /** @type {boolean} */
415
+ Tab.prototype.autoDiscardable;
416
+
417
+
418
+ /** @type {!MutedInfo|undefined} */
419
+ Tab.prototype.mutedInfo;
420
+
421
+
422
+ // TODO: Make this field optional once dependent projects have been updated.
423
+ /** @type {string} */
424
+ Tab.prototype.url;
425
+
426
+
427
+ // TODO: Make this field optional once dependent projects have been updated.
428
+ /** @type {string} */
429
+ Tab.prototype.title;
430
+
431
+
432
+ // TODO: Make this field optional once dependent projects have been updated.
433
+ /** @type {string} */
434
+ Tab.prototype.favIconUrl;
435
+
436
+
437
+ // TODO: Make this field optional once dependent projects have been updated.
438
+ /** @type {string} */
439
+ Tab.prototype.status;
440
+
441
+
442
+ /** @type {boolean} */
443
+ Tab.prototype.incognito;
444
+
445
+
446
+ /** @type {number|undefined} */
447
+ Tab.prototype.width;
448
+
449
+
450
+ /** @type {number|undefined} */
451
+ Tab.prototype.height;
452
+
453
+
454
+ /** @type {string|undefined} */
455
+ Tab.prototype.sessionId;
456
+
457
+
458
+ /** @const */
459
+ chrome.app = {};
460
+
461
+ /**
462
+ * @see https://developer.chrome.com/webstore/inline_installation#already-installed
463
+ * @type {boolean}
464
+ */
465
+ chrome.app.isInstalled;
466
+
467
+ /**
468
+ * @const
469
+ * @see https://developer.chrome.com/apps/webstore
470
+ */
471
+ chrome.webstore = {};
472
+
473
+
474
+ /**
475
+ * @param {string|function()|function(string, string=)=}
476
+ * opt_urlOrSuccessCallbackOrFailureCallback Either the URL to install or
477
+ * the succcess callback taking no arg or the failure callback taking an
478
+ * error string arg.
479
+ * @param {function()|function(string, string=)=}
480
+ * opt_successCallbackOrFailureCallback Either the succcess callback taking
481
+ * no arg or the failure callback taking an error string arg.
482
+ * @param {function(string, string=)=} opt_failureCallback The failure callback.
483
+ * @return {undefined}
484
+ */
485
+ chrome.webstore.install = function(
486
+ opt_urlOrSuccessCallbackOrFailureCallback,
487
+ opt_successCallbackOrFailureCallback,
488
+ opt_failureCallback) {};
489
+
490
+
491
+ /** @type {!ChromeStringEvent} */
492
+ chrome.webstore.onInstallStageChanged;
493
+
494
+
495
+ /** @type {!ChromeNumberEvent} */
496
+ chrome.webstore.onDownloadProgress;
497
+
498
+
499
+ /**
500
+ * @see https://developer.chrome.com/extensions/runtime.html
501
+ * @const
502
+ */
503
+ chrome.runtime = {};
504
+
505
+
506
+ /** @type {!Object|undefined} */
507
+ chrome.runtime.lastError = {};
508
+
509
+
510
+ /** @type {string|undefined} */
511
+ chrome.runtime.lastError.message;
512
+
513
+
514
+ /**
515
+ * @param {string|!Object=} opt_extensionIdOrConnectInfo Either the
516
+ * extensionId to connect to, in which case connectInfo params can be
517
+ * passed in the next optional argument, or the connectInfo params.
518
+ * @param {!Object=} opt_connectInfo The connectInfo object,
519
+ * if arg1 was the extensionId to connect to.
520
+ * @return {!Port} New port.
521
+ */
522
+ chrome.runtime.connect = function(
523
+ opt_extensionIdOrConnectInfo, opt_connectInfo) {};
524
+
525
+
526
+ /**
527
+ * @param {string|*} extensionIdOrMessage Either the extensionId to send the
528
+ * message to, in which case the message is passed as the next arg, or the
529
+ * message itself.
530
+ * @param {(*|!Object|function(*): void)=} opt_messageOrOptsOrCallback
531
+ * One of:
532
+ * The message, if arg1 was the extensionId.
533
+ * The options for message sending, if arg1 was the message and this
534
+ * argument is not a function.
535
+ * The callback, if arg1 was the message and this argument is a function.
536
+ * @param {(!Object|function(*): void)=} opt_optsOrCallback
537
+ * Either the options for message sending, if arg2 was the message,
538
+ * or the callback.
539
+ * @param {function(*): void=} opt_callback The callback function which
540
+ * takes a JSON response object sent by the handler of the request.
541
+ * @return {undefined}
542
+ */
543
+ chrome.runtime.sendMessage = function(
544
+ extensionIdOrMessage, opt_messageOrOptsOrCallback, opt_optsOrCallback,
545
+ opt_callback) {};
546
+
547
+
548
+ /**
549
+ * Returns an object representing current load times. Note that the properties
550
+ * on the object do not change and the function must be called again to get
551
+ * up-to-date data.
552
+ *
553
+ * @return {!ChromeLoadTimes}
554
+ */
555
+ chrome.loadTimes = function() {};
556
+
557
+
558
+
559
+ /**
560
+ * The data object given by chrome.loadTimes().
561
+ * @constructor
562
+ */
563
+ function ChromeLoadTimes() {}
564
+
565
+
566
+ /** @type {number} */
567
+ ChromeLoadTimes.prototype.requestTime;
568
+
569
+
570
+ /** @type {number} */
571
+ ChromeLoadTimes.prototype.startLoadTime;
572
+
573
+
574
+ /** @type {number} */
575
+ ChromeLoadTimes.prototype.commitLoadTime;
576
+
577
+
578
+ /** @type {number} */
579
+ ChromeLoadTimes.prototype.finishDocumentLoadTime;
580
+
581
+
582
+ /** @type {number} */
583
+ ChromeLoadTimes.prototype.finishLoadTime;
584
+
585
+
586
+ /** @type {number} */
587
+ ChromeLoadTimes.prototype.firstPaintTime;
588
+
589
+
590
+ /** @type {number} */
591
+ ChromeLoadTimes.prototype.firstPaintAfterLoadTime;
592
+
593
+
594
+ /** @type {number} */
595
+ ChromeLoadTimes.prototype.navigationType;
596
+
597
+
598
+ /**
599
+ * True iff the resource was fetched over SPDY.
600
+ * @type {boolean}
601
+ */
602
+ ChromeLoadTimes.prototype.wasFetchedViaSpdy;
603
+
604
+
605
+ /** @type {boolean} */
606
+ ChromeLoadTimes.prototype.wasNpnNegotiated;
607
+
608
+
609
+ /** @type {string} */
610
+ ChromeLoadTimes.prototype.npnNegotiatedProtocol;
611
+
612
+
613
+ /** @type {boolean} */
614
+ ChromeLoadTimes.prototype.wasAlternateProtocolAvailable;
615
+
616
+
617
+ /** @type {string} */
618
+ ChromeLoadTimes.prototype.connectionInfo;
619
+
620
+
621
+ /**
622
+ * Returns an object containing timing information.
623
+ * @return {!ChromeCsiInfo}
624
+ */
625
+ chrome.csi = function() {};
626
+
627
+
628
+
629
+ /**
630
+ * The data object given by chrome.csi().
631
+ * @constructor
632
+ */
633
+ function ChromeCsiInfo() {}
634
+
635
+
636
+ /**
637
+ * Same as chrome.loadTimes().requestTime, if defined.
638
+ * Otherwise, gives the same value as chrome.loadTimes().startLoadTime.
639
+ * In milliseconds, truncated.
640
+ * @type {number}
641
+ */
642
+ ChromeCsiInfo.prototype.startE;
643
+
644
+
645
+ /**
646
+ * Same as chrome.loadTimes().finishDocumentLoadTime but in milliseconds and
647
+ * truncated.
648
+ * @type {number}
649
+ */
650
+ ChromeCsiInfo.prototype.onloadT;
651
+
652
+
653
+ /**
654
+ * The time since startE in milliseconds.
655
+ * @type {number}
656
+ */
657
+ ChromeCsiInfo.prototype.pageT;
658
+
659
+
660
+ /** @type {number} */
661
+ ChromeCsiInfo.prototype.tran;
662
+
663
+
664
+ /**
665
+ * @param {string|!ArrayBuffer|!Object} message
666
+ * @see https://developers.google.com/native-client/devguide/tutorial
667
+ * @return {undefined}
668
+ */
669
+ HTMLEmbedElement.prototype.postMessage = function(message) {};
@@ -2184,6 +2184,22 @@ chrome.copresence.onStatusUpdated;
2184
2184
  chrome.enterprise = {};
2185
2185
 
2186
2186
 
2187
+ /**
2188
+ * @constructor
2189
+ * deviceAttributes allows for reading device attributes.
2190
+ * @see https://developer.chrome.com/extensions/enterprise_deviceAttributes.
2191
+ */
2192
+ chrome.enterprise.deviceAttributes = function() {};
2193
+
2194
+
2195
+ /**
2196
+ * @param {function(string): void} callback Called with the device identifier
2197
+ * of the directory API when received.
2198
+ * @return {undefined}
2199
+ */
2200
+ chrome.enterprise.deviceAttributes.getDirectoryDeviceId = function(callback) {};
2201
+
2202
+
2187
2203
  /**
2188
2204
  * @constructor
2189
2205
  * platformKeys allows for generating hardware-backed keys and the installation
@@ -2449,9 +2465,16 @@ chrome.runtime.openOptionsPage = function(opt_callback) {};
2449
2465
 
2450
2466
  /**
2451
2467
  * Manifest information returned from chrome.runtime.getManifest. See
2452
- * http://developer.chrome.com/extensions/manifest.html. Note that there are
2453
- * several other fields not included here. They should be added to these externs
2454
- * as needed.
2468
+ * https://developer.chrome.com/extensions/manifest.html and
2469
+ * https://developer.chrome.com/apps/manifest.html
2470
+ *
2471
+ * Note that:
2472
+ * 1) There are several other fields not included here. They should be
2473
+ * added to these externs as needed.
2474
+ * 2) There are some distinct fields for app vs extension manifests. The
2475
+ * below manifest definition contains the union of all fields; unique
2476
+ * fields should be annotated as such (see e.g. kiosk_only property
2477
+ * below).
2455
2478
  * @constructor
2456
2479
  */
2457
2480
  chrome.runtime.Manifest = function() {};
@@ -2481,6 +2504,14 @@ chrome.runtime.Manifest.prototype.oauth2;
2481
2504
  chrome.runtime.Manifest.prototype.permissions;
2482
2505
 
2483
2506
 
2507
+ /**
2508
+ * App-only manifest field.
2509
+ * @see https://developer.chrome.com/apps/manifest
2510
+ * @type {boolean|undefined}
2511
+ */
2512
+ chrome.runtime.Manifest.prototype.kiosk_only;
2513
+
2514
+
2484
2515
 
2485
2516
  /**
2486
2517
  * Oauth2 info in the manifest.
@@ -2499,7 +2530,8 @@ chrome.runtime.Manifest.Oauth2.prototype.scopes;
2499
2530
 
2500
2531
 
2501
2532
  /**
2502
- * http://developer.chrome.com/extensions/runtime.html#method-getManifest
2533
+ * https://developer.chrome.com/extensions/runtime.html#method-getManifest
2534
+ * https://developer.chrome.com/apps/runtime#method-getManifest
2503
2535
  * @return {!chrome.runtime.Manifest} The full manifest file of the app or
2504
2536
  * extension.
2505
2537
  */
@@ -6574,12 +6606,9 @@ WebRequestOptionallySynchronousEvent.prototype.hasListener = function(
6574
6606
 
6575
6607
 
6576
6608
  /**
6577
- * @param {function(!Object): (undefined|!BlockingResponse)} listener Listener
6578
- * function.
6579
- * @return {undefined}
6609
+ * @return {boolean}
6580
6610
  */
6581
- WebRequestOptionallySynchronousEvent.prototype.hasListeners = function(
6582
- listener) {};
6611
+ WebRequestOptionallySynchronousEvent.prototype.hasListeners = function() {};
6583
6612
 
6584
6613
 
6585
6614
  /**
@@ -42,40 +42,78 @@ var YT = {};
42
42
  YT.Player = function(container, opts) {};
43
43
 
44
44
 
45
+ /** @typedef {!{
46
+ * videoId: string,
47
+ * startSeconds: (number|undefined),
48
+ * endSeconds: (number|undefined),
49
+ * suggestedQuality: (string|undefined),
50
+ * }} */
51
+ YT.Player.VideoIdParams;
52
+
53
+
45
54
  /**
46
- * @param {string} videoId
47
- * @param {number=} startSeconds
48
- * @param {string=} suggestedQuality
55
+ * Loads the specified video's thumbnail and prepares the player to play the
56
+ * video.
57
+ * @param {!YT.Player.VideoIdParams|string} videoIdOrObject YouTube Video ID or
58
+ * parameters object.
59
+ * @param {number=} opt_startSeconds Float/integer that specifies the time
60
+ * from which the video should start playing.
61
+ * @param {string=} opt_suggestedQuality The suggested playback quality for
62
+ * the video.
49
63
  */
50
- YT.Player.prototype.cueVideoById =
51
- function(videoId, startSeconds, suggestedQuality) {};
64
+ YT.Player.prototype.cueVideoById = function(
65
+ videoIdOrObject, opt_startSeconds, opt_suggestedQuality) {};
52
66
 
53
67
 
54
68
  /**
55
- * @param {string} videoId
56
- * @param {number=} startSeconds
57
- * @param {string=} suggestedQuality
69
+ * Loads and plays the specified video.
70
+ * @param {!YT.Player.VideoIdParams|string} videoIdOrObject YouTube Video ID or
71
+ * parameters object.
72
+ * @param {number=} opt_startSeconds Float/integer that specifies the time
73
+ * from which the video should start playing.
74
+ * @param {string=} opt_suggestedQuality The suggested playback quality for
75
+ * the video.
58
76
  */
59
- YT.Player.prototype.loadVideoById =
60
- function(videoId, startSeconds, suggestedQuality) {};
77
+ YT.Player.prototype.loadVideoById = function(
78
+ videoIdOrObject, opt_startSeconds, opt_suggestedQuality) {};
79
+
80
+
81
+ /** @typedef {!{
82
+ * mediaContentUrl: string,
83
+ * startSeconds: (number|undefined),
84
+ * endSeconds: (number|undefined),
85
+ * suggestedQuality: (string|undefined),
86
+ * }} */
87
+ YT.Player.MediaContentUrlParams;
61
88
 
62
89
 
63
90
  /**
64
- * @param {string} mediaContentUrl
65
- * @param {number} startSeconds
66
- * @param {string=} suggestedQuality
91
+ * Loads the specified video's thumbnail and prepares the player to play the
92
+ * video.
93
+ * @param {!YT.Player.MediaContentUrlParams|string} mediaContentUrlOrObject
94
+ * YouTube player URL in the format http://www.youtube.com/v/VIDEO_ID or
95
+ * parameters object.
96
+ * @param {number=} opt_startSeconds Float/integer that specifies the time
97
+ * from which the video should start playing.
98
+ * @param {string=} opt_suggestedQuality The suggested playback quality for
99
+ * the video.
67
100
  */
68
- YT.Player.prototype.cueVideoByUrl =
69
- function(mediaContentUrl, startSeconds, suggestedQuality) {};
101
+ YT.Player.prototype.cueVideoByUrl = function(
102
+ mediaContentUrlOrObject, opt_startSeconds, opt_suggestedQuality) {};
70
103
 
71
104
 
72
105
  /**
73
- * @param {string} mediaContentUrl
74
- * @param {number} startSeconds
75
- * @param {string=} suggestedQuality
106
+ * Loads and plays the specified video.
107
+ * @param {!YT.Player.MediaContentUrlParams|string} mediaContentUrlOrObject
108
+ * YouTube player URL in the format http://www.youtube.com/v/VIDEO_ID or
109
+ * parameters object.
110
+ * @param {number=} opt_startSeconds Float/integer that specifies the time
111
+ * from which the video should start playing.
112
+ * @param {string=} opt_suggestedQuality The suggested playback quality for
113
+ * the video.
76
114
  */
77
- YT.Player.prototype.loadVideoByUrl =
78
- function(mediaContentUrl, startSeconds, suggestedQuality) {};
115
+ YT.Player.prototype.loadVideoByUrl = function(
116
+ mediaContentUrlOrObject, opt_startSeconds, opt_suggestedQuality) {};
79
117
 
80
118
 
81
119
  /**
@@ -282,6 +320,13 @@ YT.Player.prototype.addEventListener = function(eventName, listenerName) {};
282
320
  YT.Player.prototype.destroy = function() {};
283
321
 
284
322
 
323
+ /**
324
+ * @return {HTMLIFrameElement} The DOM node for the embedded iframe.
325
+ * @nosideeffects
326
+ */
327
+ YT.Player.prototype.getIframe = function() {};
328
+
329
+
285
330
  /**
286
331
  * @return {number}
287
332
  * @nosideeffects
@@ -636,7 +636,7 @@ google.maps.Data.LinearRing.prototype.getType = function() {};
636
636
 
637
637
  /**
638
638
  * @extends {google.maps.MouseEvent}
639
- * @constructor
639
+ * @record
640
640
  */
641
641
  google.maps.Data.MouseEvent = function() {};
642
642
 
@@ -2206,7 +2206,7 @@ google.maps.Icon.prototype.url;
2206
2206
 
2207
2207
  /**
2208
2208
  * @extends {google.maps.MouseEvent}
2209
- * @constructor
2209
+ * @record
2210
2210
  */
2211
2211
  google.maps.IconMouseEvent = function() {};
2212
2212
 
@@ -2957,7 +2957,7 @@ google.maps.MVCObject.prototype.notify = function(key) {};
2957
2957
 
2958
2958
  /**
2959
2959
  * @param {string} key
2960
- * @param {*} value
2960
+ * @param {?} value
2961
2961
  * @return {undefined}
2962
2962
  */
2963
2963
  google.maps.MVCObject.prototype.set = function(key, value) {};
@@ -3522,7 +3522,7 @@ google.maps.MapsEventListener = function() {};
3522
3522
  google.maps.MapsEventListener.prototype.remove = function() {};
3523
3523
 
3524
3524
  /**
3525
- * @param {(google.maps.MarkerOptions|Object.<string>)=} opt_opts
3525
+ * @param {(google.maps.MarkerOptions|Object<string, ?>)=} opt_opts
3526
3526
  * @extends {google.maps.MVCObject}
3527
3527
  * @constructor
3528
3528
  */
@@ -636,7 +636,7 @@ google.maps.Data.LinearRing.prototype.getType = function() {};
636
636
 
637
637
  /**
638
638
  * @extends {google.maps.MouseEvent}
639
- * @constructor
639
+ * @record
640
640
  */
641
641
  google.maps.Data.MouseEvent = function() {};
642
642
 
@@ -2206,7 +2206,7 @@ google.maps.Icon.prototype.url;
2206
2206
 
2207
2207
  /**
2208
2208
  * @extends {google.maps.MouseEvent}
2209
- * @constructor
2209
+ * @record
2210
2210
  */
2211
2211
  google.maps.IconMouseEvent = function() {};
2212
2212
 
@@ -2957,7 +2957,7 @@ google.maps.MVCObject.prototype.notify = function(key) {};
2957
2957
 
2958
2958
  /**
2959
2959
  * @param {string} key
2960
- * @param {*} value
2960
+ * @param {?} value
2961
2961
  * @return {undefined}
2962
2962
  */
2963
2963
  google.maps.MVCObject.prototype.set = function(key, value) {};
@@ -2957,7 +2957,7 @@ google.maps.MVCObject.prototype.notify = function(key) {};
2957
2957
 
2958
2958
  /**
2959
2959
  * @param {string} key
2960
- * @param {*} value
2960
+ * @param {?} value
2961
2961
  * @return {undefined}
2962
2962
  */
2963
2963
  google.maps.MVCObject.prototype.set = function(key, value) {};
@@ -2957,7 +2957,7 @@ google.maps.MVCObject.prototype.notify = function(key) {};
2957
2957
 
2958
2958
  /**
2959
2959
  * @param {string} key
2960
- * @param {*} value
2960
+ * @param {?} value
2961
2961
  * @return {undefined}
2962
2962
  */
2963
2963
  google.maps.MVCObject.prototype.set = function(key, value) {};
@@ -159,6 +159,21 @@ PolymerElement.prototype.hostAttributes;
159
159
  */
160
160
  PolymerElement.prototype.listeners;
161
161
 
162
+ /**
163
+ * Force this element to distribute its children to its local dom.
164
+ * A user should call `distributeContent` if distribution has been
165
+ * invalidated due to changes to selectors on child elements that
166
+ * effect distribution that were not made via `Polymer.dom`.
167
+ * For example, if an element contains an insertion point with
168
+ * `<content select=".foo">` and a `foo` class is added to a child,
169
+ * then `distributeContent` must be called to update
170
+ * local dom distribution.
171
+ * @param {boolean} updateInsertionPoints Shady DOM does not detect
172
+ * <content> insertion that is nested in a sub-tree being appended.
173
+ * Set to true to distribute to newly added nested <content>'s.
174
+ */
175
+ PolymerElement.prototype.distributeContent = function(updateInsertionPoints) {};
176
+
162
177
  /**
163
178
  * Return the element whose local dom within which this element is contained.
164
179
  * @type {?Element}
@@ -564,6 +579,13 @@ Polymer.Base.get = function(path, root) {};
564
579
  */
565
580
  Polymer.Base.fire = function(type, detail, options) {};
566
581
 
582
+ /**
583
+ * For Polymer internal use only, except for
584
+ * github.com/Polymer/polymer/issues/4138
585
+ * @type {!function (!Node, ?string, *, ?Object)}
586
+ */
587
+ Polymer.Base._computeFinalAnnotationValue;
588
+
567
589
  /**
568
590
  * @param {...*} var_args
569
591
  * For Polymer-internal use only.
@@ -719,12 +719,17 @@ sinon.match.has = function(property, expect) {};
719
719
  */
720
720
  sinon.match.hasOwn = function(property, expect) {};
721
721
 
722
- sinon.clock = {};
722
+ /**
723
+ * @interface
724
+ */
725
+ var SinonClock = function() {};
723
726
 
724
727
  /**
725
728
  * @param {!number} ticks
726
729
  */
727
- sinon.clock.tick = function(ticks) {};
730
+ SinonClock.prototype.tick = function(ticks) {};
731
+
732
+ SinonClock.prototype.restore = function() {};
728
733
 
729
734
  sinon.sandbox = {};
730
735
 
@@ -765,7 +770,7 @@ SinonSandbox.prototype.stub = function(obj, method, func) {};
765
770
 
766
771
  /**
767
772
  * @param {...?} params
768
- * @return {Object}
773
+ * @return {SinonClock}
769
774
  */
770
775
  SinonSandbox.prototype.useFakeTimers = function(params) {};
771
776
 
@@ -841,6 +846,6 @@ SinonFakeXmlHttpRequest.prototype.respond = function(status, headers, body) {};
841
846
 
842
847
  /**
843
848
  * @param {...?} params
844
- * @return {Object}
849
+ * @return {SinonClock}
845
850
  */
846
851
  sinon.useFakeTimers = function(params) {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "google-closure-compiler",
3
- "version": "20170806.0.0",
3
+ "version": "20170910.0.0",
4
4
  "description": "Check, compile, optimize and compress Javascript with Closure-Compiler",
5
5
  "repository": {
6
6
  "type": "git",