shaka-player 4.9.13 → 4.10.1
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/README.md +4 -0
- package/dist/controls.css +2 -2
- package/dist/controls.css.map +1 -1
- package/dist/deps.js +24 -19
- package/dist/locales.js +46 -35
- package/dist/shaka-player.compiled.d.ts +291 -12
- package/dist/shaka-player.compiled.debug.d.ts +291 -12
- package/dist/shaka-player.compiled.debug.externs.js +443 -6
- package/dist/shaka-player.compiled.debug.js +651 -556
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +443 -6
- package/dist/shaka-player.compiled.js +1325 -1270
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +306 -13
- package/dist/shaka-player.ui.debug.d.ts +306 -13
- package/dist/shaka-player.ui.debug.externs.js +477 -18
- package/dist/shaka-player.ui.debug.js +799 -681
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +477 -18
- package/dist/shaka-player.ui.js +1600 -1533
- package/dist/shaka-player.ui.map +4 -4
- package/externs/shaka/ads.js +21 -1
- package/externs/shaka/manifest.js +20 -1
- package/externs/shaka/manifest_parser.js +18 -1
- package/externs/shaka/player.js +164 -50
- package/lib/ads/ad_manager.js +225 -10
- package/lib/ads/ad_utils.js +323 -0
- package/lib/ads/ads_stats.js +24 -0
- package/lib/ads/client_side_ad_manager.js +42 -34
- package/lib/ads/interstitial_ad.js +292 -0
- package/lib/ads/interstitial_ad_manager.js +772 -0
- package/lib/ads/media_tailor_ad_manager.js +19 -22
- package/lib/ads/server_side_ad_manager.js +12 -15
- package/lib/cast/cast_utils.js +1 -0
- package/lib/cea/cea_utils.js +12 -0
- package/lib/cea/mp4_cea_parser.js +17 -0
- package/lib/dash/dash_parser.js +81 -28
- package/lib/dash/segment_base.js +3 -0
- package/lib/hls/hls_parser.js +429 -121
- package/lib/hls/manifest_text_parser.js +1 -0
- package/lib/media/adaptation_set_criteria.js +31 -1
- package/lib/media/drm_engine.js +16 -2
- package/lib/media/manifest_filterer.js +7 -5
- package/lib/media/preload_manager.js +8 -10
- package/lib/media/presentation_timeline.js +37 -5
- package/lib/media/quality_observer.js +68 -2
- package/lib/media/segment_reference.js +1 -1
- package/lib/media/segment_utils.js +33 -1
- package/lib/media/streaming_engine.js +120 -43
- package/lib/mss/mss_parser.js +13 -2
- package/lib/net/networking_engine.js +1 -0
- package/lib/offline/manifest_converter.js +3 -0
- package/lib/offline/offline_manifest_parser.js +5 -0
- package/lib/offline/storage.js +2 -0
- package/lib/player.js +498 -165
- package/lib/util/fake_event.js +1 -0
- package/lib/util/manifest_parser_utils.js +9 -2
- package/lib/util/mp4_box_parsers.js +32 -0
- package/lib/util/player_configuration.js +21 -9
- package/lib/util/stats.js +43 -0
- package/package.json +1 -1
- package/shaka-player.uncompiled.js +2 -0
- package/ui/ad_counter.js +3 -3
- package/ui/ad_position.js +3 -3
- package/ui/ad_statistics_button.js +237 -0
- package/ui/audio_language_selection.js +8 -4
- package/ui/controls.js +6 -3
- package/ui/element.js +3 -3
- package/ui/enums.js +1 -0
- package/ui/externs/ui.js +3 -0
- package/ui/language_utils.js +48 -3
- package/ui/less/containers.less +32 -0
- package/ui/less/thumbnails.less +13 -0
- package/ui/locales/en.json +2 -0
- package/ui/locales/es-419.json +2 -0
- package/ui/locales/es.json +3 -0
- package/ui/locales/fr.json +1 -0
- package/ui/locales/pl.json +1 -0
- package/ui/locales/pt-BR.json +1 -0
- package/ui/locales/pt-PT.json +1 -0
- package/ui/locales/source.json +8 -0
- package/ui/mute_button.js +4 -4
- package/ui/overflow_menu.js +3 -3
- package/ui/play_button.js +5 -7
- package/ui/presentation_time.js +3 -3
- package/ui/save_video_frame_button.js +196 -0
- package/ui/seek_bar.js +75 -20
- package/ui/skip_ad_button.js +4 -4
- package/ui/statistics_button.js +14 -2
- package/ui/ui.js +15 -0
- package/ui/volume_bar.js +4 -4
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/*! @license
|
|
2
|
+
* Shaka Player
|
|
3
|
+
* Copyright 2016 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
goog.provide('shaka.ads.Utils');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* A class responsible for ad utils.
|
|
13
|
+
* @export
|
|
14
|
+
*/
|
|
15
|
+
shaka.ads.Utils = class {
|
|
16
|
+
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The event name for when a sequence of ads has been loaded.
|
|
21
|
+
*
|
|
22
|
+
* @const {string}
|
|
23
|
+
* @export
|
|
24
|
+
*/
|
|
25
|
+
shaka.ads.Utils.ADS_LOADED = 'ads-loaded';
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The event name for when an ad has started playing.
|
|
29
|
+
*
|
|
30
|
+
* @const {string}
|
|
31
|
+
* @export
|
|
32
|
+
*/
|
|
33
|
+
shaka.ads.Utils.AD_STARTED = 'ad-started';
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The event name for when an ad playhead crosses first quartile.
|
|
38
|
+
*
|
|
39
|
+
* @const {string}
|
|
40
|
+
* @export
|
|
41
|
+
*/
|
|
42
|
+
shaka.ads.Utils.AD_FIRST_QUARTILE = 'ad-first-quartile';
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The event name for when an ad playhead crosses midpoint.
|
|
47
|
+
*
|
|
48
|
+
* @const {string}
|
|
49
|
+
* @export
|
|
50
|
+
*/
|
|
51
|
+
shaka.ads.Utils.AD_MIDPOINT = 'ad-midpoint';
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The event name for when an ad playhead crosses third quartile.
|
|
56
|
+
*
|
|
57
|
+
* @const {string}
|
|
58
|
+
* @export
|
|
59
|
+
*/
|
|
60
|
+
shaka.ads.Utils.AD_THIRD_QUARTILE = 'ad-third-quartile';
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* The event name for when an ad has completed playing.
|
|
65
|
+
*
|
|
66
|
+
* @const {string}
|
|
67
|
+
* @export
|
|
68
|
+
*/
|
|
69
|
+
shaka.ads.Utils.AD_COMPLETE = 'ad-complete';
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* The event name for when an ad has finished playing
|
|
74
|
+
* (played all the way through, was skipped, or was unable to proceed
|
|
75
|
+
* due to an error).
|
|
76
|
+
*
|
|
77
|
+
* @const {string}
|
|
78
|
+
* @export
|
|
79
|
+
*/
|
|
80
|
+
shaka.ads.Utils.AD_STOPPED = 'ad-stopped';
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* The event name for when an ad is skipped by the user..
|
|
85
|
+
*
|
|
86
|
+
* @const {string}
|
|
87
|
+
* @export
|
|
88
|
+
*/
|
|
89
|
+
shaka.ads.Utils.AD_SKIPPED = 'ad-skipped';
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The event name for when the ad volume has changed.
|
|
94
|
+
*
|
|
95
|
+
* @const {string}
|
|
96
|
+
* @export
|
|
97
|
+
*/
|
|
98
|
+
shaka.ads.Utils.AD_VOLUME_CHANGED = 'ad-volume-changed';
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* The event name for when the ad was muted.
|
|
103
|
+
*
|
|
104
|
+
* @const {string}
|
|
105
|
+
* @export
|
|
106
|
+
*/
|
|
107
|
+
shaka.ads.Utils.AD_MUTED = 'ad-muted';
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* The event name for when the ad was paused.
|
|
112
|
+
*
|
|
113
|
+
* @const {string}
|
|
114
|
+
* @export
|
|
115
|
+
*/
|
|
116
|
+
shaka.ads.Utils.AD_PAUSED = 'ad-paused';
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* The event name for when the ad was resumed after a pause.
|
|
121
|
+
*
|
|
122
|
+
* @const {string}
|
|
123
|
+
* @export
|
|
124
|
+
*/
|
|
125
|
+
shaka.ads.Utils.AD_RESUMED = 'ad-resumed';
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* The event name for when the ad's skip status changes
|
|
130
|
+
* (usually it becomes skippable when it wasn't before).
|
|
131
|
+
*
|
|
132
|
+
* @const {string}
|
|
133
|
+
* @export
|
|
134
|
+
*/
|
|
135
|
+
shaka.ads.Utils.AD_SKIP_STATE_CHANGED = 'ad-skip-state-changed';
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* The event name for when the ad's cue points (start/end markers)
|
|
140
|
+
* have changed.
|
|
141
|
+
*
|
|
142
|
+
* @const {string}
|
|
143
|
+
* @export
|
|
144
|
+
*/
|
|
145
|
+
shaka.ads.Utils.CUEPOINTS_CHANGED = 'ad-cue-points-changed';
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* The event name for when the native IMA ad manager object has
|
|
150
|
+
* loaded and become available.
|
|
151
|
+
*
|
|
152
|
+
* @const {string}
|
|
153
|
+
* @export
|
|
154
|
+
*/
|
|
155
|
+
shaka.ads.Utils.IMA_AD_MANAGER_LOADED = 'ima-ad-manager-loaded';
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* The event name for when the native IMA stream manager object has
|
|
160
|
+
* loaded and become available.
|
|
161
|
+
*
|
|
162
|
+
* @const {string}
|
|
163
|
+
* @export
|
|
164
|
+
*/
|
|
165
|
+
shaka.ads.Utils.IMA_STREAM_MANAGER_LOADED = 'ima-stream-manager-loaded';
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* The event name for when the ad was clicked.
|
|
170
|
+
*
|
|
171
|
+
* @const {string}
|
|
172
|
+
* @export
|
|
173
|
+
*/
|
|
174
|
+
shaka.ads.Utils.AD_CLICKED = 'ad-clicked';
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* The event name for when there is an update to the current ad's progress.
|
|
179
|
+
*
|
|
180
|
+
* @const {string}
|
|
181
|
+
* @export
|
|
182
|
+
*/
|
|
183
|
+
shaka.ads.Utils.AD_PROGRESS = 'ad-progress';
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* The event name for when the ad is buffering.
|
|
188
|
+
*
|
|
189
|
+
* @const {string}
|
|
190
|
+
* @export
|
|
191
|
+
*/
|
|
192
|
+
shaka.ads.Utils.AD_BUFFERING = 'ad-buffering';
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* The event name for when the ad's URL was hit.
|
|
197
|
+
*
|
|
198
|
+
* @const {string}
|
|
199
|
+
* @export
|
|
200
|
+
*/
|
|
201
|
+
shaka.ads.Utils.AD_IMPRESSION = 'ad-impression';
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* The event name for when the ad's duration changed.
|
|
206
|
+
*
|
|
207
|
+
* @const {string}
|
|
208
|
+
* @export
|
|
209
|
+
*/
|
|
210
|
+
shaka.ads.Utils.AD_DURATION_CHANGED = 'ad-duration-changed';
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* The event name for when the ad was closed by the user.
|
|
215
|
+
*
|
|
216
|
+
* @const {string}
|
|
217
|
+
* @export
|
|
218
|
+
*/
|
|
219
|
+
shaka.ads.Utils.AD_CLOSED = 'ad-closed';
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* The event name for when the ad data becomes available.
|
|
224
|
+
*
|
|
225
|
+
* @const {string}
|
|
226
|
+
* @export
|
|
227
|
+
*/
|
|
228
|
+
shaka.ads.Utils.AD_LOADED = 'ad-loaded';
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* The event name for when all the ads were completed.
|
|
233
|
+
*
|
|
234
|
+
* @const {string}
|
|
235
|
+
* @export
|
|
236
|
+
*/
|
|
237
|
+
shaka.ads.Utils.ALL_ADS_COMPLETED = 'all-ads-completed';
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* The event name for when the ad changes from or to linear.
|
|
242
|
+
*
|
|
243
|
+
* @const {string}
|
|
244
|
+
* @export
|
|
245
|
+
*/
|
|
246
|
+
shaka.ads.Utils.AD_LINEAR_CHANGED = 'ad-linear-changed';
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* The event name for when the ad's metadata becomes available.
|
|
251
|
+
*
|
|
252
|
+
* @const {string}
|
|
253
|
+
* @export
|
|
254
|
+
*/
|
|
255
|
+
shaka.ads.Utils.AD_METADATA = 'ad-metadata';
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* The event name for when the ad display encountered a recoverable
|
|
260
|
+
* error.
|
|
261
|
+
*
|
|
262
|
+
* @const {string}
|
|
263
|
+
* @export
|
|
264
|
+
*/
|
|
265
|
+
shaka.ads.Utils.AD_RECOVERABLE_ERROR = 'ad-recoverable-error';
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* The event name for when the ad manager dispatch errors.
|
|
269
|
+
*
|
|
270
|
+
* @const {string}
|
|
271
|
+
* @export
|
|
272
|
+
*/
|
|
273
|
+
shaka.ads.Utils.AD_ERROR = 'ad-error';
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* The event name for when the client side SDK signalled its readiness
|
|
277
|
+
* to play a VPAID ad or an ad rule.
|
|
278
|
+
*
|
|
279
|
+
* @const {string}
|
|
280
|
+
* @export
|
|
281
|
+
*/
|
|
282
|
+
shaka.ads.Utils.AD_BREAK_READY = 'ad-break-ready';
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* The event name for when the interaction callback for the ad was
|
|
287
|
+
* triggered.
|
|
288
|
+
*
|
|
289
|
+
* @const {string}
|
|
290
|
+
* @export
|
|
291
|
+
*/
|
|
292
|
+
shaka.ads.Utils.AD_INTERACTION = 'ad-interaction';
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* The name of the event for when an ad requires the main content to be paused.
|
|
297
|
+
* Fired when the platform does not support multiple media elements.
|
|
298
|
+
*
|
|
299
|
+
* @const {string}
|
|
300
|
+
* @export
|
|
301
|
+
*/
|
|
302
|
+
shaka.ads.Utils.AD_CONTENT_PAUSE_REQUESTED = 'ad-content-pause-requested';
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* The name of the event for when an ad requires the main content to be resumed.
|
|
307
|
+
* Fired when the platform does not support multiple media elements.
|
|
308
|
+
*
|
|
309
|
+
* @const {string}
|
|
310
|
+
* @export
|
|
311
|
+
*/
|
|
312
|
+
shaka.ads.Utils.AD_CONTENT_RESUME_REQUESTED = 'ad-content-resume-requested';
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* The name of the event for when an ad requires the video of the main content
|
|
317
|
+
* to be attached.
|
|
318
|
+
*
|
|
319
|
+
* @const {string}
|
|
320
|
+
* @export
|
|
321
|
+
*/
|
|
322
|
+
shaka.ads.Utils.AD_CONTENT_ATTACH_REQUESTED = 'ad-content-attach-requested';
|
|
323
|
+
|
package/lib/ads/ads_stats.js
CHANGED
|
@@ -24,6 +24,8 @@ shaka.ads.AdsStats = class {
|
|
|
24
24
|
this.playedCompletely_ = 0;
|
|
25
25
|
/** @private {number} */
|
|
26
26
|
this.skipped_ = 0;
|
|
27
|
+
/** @private {number} */
|
|
28
|
+
this.errors_ = 0;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
/**
|
|
@@ -56,6 +58,26 @@ shaka.ads.AdsStats = class {
|
|
|
56
58
|
this.skipped_++;
|
|
57
59
|
}
|
|
58
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Increase the number of ads with error by one.
|
|
63
|
+
*/
|
|
64
|
+
incrementErrors() {
|
|
65
|
+
this.errors_++;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @return {number}
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
getAverageLoadTime_() {
|
|
73
|
+
if (!this.loadTimes_.length) {
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
const sum = this.loadTimes_.reduce(
|
|
77
|
+
(accumulator, currentValue) => accumulator + currentValue, 0);
|
|
78
|
+
return sum / this.loadTimes_.length;
|
|
79
|
+
}
|
|
80
|
+
|
|
59
81
|
/**
|
|
60
82
|
* Create a stats blob that we can pass up to the app. This blob will not
|
|
61
83
|
* reference any internal data.
|
|
@@ -65,9 +87,11 @@ shaka.ads.AdsStats = class {
|
|
|
65
87
|
getBlob() {
|
|
66
88
|
return {
|
|
67
89
|
loadTimes: this.loadTimes_,
|
|
90
|
+
averageLoadTime: this.getAverageLoadTime_(),
|
|
68
91
|
started: this.started_,
|
|
69
92
|
playedCompletely: this.playedCompletely_,
|
|
70
93
|
skipped: this.skipped_,
|
|
94
|
+
errors: this.errors_,
|
|
71
95
|
};
|
|
72
96
|
}
|
|
73
97
|
};
|
|
@@ -4,15 +4,13 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview
|
|
9
|
-
* @suppress {missingRequire} TODO(b/152540451): this shouldn't be needed
|
|
10
|
-
*/
|
|
11
7
|
|
|
12
8
|
goog.provide('shaka.ads.ClientSideAdManager');
|
|
13
9
|
|
|
14
10
|
goog.require('goog.asserts');
|
|
11
|
+
goog.require('shaka.Player');
|
|
15
12
|
goog.require('shaka.ads.ClientSideAd');
|
|
13
|
+
goog.require('shaka.ads.Utils');
|
|
16
14
|
goog.require('shaka.log');
|
|
17
15
|
goog.require('shaka.util.Dom');
|
|
18
16
|
goog.require('shaka.util.EventManager');
|
|
@@ -190,12 +188,12 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
190
188
|
shaka.log.warning('Resuming playback.');
|
|
191
189
|
|
|
192
190
|
const data = (new Map()).set('originalEvent', e);
|
|
193
|
-
this.onEvent_(new shaka.util.FakeEvent(shaka.ads.
|
|
191
|
+
this.onEvent_(new shaka.util.FakeEvent(shaka.ads.Utils.AD_ERROR, data));
|
|
194
192
|
|
|
195
193
|
this.onAdComplete_(/* adEvent= */ null);
|
|
196
194
|
// Remove ad breaks from the timeline
|
|
197
195
|
this.onEvent_(
|
|
198
|
-
new shaka.util.FakeEvent(shaka.ads.
|
|
196
|
+
new shaka.util.FakeEvent(shaka.ads.Utils.CUEPOINTS_CHANGED,
|
|
199
197
|
(new Map()).set('cuepoints', [])));
|
|
200
198
|
}
|
|
201
199
|
|
|
@@ -209,7 +207,7 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
209
207
|
|
|
210
208
|
const now = Date.now() / 1000;
|
|
211
209
|
const loadTime = now - this.requestAdsStartTime_;
|
|
212
|
-
this.onEvent_(new shaka.util.FakeEvent(shaka.ads.
|
|
210
|
+
this.onEvent_(new shaka.util.FakeEvent(shaka.ads.Utils.ADS_LOADED,
|
|
213
211
|
(new Map()).set('loadTime', loadTime)));
|
|
214
212
|
|
|
215
213
|
if (!this.config_.customPlayheadTracker) {
|
|
@@ -247,7 +245,7 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
247
245
|
}
|
|
248
246
|
|
|
249
247
|
this.onEvent_(new shaka.util.FakeEvent(
|
|
250
|
-
shaka.ads.
|
|
248
|
+
shaka.ads.Utils.IMA_AD_MANAGER_LOADED,
|
|
251
249
|
(new Map()).set('imaAdManager', this.imaAdsManager_)));
|
|
252
250
|
|
|
253
251
|
const cuePointStarts = this.imaAdsManager_.getCuePoints();
|
|
@@ -264,7 +262,7 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
264
262
|
}
|
|
265
263
|
|
|
266
264
|
this.onEvent_(new shaka.util.FakeEvent(
|
|
267
|
-
shaka.ads.
|
|
265
|
+
shaka.ads.Utils.CUEPOINTS_CHANGED,
|
|
268
266
|
(new Map()).set('cuepoints', cuePoints)));
|
|
269
267
|
}
|
|
270
268
|
|
|
@@ -374,22 +372,22 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
374
372
|
|
|
375
373
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
376
374
|
google.ima.AdEvent.Type.FIRST_QUARTILE, (e) => {
|
|
377
|
-
convertEventAndSend(e, shaka.ads.
|
|
375
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_FIRST_QUARTILE);
|
|
378
376
|
});
|
|
379
377
|
|
|
380
378
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
381
379
|
google.ima.AdEvent.Type.MIDPOINT, (e) => {
|
|
382
|
-
convertEventAndSend(e, shaka.ads.
|
|
380
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_MIDPOINT);
|
|
383
381
|
});
|
|
384
382
|
|
|
385
383
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
386
384
|
google.ima.AdEvent.Type.THIRD_QUARTILE, (e) => {
|
|
387
|
-
convertEventAndSend(e, shaka.ads.
|
|
385
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_THIRD_QUARTILE);
|
|
388
386
|
});
|
|
389
387
|
|
|
390
388
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
391
389
|
google.ima.AdEvent.Type.COMPLETE, (e) => {
|
|
392
|
-
convertEventAndSend(e, shaka.ads.
|
|
390
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_COMPLETE);
|
|
393
391
|
});
|
|
394
392
|
|
|
395
393
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
@@ -404,24 +402,24 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
404
402
|
|
|
405
403
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
406
404
|
google.ima.AdEvent.Type.SKIPPED, (e) => {
|
|
407
|
-
convertEventAndSend(e, shaka.ads.
|
|
405
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_SKIPPED);
|
|
408
406
|
});
|
|
409
407
|
|
|
410
408
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
411
409
|
google.ima.AdEvent.Type.VOLUME_CHANGED, (e) => {
|
|
412
|
-
convertEventAndSend(e, shaka.ads.
|
|
410
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_VOLUME_CHANGED);
|
|
413
411
|
});
|
|
414
412
|
|
|
415
413
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
416
414
|
google.ima.AdEvent.Type.VOLUME_MUTED, (e) => {
|
|
417
|
-
convertEventAndSend(e, shaka.ads.
|
|
415
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_MUTED);
|
|
418
416
|
});
|
|
419
417
|
|
|
420
418
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
421
419
|
google.ima.AdEvent.Type.PAUSED, (e) => {
|
|
422
420
|
if (this.ad_) {
|
|
423
421
|
this.ad_.setPaused(true);
|
|
424
|
-
convertEventAndSend(e, shaka.ads.
|
|
422
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_PAUSED);
|
|
425
423
|
}
|
|
426
424
|
});
|
|
427
425
|
|
|
@@ -429,80 +427,80 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
429
427
|
google.ima.AdEvent.Type.RESUMED, (e) => {
|
|
430
428
|
if (this.ad_) {
|
|
431
429
|
this.ad_.setPaused(false);
|
|
432
|
-
convertEventAndSend(e, shaka.ads.
|
|
430
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_RESUMED);
|
|
433
431
|
}
|
|
434
432
|
});
|
|
435
433
|
|
|
436
434
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
437
435
|
google.ima.AdEvent.Type.SKIPPABLE_STATE_CHANGED, (e) => {
|
|
438
436
|
if (this.ad_) {
|
|
439
|
-
convertEventAndSend(e, shaka.ads.
|
|
437
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_SKIP_STATE_CHANGED);
|
|
440
438
|
}
|
|
441
439
|
});
|
|
442
440
|
|
|
443
441
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
444
442
|
google.ima.AdEvent.Type.CLICK, (e) => {
|
|
445
|
-
convertEventAndSend(e, shaka.ads.
|
|
443
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_CLICKED);
|
|
446
444
|
});
|
|
447
445
|
|
|
448
446
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
449
447
|
google.ima.AdEvent.Type.AD_PROGRESS, (e) => {
|
|
450
|
-
convertEventAndSend(e, shaka.ads.
|
|
448
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_PROGRESS);
|
|
451
449
|
});
|
|
452
450
|
|
|
453
451
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
454
452
|
google.ima.AdEvent.Type.AD_BUFFERING, (e) => {
|
|
455
|
-
convertEventAndSend(e, shaka.ads.
|
|
453
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_BUFFERING);
|
|
456
454
|
});
|
|
457
455
|
|
|
458
456
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
459
457
|
google.ima.AdEvent.Type.IMPRESSION, (e) => {
|
|
460
|
-
convertEventAndSend(e, shaka.ads.
|
|
458
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_IMPRESSION);
|
|
461
459
|
});
|
|
462
460
|
|
|
463
461
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
464
462
|
google.ima.AdEvent.Type.DURATION_CHANGE, (e) => {
|
|
465
|
-
convertEventAndSend(e, shaka.ads.
|
|
463
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_DURATION_CHANGED);
|
|
466
464
|
});
|
|
467
465
|
|
|
468
466
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
469
467
|
google.ima.AdEvent.Type.USER_CLOSE, (e) => {
|
|
470
|
-
convertEventAndSend(e, shaka.ads.
|
|
468
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_CLOSED);
|
|
471
469
|
});
|
|
472
470
|
|
|
473
471
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
474
472
|
google.ima.AdEvent.Type.LOADED, (e) => {
|
|
475
|
-
convertEventAndSend(e, shaka.ads.
|
|
473
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_LOADED);
|
|
476
474
|
});
|
|
477
475
|
|
|
478
476
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
479
477
|
google.ima.AdEvent.Type.ALL_ADS_COMPLETED, (e) => {
|
|
480
|
-
convertEventAndSend(e, shaka.ads.
|
|
478
|
+
convertEventAndSend(e, shaka.ads.Utils.ALL_ADS_COMPLETED);
|
|
481
479
|
});
|
|
482
480
|
|
|
483
481
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
484
482
|
google.ima.AdEvent.Type.LINEAR_CHANGED, (e) => {
|
|
485
|
-
convertEventAndSend(e, shaka.ads.
|
|
483
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_LINEAR_CHANGED);
|
|
486
484
|
});
|
|
487
485
|
|
|
488
486
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
489
487
|
google.ima.AdEvent.Type.AD_METADATA, (e) => {
|
|
490
|
-
convertEventAndSend(e, shaka.ads.
|
|
488
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_METADATA);
|
|
491
489
|
});
|
|
492
490
|
|
|
493
491
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
494
492
|
google.ima.AdEvent.Type.LOG, (e) => {
|
|
495
|
-
convertEventAndSend(e, shaka.ads.
|
|
493
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_RECOVERABLE_ERROR);
|
|
496
494
|
});
|
|
497
495
|
|
|
498
496
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
499
497
|
google.ima.AdEvent.Type.AD_BREAK_READY, (e) => {
|
|
500
|
-
convertEventAndSend(e, shaka.ads.
|
|
498
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_BREAK_READY);
|
|
501
499
|
});
|
|
502
500
|
|
|
503
501
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
504
502
|
google.ima.AdEvent.Type.INTERACTION, (e) => {
|
|
505
|
-
convertEventAndSend(e, shaka.ads.
|
|
503
|
+
convertEventAndSend(e, shaka.ads.Utils.AD_INTERACTION);
|
|
506
504
|
});
|
|
507
505
|
}
|
|
508
506
|
|
|
@@ -527,12 +525,17 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
527
525
|
|
|
528
526
|
this.ad_ = new shaka.ads.ClientSideAd(imaAd,
|
|
529
527
|
this.imaAdsManager_, this.video_);
|
|
528
|
+
if (e.type == google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED &&
|
|
529
|
+
!this.config_.supportsMultipleMediaElements ) {
|
|
530
|
+
this.onEvent_(new shaka.util.FakeEvent(
|
|
531
|
+
shaka.ads.Utils.AD_CONTENT_PAUSE_REQUESTED));
|
|
532
|
+
}
|
|
530
533
|
const data = new Map()
|
|
531
534
|
.set('ad', this.ad_)
|
|
532
535
|
.set('sdkAdObject', imaAd)
|
|
533
536
|
.set('originalEvent', e);
|
|
534
537
|
this.onEvent_(new shaka.util.FakeEvent(
|
|
535
|
-
shaka.ads.
|
|
538
|
+
shaka.ads.Utils.AD_STARTED, data));
|
|
536
539
|
if (this.ad_.isLinear()) {
|
|
537
540
|
this.adContainer_.setAttribute('ad-active', 'true');
|
|
538
541
|
if (!this.config_.customPlayheadTracker) {
|
|
@@ -551,7 +554,12 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
551
554
|
* @private
|
|
552
555
|
*/
|
|
553
556
|
onAdComplete_(e) {
|
|
554
|
-
|
|
557
|
+
if (e && e.type == google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED &&
|
|
558
|
+
!this.config_.supportsMultipleMediaElements) {
|
|
559
|
+
this.onEvent_(new shaka.util.FakeEvent(
|
|
560
|
+
shaka.ads.Utils.AD_CONTENT_RESUME_REQUESTED));
|
|
561
|
+
}
|
|
562
|
+
this.onEvent_(new shaka.util.FakeEvent(shaka.ads.Utils.AD_STOPPED,
|
|
555
563
|
(new Map()).set('originalEvent', e)));
|
|
556
564
|
if (this.ad_ && this.ad_.isLinear()) {
|
|
557
565
|
this.adContainer_.removeAttribute('ad-active');
|