shaka-player 3.2.1 → 3.3.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/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
- package/.github/ISSUE_TEMPLATE/feature_request.md +1 -1
- package/.github/ISSUE_TEMPLATE/question.md +1 -1
- package/AUTHORS +9 -5
- package/CHANGELOG.md +358 -0
- package/CONTRIBUTORS +7 -2
- package/build/conformance.textproto +183 -169
- package/build/generateExterns.js +1 -1
- package/build/types/core +3 -0
- package/build/types/offline +1 -0
- package/build/types/polyfill +1 -0
- package/build/types/ui +2 -0
- package/demo/common/assets.js +19 -1
- package/demo/common/message_ids.js +13 -1
- package/demo/config.js +31 -1
- package/demo/index.html +1 -1
- package/demo/locales/en.json +12 -0
- package/demo/locales/source.json +48 -0
- package/dist/controls.css +26 -2
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +20 -17
- package/dist/demo.compiled.debug.map +3 -3
- package/dist/demo.compiled.js +20 -17
- package/dist/demo.compiled.map +3 -3
- package/dist/deps.js +19 -12
- package/dist/locales.js +39 -37
- package/dist/receiver.compiled.debug.js +12 -10
- package/dist/receiver.compiled.debug.map +3 -3
- package/dist/receiver.compiled.js +12 -10
- package/dist/receiver.compiled.map +3 -3
- package/dist/shaka-player.compiled.d.ts +231 -18
- package/dist/shaka-player.compiled.debug.d.ts +231 -18
- package/dist/shaka-player.compiled.debug.externs.js +279 -8
- package/dist/shaka-player.compiled.debug.js +512 -449
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +279 -8
- package/dist/shaka-player.compiled.js +854 -821
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +247 -19
- package/dist/shaka-player.ui.debug.d.ts +247 -19
- package/dist/shaka-player.ui.debug.externs.js +307 -9
- package/dist/shaka-player.ui.debug.js +662 -580
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +307 -9
- package/dist/shaka-player.ui.js +1047 -1000
- package/dist/shaka-player.ui.map +4 -4
- package/docs/design/bg-fetch-after.gv +29 -0
- package/docs/design/bg-fetch-after.gv.png +0 -0
- package/docs/design/bg-fetch-before.gv +18 -0
- package/docs/design/bg-fetch-before.gv.png +0 -0
- package/docs/design/bg-fetch.md +134 -0
- package/docs/tutorials/blob-url.md +15 -0
- package/docs/tutorials/fairplay.md +1 -1
- package/docs/tutorials/index.json +1 -0
- package/docs/tutorials/ui-customization.md +66 -0
- package/docs/tutorials/ui.md +5 -5
- package/externs/cmcd.js +186 -0
- package/externs/ima.js +3 -0
- package/externs/shaka/ads.js +5 -0
- package/externs/shaka/manifest.js +12 -1
- package/externs/shaka/manifest_parser.js +10 -1
- package/externs/shaka/net.js +20 -4
- package/externs/shaka/offline.js +31 -2
- package/externs/shaka/player.js +138 -5
- package/externs/shaka/text.js +24 -0
- package/externs/webcrypto.js +18 -0
- package/karma.conf.js +1 -0
- package/lib/abr/ewma.js +14 -0
- package/lib/abr/ewma_bandwidth_estimator.js +16 -2
- package/lib/abr/simple_abr_manager.js +6 -0
- package/lib/ads/client_side_ad.js +8 -0
- package/lib/ads/client_side_ad_manager.js +54 -90
- package/lib/ads/server_side_ad.js +7 -0
- package/lib/ads/server_side_ad_manager.js +7 -10
- package/lib/cast/cast_proxy.js +3 -2
- package/lib/cast/cast_receiver.js +2 -1
- package/lib/cast/cast_sender.js +2 -2
- package/lib/cast/cast_utils.js +1 -0
- package/lib/dash/dash_parser.js +141 -16
- package/lib/dash/segment_base.js +25 -1
- package/lib/dash/segment_list.js +19 -10
- package/lib/dash/segment_template.js +24 -11
- package/lib/hls/hls_parser.js +146 -40
- package/lib/media/drm_engine.js +7 -0
- package/lib/media/gap_jumping_controller.js +4 -2
- package/lib/media/media_source_engine.js +1 -2
- package/lib/media/quality_observer.js +291 -0
- package/lib/media/segment_index.js +8 -1
- package/lib/media/segment_reference.js +37 -4
- package/lib/media/streaming_engine.js +49 -7
- package/lib/net/http_fetch_plugin.js +31 -11
- package/lib/net/http_plugin_utils.js +1 -0
- package/lib/net/http_xhr_plugin.js +40 -14
- package/lib/net/networking_engine.js +83 -19
- package/lib/offline/download_info.js +68 -0
- package/lib/offline/download_manager.js +13 -5
- package/lib/offline/indexeddb/base_storage_cell.js +35 -0
- package/lib/offline/indexeddb/storage_mechanism.js +1 -1
- package/lib/offline/indexeddb/v5_storage_cell.js +5 -0
- package/lib/offline/storage.js +393 -284
- package/lib/offline/stored_content_utils.js +2 -0
- package/lib/player.js +249 -43
- package/lib/polyfill/media_capabilities.js +36 -15
- package/lib/polyfill/mediasource.js +6 -0
- package/lib/polyfill/orientation.js +1 -1
- package/lib/polyfill/patchedmediakeys_apple.js +4 -4
- package/lib/polyfill/patchedmediakeys_ms.js +4 -4
- package/lib/polyfill/patchedmediakeys_webkit.js +4 -4
- package/lib/polyfill/random_uuid.js +52 -0
- package/lib/text/cue.js +18 -0
- package/lib/text/mp4_ttml_parser.js +3 -0
- package/lib/text/text_engine.js +14 -2
- package/lib/text/ttml_text_parser.js +114 -60
- package/lib/text/ui_text_displayer.js +95 -41
- package/lib/util/cmcd_manager.js +672 -0
- package/lib/util/error.js +6 -0
- package/lib/util/fake_event.js +53 -7
- package/lib/util/language_utils.js +12 -0
- package/lib/util/mutex.js +52 -0
- package/lib/util/periods.js +102 -65
- package/lib/util/platform.js +13 -1
- package/lib/util/player_configuration.js +18 -0
- package/lib/util/stream_utils.js +99 -10
- package/lib/util/xml_utils.js +19 -0
- package/package.json +2 -2
- package/shaka-player.uncompiled.js +3 -0
- package/test/cast/cast_proxy_unit.js +12 -6
- package/test/cast/cast_utils_unit.js +1 -1
- package/test/dash/dash_parser_content_protection_unit.js +2 -0
- package/test/dash/dash_parser_live_unit.js +101 -1
- package/test/dash/dash_parser_manifest_unit.js +222 -2
- package/test/dash/dash_parser_segment_base_unit.js +2 -0
- package/test/dash/dash_parser_segment_list_unit.js +2 -1
- package/test/dash/dash_parser_segment_template_unit.js +2 -1
- package/test/hls/hls_live_unit.js +2 -0
- package/test/hls/hls_parser_unit.js +7 -1
- package/test/media/closed_caption_parser_unit.js +6 -1
- package/test/media/drm_engine_unit.js +47 -3
- package/test/media/quality_observer_unit.js +139 -0
- package/test/media/segment_reference_unit.js +16 -1
- package/test/media/streaming_engine_integration.js +4 -2
- package/test/media/streaming_engine_unit.js +147 -0
- package/test/net/http_plugin_unit.js +20 -15
- package/test/offline/storage_integration.js +108 -4
- package/test/player_integration.js +178 -8
- package/test/player_src_equals_integration.js +41 -8
- package/test/player_unit.js +19 -9
- package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
- package/test/test/assets/3675/dash_0.mpd +30 -0
- package/test/test/assets/3675/dash_1.mpd +30 -0
- package/test/test/assets/3675/dash_2.mpd +30 -0
- package/test/test/assets/3675/dash_3.mpd +30 -0
- package/test/test/assets/3675/dash_4.mpd +30 -0
- package/test/test/assets/3675/dash_5.mpd +26 -0
- package/test/test/assets/3675/init-stream0.m4s +0 -0
- package/test/test/assets/chapters.vtt +2 -2
- package/test/test/assets/chapters2.vtt +10 -0
- package/test/test/util/dash_parser_util.js +4 -0
- package/test/test/util/fake_ad.js +7 -0
- package/test/test/util/fake_ad_manager.js +1 -1
- package/test/test/util/fake_drm_engine.js +9 -2
- package/test/test/util/manifest_generator.js +3 -2
- package/test/test/util/test_scheme.js +14 -1
- package/test/test/util/ttml_utils.js +81 -0
- package/test/text/mp4_ttml_parser_unit.js +11 -18
- package/test/text/ttml_text_parser_unit.js +552 -227
- package/test/text/ui_text_displayer_unit.js +29 -17
- package/test/ui/localization_unit.js +15 -14
- package/test/ui/text_displayer_layout_unit.js +13 -1
- package/test/ui/ui_unit.js +250 -0
- package/test/util/cmcd_manager_unit.js +291 -0
- package/test/util/stream_utils_unit.js +45 -4
- package/third_party/closure-uri/uri.js +21 -0
- package/ui/airplay_button.js +1 -0
- package/ui/audio_language_selection.js +7 -0
- package/ui/cast_button.js +3 -3
- package/ui/context_menu.js +109 -0
- package/ui/controls.js +45 -13
- package/ui/controls.less +1 -0
- package/ui/enums.js +4 -0
- package/ui/externs/ui.js +28 -1
- package/ui/fast_forward_button.js +14 -5
- package/ui/fullscreen_button.js +1 -0
- package/ui/less/buttons.less +0 -4
- package/ui/less/containers.less +77 -7
- package/ui/less/overflow_menu.less +0 -10
- package/ui/less/tooltip.less +97 -0
- package/ui/locales/en.json +1 -0
- package/ui/locales/ru.json +6 -6
- package/ui/locales/source.json +4 -0
- package/ui/localization.js +28 -51
- package/ui/loop_button.js +5 -0
- package/ui/mute_button.js +2 -1
- package/ui/overflow_menu.js +5 -25
- package/ui/pip_button.js +7 -3
- package/ui/play_button.js +2 -2
- package/ui/playback_rate_selection.js +8 -9
- package/ui/resolution_selection.js +7 -0
- package/ui/rewind_button.js +15 -6
- package/ui/seek_bar.js +4 -2
- package/ui/settings_menu.js +36 -4
- package/ui/small_play_button.js +1 -0
- package/ui/statistics_button.js +253 -0
- package/ui/text_selection.js +12 -4
- package/ui/ui.js +30 -0
- package/ui/volume_bar.js +1 -1
- package/externs/media_capabilities.js +0 -16
|
@@ -138,7 +138,7 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
138
138
|
// Remove ad breaks from the timeline
|
|
139
139
|
this.onEvent_(
|
|
140
140
|
new shaka.util.FakeEvent(shaka.ads.AdManager.CUEPOINTS_CHANGED,
|
|
141
|
-
|
|
141
|
+
(new Map()).set('cuepoints', [])));
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
|
|
@@ -151,17 +151,14 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
151
151
|
|
|
152
152
|
const now = Date.now() / 1000;
|
|
153
153
|
const loadTime = now - this.requestAdsStartTime_;
|
|
154
|
-
this.onEvent_(
|
|
155
|
-
new
|
|
156
|
-
{'loadTime': loadTime}));
|
|
154
|
+
this.onEvent_(new shaka.util.FakeEvent(shaka.ads.AdManager.ADS_LOADED,
|
|
155
|
+
(new Map()).set('loadTime', loadTime)));
|
|
157
156
|
|
|
158
157
|
this.imaAdsManager_ = e.getAdsManager(this.video_);
|
|
159
158
|
|
|
160
159
|
this.onEvent_(new shaka.util.FakeEvent(
|
|
161
160
|
shaka.ads.AdManager.IMA_AD_MANAGER_LOADED,
|
|
162
|
-
|
|
163
|
-
'imaAdManager': this.imaAdsManager_,
|
|
164
|
-
}));
|
|
161
|
+
(new Map()).set('imaAdManager', this.imaAdsManager_)));
|
|
165
162
|
|
|
166
163
|
const cuePointStarts = this.imaAdsManager_.getCuePoints();
|
|
167
164
|
if (cuePointStarts.length) {
|
|
@@ -176,9 +173,9 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
176
173
|
cuePoints.push(shakaCuePoint);
|
|
177
174
|
}
|
|
178
175
|
|
|
179
|
-
this.onEvent_(
|
|
180
|
-
|
|
181
|
-
|
|
176
|
+
this.onEvent_(new shaka.util.FakeEvent(
|
|
177
|
+
shaka.ads.AdManager.CUEPOINTS_CHANGED,
|
|
178
|
+
(new Map()).set('cuepoints', cuePoints)));
|
|
182
179
|
}
|
|
183
180
|
|
|
184
181
|
this.addImaEventListeners_();
|
|
@@ -228,6 +225,15 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
228
225
|
* @private
|
|
229
226
|
*/
|
|
230
227
|
addImaEventListeners_() {
|
|
228
|
+
/**
|
|
229
|
+
* @param {!Event} e
|
|
230
|
+
* @param {string} type
|
|
231
|
+
*/
|
|
232
|
+
const convertEventAndSend = (e, type) => {
|
|
233
|
+
const data = (new Map()).set('originalEvent', e);
|
|
234
|
+
this.onEvent_(new shaka.util.FakeEvent(type, data));
|
|
235
|
+
};
|
|
236
|
+
|
|
231
237
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
232
238
|
google.ima.AdErrorEvent.Type.AD_ERROR, (error) => {
|
|
233
239
|
this.onAdError_(/** @type {!google.ima.AdErrorEvent} */ (error));
|
|
@@ -245,30 +251,22 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
245
251
|
|
|
246
252
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
247
253
|
google.ima.AdEvent.Type.FIRST_QUARTILE, (e) => {
|
|
248
|
-
|
|
249
|
-
new shaka.util.FakeEvent(shaka.ads.AdManager.AD_FIRST_QUARTILE,
|
|
250
|
-
{'originalEvent': e}));
|
|
254
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_FIRST_QUARTILE);
|
|
251
255
|
});
|
|
252
256
|
|
|
253
257
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
254
258
|
google.ima.AdEvent.Type.MIDPOINT, (e) => {
|
|
255
|
-
|
|
256
|
-
new shaka.util.FakeEvent(shaka.ads.AdManager.AD_MIDPOINT,
|
|
257
|
-
{'originalEvent': e}));
|
|
259
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_MIDPOINT);
|
|
258
260
|
});
|
|
259
261
|
|
|
260
262
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
261
263
|
google.ima.AdEvent.Type.THIRD_QUARTILE, (e) => {
|
|
262
|
-
|
|
263
|
-
new shaka.util.FakeEvent(shaka.ads.AdManager.AD_THIRD_QUARTILE,
|
|
264
|
-
{'originalEvent': e}));
|
|
264
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_THIRD_QUARTILE);
|
|
265
265
|
});
|
|
266
266
|
|
|
267
267
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
268
268
|
google.ima.AdEvent.Type.COMPLETE, (e) => {
|
|
269
|
-
|
|
270
|
-
new shaka.util.FakeEvent(shaka.ads.AdManager.AD_COMPLETE,
|
|
271
|
-
{'originalEvent': e}));
|
|
269
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_COMPLETE);
|
|
272
270
|
});
|
|
273
271
|
|
|
274
272
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
@@ -283,140 +281,102 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
283
281
|
|
|
284
282
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
285
283
|
google.ima.AdEvent.Type.SKIPPED, (e) => {
|
|
286
|
-
|
|
287
|
-
new shaka.util.FakeEvent(shaka.ads.AdManager.AD_SKIPPED,
|
|
288
|
-
{'originalEvent': e}));
|
|
284
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_SKIPPED);
|
|
289
285
|
});
|
|
290
286
|
|
|
291
287
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
292
288
|
google.ima.AdEvent.Type.VOLUME_CHANGED, (e) => {
|
|
293
|
-
|
|
294
|
-
new shaka.util.FakeEvent(shaka.ads.AdManager.AD_VOLUME_CHANGED,
|
|
295
|
-
{'originalEvent': e}));
|
|
289
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_VOLUME_CHANGED);
|
|
296
290
|
});
|
|
297
291
|
|
|
298
292
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
299
293
|
google.ima.AdEvent.Type.VOLUME_MUTED, (e) => {
|
|
300
|
-
|
|
301
|
-
new shaka.util.FakeEvent(shaka.ads.AdManager.AD_MUTED,
|
|
302
|
-
{'originalEvent': e}));
|
|
294
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_MUTED);
|
|
303
295
|
});
|
|
304
296
|
|
|
305
297
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
306
298
|
google.ima.AdEvent.Type.PAUSED, (e) => {
|
|
307
299
|
goog.asserts.assert(this.ad_ != null, 'Ad should not be null!');
|
|
308
300
|
this.ad_.setPaused(true);
|
|
309
|
-
|
|
310
|
-
new shaka.util.FakeEvent(shaka.ads.AdManager.AD_PAUSED,
|
|
311
|
-
{'originalEvent': e}));
|
|
301
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_PAUSED);
|
|
312
302
|
});
|
|
313
303
|
|
|
314
304
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
315
305
|
google.ima.AdEvent.Type.RESUMED, (e) => {
|
|
316
306
|
goog.asserts.assert(this.ad_ != null, 'Ad should not be null!');
|
|
317
307
|
this.ad_.setPaused(false);
|
|
318
|
-
|
|
319
|
-
new shaka.util.FakeEvent(shaka.ads.AdManager.AD_RESUMED,
|
|
320
|
-
{'originalEvent': e}));
|
|
308
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_RESUMED);
|
|
321
309
|
});
|
|
322
310
|
|
|
323
311
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
324
312
|
google.ima.AdEvent.Type.SKIPPABLE_STATE_CHANGED, (e) => {
|
|
325
313
|
goog.asserts.assert(this.ad_ != null, 'Ad should not be null!');
|
|
326
|
-
|
|
327
|
-
shaka.ads.AdManager.AD_SKIP_STATE_CHANGED,
|
|
328
|
-
{'originalEvent': e}));
|
|
314
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_SKIP_STATE_CHANGED);
|
|
329
315
|
});
|
|
330
316
|
|
|
331
317
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
332
318
|
google.ima.AdEvent.Type.CLICK, (e) => {
|
|
333
|
-
|
|
334
|
-
shaka.ads.AdManager.AD_CLICKED,
|
|
335
|
-
{'originalEvent': e}));
|
|
319
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_CLICKED);
|
|
336
320
|
});
|
|
337
321
|
|
|
338
322
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
339
323
|
google.ima.AdEvent.Type.AD_PROGRESS, (e) => {
|
|
340
|
-
|
|
341
|
-
shaka.ads.AdManager.AD_PROGRESS,
|
|
342
|
-
{'originalEvent': e}));
|
|
324
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_PROGRESS);
|
|
343
325
|
});
|
|
344
326
|
|
|
345
327
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
346
328
|
google.ima.AdEvent.Type.AD_BUFFERING, (e) => {
|
|
347
|
-
|
|
348
|
-
shaka.ads.AdManager.AD_BUFFERING,
|
|
349
|
-
{'originalEvent': e}));
|
|
329
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_BUFFERING);
|
|
350
330
|
});
|
|
351
331
|
|
|
352
332
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
353
333
|
google.ima.AdEvent.Type.IMPRESSION, (e) => {
|
|
354
|
-
|
|
355
|
-
shaka.ads.AdManager.AD_IMPRESSION,
|
|
356
|
-
{'originalEvent': e}));
|
|
334
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_IMPRESSION);
|
|
357
335
|
});
|
|
358
336
|
|
|
359
337
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
360
338
|
google.ima.AdEvent.Type.DURATION_CHANGE, (e) => {
|
|
361
|
-
|
|
362
|
-
shaka.ads.AdManager.AD_DURATION_CHANGED,
|
|
363
|
-
{'originalEvent': e}));
|
|
339
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_DURATION_CHANGED);
|
|
364
340
|
});
|
|
365
341
|
|
|
366
342
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
367
343
|
google.ima.AdEvent.Type.USER_CLOSE, (e) => {
|
|
368
|
-
|
|
369
|
-
shaka.ads.AdManager.AD_CLOSED,
|
|
370
|
-
{'originalEvent': e}));
|
|
344
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_CLOSED);
|
|
371
345
|
});
|
|
372
346
|
|
|
373
347
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
374
348
|
google.ima.AdEvent.Type.LOADED, (e) => {
|
|
375
|
-
|
|
376
|
-
shaka.ads.AdManager.AD_LOADED,
|
|
377
|
-
{'originalEvent': e}));
|
|
349
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_LOADED);
|
|
378
350
|
});
|
|
379
351
|
|
|
380
352
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
381
353
|
google.ima.AdEvent.Type.ALL_ADS_COMPLETED, (e) => {
|
|
382
|
-
|
|
383
|
-
shaka.ads.AdManager.ALL_ADS_COMPLETED,
|
|
384
|
-
{'originalEvent': e}));
|
|
354
|
+
convertEventAndSend(e, shaka.ads.AdManager.ALL_ADS_COMPLETED);
|
|
385
355
|
});
|
|
386
356
|
|
|
387
357
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
388
358
|
google.ima.AdEvent.Type.LINEAR_CHANGED, (e) => {
|
|
389
|
-
|
|
390
|
-
shaka.ads.AdManager.AD_LINEAR_CHANGED,
|
|
391
|
-
{'originalEvent': e}));
|
|
359
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_LINEAR_CHANGED);
|
|
392
360
|
});
|
|
393
361
|
|
|
394
362
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
395
363
|
google.ima.AdEvent.Type.AD_METADATA, (e) => {
|
|
396
|
-
|
|
397
|
-
shaka.ads.AdManager.AD_METADATA,
|
|
398
|
-
{'originalEvent': e}));
|
|
364
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_METADATA);
|
|
399
365
|
});
|
|
400
366
|
|
|
401
367
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
402
368
|
google.ima.AdEvent.Type.LOG, (e) => {
|
|
403
|
-
|
|
404
|
-
shaka.ads.AdManager.AD_RECOVERABLE_ERROR,
|
|
405
|
-
{'originalEvent': e}));
|
|
369
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_RECOVERABLE_ERROR);
|
|
406
370
|
});
|
|
407
371
|
|
|
408
372
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
409
373
|
google.ima.AdEvent.Type.AD_BREAK_READY, (e) => {
|
|
410
|
-
|
|
411
|
-
shaka.ads.AdManager.AD_BREAK_READY,
|
|
412
|
-
{'originalEvent': e}));
|
|
374
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_BREAK_READY);
|
|
413
375
|
});
|
|
414
376
|
|
|
415
377
|
this.eventManager_.listen(this.imaAdsManager_,
|
|
416
378
|
google.ima.AdEvent.Type.INTERACTION, (e) => {
|
|
417
|
-
|
|
418
|
-
shaka.ads.AdManager.AD_INTERACTION,
|
|
419
|
-
{'originalEvent': e}));
|
|
379
|
+
convertEventAndSend(e, shaka.ads.AdManager.AD_INTERACTION);
|
|
420
380
|
});
|
|
421
381
|
}
|
|
422
382
|
|
|
@@ -430,14 +390,16 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
430
390
|
|
|
431
391
|
const imaAd = e.getAd();
|
|
432
392
|
this.ad_ = new shaka.ads.ClientSideAd(imaAd, this.imaAdsManager_);
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
this.
|
|
440
|
-
|
|
393
|
+
const data = new Map()
|
|
394
|
+
.set('ad', this.ad_)
|
|
395
|
+
.set('sdkAdObject', imaAd)
|
|
396
|
+
.set('originalEvent', e);
|
|
397
|
+
this.onEvent_(new shaka.util.FakeEvent(
|
|
398
|
+
shaka.ads.AdManager.AD_STARTED, data));
|
|
399
|
+
if (this.ad_.isLinear()) {
|
|
400
|
+
this.adContainer_.setAttribute('ad-active', 'true');
|
|
401
|
+
this.video_.pause();
|
|
402
|
+
}
|
|
441
403
|
}
|
|
442
404
|
|
|
443
405
|
/**
|
|
@@ -446,8 +408,10 @@ shaka.ads.ClientSideAdManager = class {
|
|
|
446
408
|
*/
|
|
447
409
|
onAdComplete_(e) {
|
|
448
410
|
this.onEvent_(new shaka.util.FakeEvent(shaka.ads.AdManager.AD_STOPPED,
|
|
449
|
-
|
|
450
|
-
this.
|
|
451
|
-
|
|
411
|
+
(new Map()).set('originalEvent', e)));
|
|
412
|
+
if (this.ad_.isLinear()) {
|
|
413
|
+
this.adContainer_.removeAttribute('ad-active');
|
|
414
|
+
this.video_.play();
|
|
415
|
+
}
|
|
452
416
|
}
|
|
453
417
|
};
|
|
@@ -80,9 +80,7 @@ shaka.ads.ServerSideAdManager = class {
|
|
|
80
80
|
|
|
81
81
|
this.onEvent_(new shaka.util.FakeEvent(
|
|
82
82
|
shaka.ads.AdManager.IMA_STREAM_MANAGER_LOADED,
|
|
83
|
-
|
|
84
|
-
'imaStreamManager': this.streamManager_,
|
|
85
|
-
}));
|
|
83
|
+
(new Map()).set('imaStreamManager', this.streamManager_)));
|
|
86
84
|
|
|
87
85
|
// Events
|
|
88
86
|
this.eventManager_.listen(this.streamManager_,
|
|
@@ -309,7 +307,7 @@ shaka.ads.ServerSideAdManager = class {
|
|
|
309
307
|
}
|
|
310
308
|
|
|
311
309
|
this.onEvent_(new shaka.util.FakeEvent(shaka.ads.AdManager.AD_STARTED,
|
|
312
|
-
|
|
310
|
+
(new Map()).set('ad', this.ad_)));
|
|
313
311
|
this.adContainer_.setAttribute('ad-active', 'true');
|
|
314
312
|
}
|
|
315
313
|
|
|
@@ -335,9 +333,8 @@ shaka.ads.ServerSideAdManager = class {
|
|
|
335
333
|
onLoaded_(e) {
|
|
336
334
|
const now = Date.now() / 1000;
|
|
337
335
|
const loadTime = now - this.streamRequestStartTime_;
|
|
338
|
-
this.onEvent_(
|
|
339
|
-
new
|
|
340
|
-
{'loadTime': loadTime}));
|
|
336
|
+
this.onEvent_(new shaka.util.FakeEvent(shaka.ads.AdManager.ADS_LOADED,
|
|
337
|
+
(new Map()).set('loadTime', loadTime)));
|
|
341
338
|
|
|
342
339
|
const streamData = e.getStreamData();
|
|
343
340
|
const url = streamData.url;
|
|
@@ -403,8 +400,8 @@ shaka.ads.ServerSideAdManager = class {
|
|
|
403
400
|
|
|
404
401
|
this.currentCuePoints_ = cuePoints;
|
|
405
402
|
|
|
406
|
-
this.onEvent_(
|
|
407
|
-
|
|
408
|
-
|
|
403
|
+
this.onEvent_(new shaka.util.FakeEvent(
|
|
404
|
+
shaka.ads.AdManager.CUEPOINTS_CHANGED,
|
|
405
|
+
(new Map()).set('cuepoints', cuePoints)));
|
|
409
406
|
}
|
|
410
407
|
};
|
package/lib/cast/cast_proxy.js
CHANGED
|
@@ -525,7 +525,8 @@ shaka.cast.CastProxy = class extends shaka.util.FakeEventTarget {
|
|
|
525
525
|
goog.asserts.assert(error instanceof shaka.util.Error,
|
|
526
526
|
'Wrong error type!');
|
|
527
527
|
const eventType = shaka.Player.EventName.Error;
|
|
528
|
-
const
|
|
528
|
+
const data = (new Map()).set('detail', error);
|
|
529
|
+
const event = new shaka.util.FakeEvent(eventType, data);
|
|
529
530
|
this.localPlayer_.dispatchEvent(event);
|
|
530
531
|
});
|
|
531
532
|
}
|
|
@@ -598,7 +599,7 @@ shaka.cast.CastProxy = class extends shaka.util.FakeEventTarget {
|
|
|
598
599
|
|
|
599
600
|
// Convert this real Event into a FakeEvent for dispatch from our
|
|
600
601
|
// FakeEventListener.
|
|
601
|
-
const fakeEvent =
|
|
602
|
+
const fakeEvent = shaka.util.FakeEvent.fromRealEvent(event);
|
|
602
603
|
this.videoEventTarget_.dispatchEvent(fakeEvent);
|
|
603
604
|
}
|
|
604
605
|
|
|
@@ -407,7 +407,8 @@ shaka.cast.CastReceiver = class extends shaka.util.FakeEventTarget {
|
|
|
407
407
|
goog.asserts.assert(error instanceof shaka.util.Error,
|
|
408
408
|
'Wrong error type!');
|
|
409
409
|
const eventType = shaka.Player.EventName.Error;
|
|
410
|
-
const
|
|
410
|
+
const data = (new Map()).set('detail', error);
|
|
411
|
+
const event = new shaka.util.FakeEvent(eventType, data);
|
|
411
412
|
// Only dispatch the event if the player still exists.
|
|
412
413
|
if (this.player_) {
|
|
413
414
|
this.player_.dispatchEvent(event);
|
package/lib/cast/cast_sender.js
CHANGED
|
@@ -647,7 +647,7 @@ shaka.cast.CastSender = class {
|
|
|
647
647
|
case 'event': {
|
|
648
648
|
const targetName = message['targetName'];
|
|
649
649
|
const event = message['event'];
|
|
650
|
-
const fakeEvent =
|
|
650
|
+
const fakeEvent = shaka.util.FakeEvent.fromRealEvent(event);
|
|
651
651
|
this.onRemoteEvent_(targetName, fakeEvent);
|
|
652
652
|
break;
|
|
653
653
|
}
|
|
@@ -725,7 +725,7 @@ shaka.cast.CastSender = class {
|
|
|
725
725
|
|
|
726
726
|
// Dispatch it through the Player proxy
|
|
727
727
|
const fakeEvent = new shaka.util.FakeEvent(
|
|
728
|
-
'error',
|
|
728
|
+
'error', (new Map()).set('detail', shakaError));
|
|
729
729
|
this.onRemoteEvent_('player', fakeEvent);
|
|
730
730
|
|
|
731
731
|
// Force this session to disconnect and transfer playback to the local
|