senza-sdk 4.3.2-2e967be.0 → 4.3.2-a581729.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/dist/bundle.js +1 -1
- package/package.json +4 -4
- package/src/implementation/alarmManager.js +2 -0
- package/src/implementation/api.js +1 -0
- package/src/implementation/deviceManager.js +2 -0
- package/src/implementation/lifecycle.js +2 -0
- package/src/implementation/messageManager.js +2 -0
- package/src/implementation/remotePlayer.js +104 -3
- package/src/interface/remotePlayer.js +26 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "senza-sdk",
|
|
3
|
-
"version": "4.3.2-
|
|
3
|
+
"version": "4.3.2-a581729.0",
|
|
4
4
|
"main": "./src/api.js",
|
|
5
5
|
"description": "API for Senza application",
|
|
6
6
|
"license": "MIT",
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
},
|
|
52
52
|
"src/interface": {
|
|
53
53
|
"branches": 68.42,
|
|
54
|
-
"functions": 40
|
|
55
|
-
"lines": 65.
|
|
56
|
-
"statements":
|
|
54
|
+
"functions": 40,
|
|
55
|
+
"lines": 65.28,
|
|
56
|
+
"statements": 65.65
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
},
|
|
@@ -27,6 +27,7 @@ class AlarmManager extends AlarmManagerInterface {
|
|
|
27
27
|
* @private
|
|
28
28
|
*/
|
|
29
29
|
_init() {
|
|
30
|
+
sdkLogger.log("Initializing AlarmManager");
|
|
30
31
|
if (!this._isInitialized) {
|
|
31
32
|
this._isInitialized = true;
|
|
32
33
|
this._addSenzaEventListeners();
|
|
@@ -94,6 +95,7 @@ class AlarmManager extends AlarmManagerInterface {
|
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
);
|
|
98
|
+
sdkLogger.log("[AlarmManager] Added event listeners for system events");
|
|
97
99
|
}
|
|
98
100
|
|
|
99
101
|
/**
|
|
@@ -134,6 +134,7 @@ export async function init(interfaceApiVersion, showSequenceFunc, initSequenceFu
|
|
|
134
134
|
alarmManager._init();
|
|
135
135
|
deviceManager._init();
|
|
136
136
|
messageManager._init();
|
|
137
|
+
sdkLogger.log("All submodules initialized");
|
|
137
138
|
|
|
138
139
|
|
|
139
140
|
const devSequence = sessionInfoObj?.settings?.["ui-streamer"]?.devSequence;
|
|
@@ -54,6 +54,7 @@ class DeviceManager extends DeviceManagerInterface {
|
|
|
54
54
|
* @private
|
|
55
55
|
*/
|
|
56
56
|
_init() {
|
|
57
|
+
sdkLogger.log("Initializing DeviceManager");
|
|
57
58
|
if (!this._isInitialized) {
|
|
58
59
|
this._isInitialized = true;
|
|
59
60
|
this._addSenzaEventListeners();
|
|
@@ -71,6 +72,7 @@ class DeviceManager extends DeviceManagerInterface {
|
|
|
71
72
|
wifiInfo.bssid = e.detail.bssid;
|
|
72
73
|
this.dispatchEvent(new Event("wifiInfoUpdated"));
|
|
73
74
|
});
|
|
75
|
+
sdkLogger.log("[DeviceManager] Added event listeners for system events");
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
get deviceInfo() {
|
|
@@ -71,6 +71,7 @@ class Lifecycle extends LifecycleInterface {
|
|
|
71
71
|
* @param {number} [uiStreamerSettings.remotePlayerApiVersion=1] - Remote player API version
|
|
72
72
|
*/
|
|
73
73
|
async _init(uiStreamerSettings, triggerEvent) {
|
|
74
|
+
sdkLogger.log("Initializing Lifecycle");
|
|
74
75
|
if (window.cefQuery) {
|
|
75
76
|
|
|
76
77
|
// Get UI state
|
|
@@ -212,6 +213,7 @@ class Lifecycle extends LifecycleInterface {
|
|
|
212
213
|
this._startCountdown(event.detail.isPlaying);
|
|
213
214
|
}
|
|
214
215
|
});
|
|
216
|
+
sdkLogger.log("[Lifecycle] Added event listeners for system events");
|
|
215
217
|
}
|
|
216
218
|
|
|
217
219
|
/**
|
|
@@ -15,6 +15,7 @@ class MessageManager extends MessageManagerInterface {
|
|
|
15
15
|
* @private
|
|
16
16
|
*/
|
|
17
17
|
_init() {
|
|
18
|
+
sdkLogger.log("Initializing MessageManager");
|
|
18
19
|
if (!this._isInitialized) {
|
|
19
20
|
this._isInitialized = true;
|
|
20
21
|
this._addSenzaEventListeners();
|
|
@@ -29,6 +30,7 @@ class MessageManager extends MessageManagerInterface {
|
|
|
29
30
|
sdkLogger.log("Got hs/externalEvent", JSON.stringify(e.detail));
|
|
30
31
|
this.dispatchEvent(new CustomEvent("message", { detail: { eventName: e.detail.eventName, payload: e.detail.payload, fcid: e.detail.fcid } }));
|
|
31
32
|
});
|
|
33
|
+
sdkLogger.log("[MessageManager] Added event listeners for system events");
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
async registerGroups(groups) {
|
|
@@ -146,9 +146,7 @@ class RemotePlayer extends RemotePlayerInterface {
|
|
|
146
146
|
* @param {Object} uiStreamerSettings ui-streamer portion of the settings taken from session info
|
|
147
147
|
* */
|
|
148
148
|
async _init(uiStreamerSettings, triggerEvent) {
|
|
149
|
-
|
|
150
|
-
this._systemEventListenersAdded = true;
|
|
151
|
-
}
|
|
149
|
+
sdkLogger.info("Initializing RemotePlayer");
|
|
152
150
|
let playerState = {
|
|
153
151
|
isLoaded: false,
|
|
154
152
|
playbackUrl: ""
|
|
@@ -212,6 +210,7 @@ class RemotePlayer extends RemotePlayerInterface {
|
|
|
212
210
|
* @private Add event listeners for system events
|
|
213
211
|
*/
|
|
214
212
|
_addSenzaEventListeners() {
|
|
213
|
+
|
|
215
214
|
typeof document !== "undefined" && document.addEventListener("hs/remotePlayerEvent", (e) => {
|
|
216
215
|
sdkLogger.info("Got hs/remotePlayerEvent event with detail", JSON.stringify(e?.detail));
|
|
217
216
|
this.dispatchEvent(new Event(e?.detail?.eventName));
|
|
@@ -294,6 +293,7 @@ class RemotePlayer extends RemotePlayerInterface {
|
|
|
294
293
|
};
|
|
295
294
|
this.dispatchEvent(licenseRequestEvent);
|
|
296
295
|
});
|
|
296
|
+
sdkLogger.log("[RemotePlayer] Added event listeners for system events");
|
|
297
297
|
}
|
|
298
298
|
|
|
299
299
|
/** @private update audio and text tracks
|
|
@@ -1367,6 +1367,61 @@ class RemotePlayer extends RemotePlayerInterface {
|
|
|
1367
1367
|
}
|
|
1368
1368
|
}
|
|
1369
1369
|
|
|
1370
|
+
/**
|
|
1371
|
+
* The function sets a blackout time for the screen.
|
|
1372
|
+
* The blackout time is the time when the screen will be blacked out.
|
|
1373
|
+
* This is useful for parental controls where the screen should be blacked out during certain times
|
|
1374
|
+
*
|
|
1375
|
+
* @param {Date} date
|
|
1376
|
+
* @returns {Promise<void>} A Promise that resolves once the blackout time is set.
|
|
1377
|
+
* @throws {RemotePlayerError} If the player is not initialized or not loaded. if date is not a Date object or if the remote player api version is not supported
|
|
1378
|
+
*/
|
|
1379
|
+
setScreenBlackout(date) {
|
|
1380
|
+
|
|
1381
|
+
if (!this._isInitialized) {
|
|
1382
|
+
throw new RemotePlayerError(6500, "Cannot call setScreenBlackout() if remote player is not initialized");
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
if (this._loadMode !== this.LoadMode.LOADED) {
|
|
1386
|
+
throw new RemotePlayerError(6001, "Cannot call setScreenBlackout() if player is not loaded");
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
if (!(date instanceof Date)) {
|
|
1390
|
+
throw new RemotePlayerError(6503, `date param must be a ${typeof new Date()} object but got ${typeof date}`);
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
if (this._remotePlayerApiVersion < 2) {
|
|
1394
|
+
throw new RemotePlayerError(6504, `setScreenBlackout() is not supported in remotePlayerApiVersion=${this._remotePlayerApiVersion}`);
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1397
|
+
const blackoutTime = (date.getTime()/1000).toFixed(2);
|
|
1398
|
+
sdkLogger.info(`remotePlayer.setScreenBlackout(): setting blackout time to ${blackoutTime}`);
|
|
1399
|
+
return this._setScreenBlackout(blackoutTime);
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
/**
|
|
1403
|
+
* The function resets the currently set blackout time for the screen.
|
|
1404
|
+
* This is useful for parental controls to be reset the blackout time after it has been set.
|
|
1405
|
+
*
|
|
1406
|
+
* @returns {Promise<void>} A Promise that resolves once the blackout time is reset.
|
|
1407
|
+
* @throws {RemotePlayerError} If the player is not initialized or not loaded. if the remote player api version is not supported
|
|
1408
|
+
*/
|
|
1409
|
+
resetScreenBlackout() {
|
|
1410
|
+
if (!this._isInitialized) {
|
|
1411
|
+
throw new RemotePlayerError(6500, "Cannot call resetScreenBlackout() if remote player is not initialized");
|
|
1412
|
+
}
|
|
1413
|
+
|
|
1414
|
+
if (this._loadMode !== this.LoadMode.LOADED) {
|
|
1415
|
+
throw new RemotePlayerError(6001, "Cannot call resetScreenBlackout() if player is not loaded");
|
|
1416
|
+
}
|
|
1417
|
+
|
|
1418
|
+
if (this._remotePlayerApiVersion < 2) {
|
|
1419
|
+
throw new RemotePlayerError(6504, `resetScreenBlackout() is not supported in remotePlayerApiVersion=${this._remotePlayerApiVersion}`);
|
|
1420
|
+
}
|
|
1421
|
+
sdkLogger.info("remotePlayer.resetScreenBlackout(): resetting blackout time");
|
|
1422
|
+
return this._setScreenBlackout(0);
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1370
1425
|
/**
|
|
1371
1426
|
* Getter/Setter for currentTime
|
|
1372
1427
|
*/
|
|
@@ -1718,6 +1773,52 @@ class RemotePlayer extends RemotePlayerInterface {
|
|
|
1718
1773
|
sdkLogger.log(`remotePlayer _atomicSetSubtitleLanguage: textTrackId=${textTrackId} ended.`);
|
|
1719
1774
|
return setLanguageError ? Promise.reject(setLanguageError) : Promise.resolve();
|
|
1720
1775
|
}
|
|
1776
|
+
|
|
1777
|
+
_setScreenBlackout(blackoutTime) {
|
|
1778
|
+
if (window.cefQuery) {
|
|
1779
|
+
const FCID = getFCID();
|
|
1780
|
+
const logger = sdkLogger.withFields({ FCID });
|
|
1781
|
+
logger.log(`sending screenBlackout action at ${blackoutTime}`);
|
|
1782
|
+
const message = {
|
|
1783
|
+
type: "remotePlayer.screenBlackout",
|
|
1784
|
+
class: "remotePlayer",
|
|
1785
|
+
action: "screenBlackout",
|
|
1786
|
+
fcid: FCID,
|
|
1787
|
+
blackoutTime
|
|
1788
|
+
};
|
|
1789
|
+
const request = { target: "TC", waitForResponse: true, message: JSON.stringify(message) };
|
|
1790
|
+
return new Promise((resolve, reject) => {
|
|
1791
|
+
let timerId = 0;
|
|
1792
|
+
const timeBeforeSendingRequest = Date.now();
|
|
1793
|
+
const queryId = window.cefQuery({
|
|
1794
|
+
request: JSON.stringify(request),
|
|
1795
|
+
persistent: false,
|
|
1796
|
+
onSuccess: () => {
|
|
1797
|
+
const duration = Date.now() - timeBeforeSendingRequest;
|
|
1798
|
+
logger.withFields({ duration }).log(`setBlackoutTime completed successfully after ${duration} ms`);
|
|
1799
|
+
timerId = clearTimer(timerId);
|
|
1800
|
+
resolve();
|
|
1801
|
+
},
|
|
1802
|
+
onFailure: (code, msg) => {
|
|
1803
|
+
const duration = Date.now() - timeBeforeSendingRequest;
|
|
1804
|
+
logger.withFields({ duration }).log(`setBlackoutTime failed after ${duration} ms. Error code: ${code}, error message: ${msg}`);
|
|
1805
|
+
timerId = clearTimer(timerId);
|
|
1806
|
+
reject(new RemotePlayerError(code, msg));
|
|
1807
|
+
}
|
|
1808
|
+
});
|
|
1809
|
+
|
|
1810
|
+
logger.log(`window.cefQuery for screenBlackout returned query id ${queryId}`);
|
|
1811
|
+
const timeout = this._remotePlayerConfirmationTimeout + 1000;
|
|
1812
|
+
timerId = setTimeout(() => {
|
|
1813
|
+
logger.log(`screenBlackout reached timeout of ${timeout} ms, canceling query id ${queryId}`);
|
|
1814
|
+
window.cefQueryCancel(queryId);
|
|
1815
|
+
reject(new RemotePlayerError(6000, `screenBlackout reached timeout of ${timeout} ms`));
|
|
1816
|
+
}, timeout, queryId);
|
|
1817
|
+
});
|
|
1818
|
+
}
|
|
1819
|
+
sdkLogger.error("screenBlackout: window.cefQuery is undefined");
|
|
1820
|
+
return Promise.resolve(undefined);
|
|
1821
|
+
}
|
|
1721
1822
|
}
|
|
1722
1823
|
/**
|
|
1723
1824
|
*
|
|
@@ -116,6 +116,8 @@ export class RemotePlayerError extends Error {
|
|
|
116
116
|
* | 6500 | Player | remotePlayer api was called before initializing remotePlayer |
|
|
117
117
|
* | 6501 | Player | load() was called while previous load/unload was still in progress |
|
|
118
118
|
* | 6502 | Player | unload() was called while previous unload/load was still in progress |
|
|
119
|
+
* | 6503 | Player | The remote player api call has invalid parameters |
|
|
120
|
+
* | 6504 | Player | The remote player api call has invalid api version |
|
|
119
121
|
* | 8001 | Player | Error pulling manifest. bad parameters |
|
|
120
122
|
* | 8002 | Player | Error pulling manifest. filters returned no data |
|
|
121
123
|
* | 8003 | Player | Error pulling manifest. fetch error |
|
|
@@ -397,6 +399,30 @@ class RemotePlayer extends EventTarget {
|
|
|
397
399
|
return noop("RemotePlayer.setTextTrackVisibility", visible);
|
|
398
400
|
}
|
|
399
401
|
|
|
402
|
+
/**
|
|
403
|
+
* The function sets a blackout time for the screen.
|
|
404
|
+
* The blackout time is the time when the screen will be blacked out.
|
|
405
|
+
* This is useful for parental controls where the screen should be blacked out during certain times
|
|
406
|
+
*
|
|
407
|
+
* @param {Date} date
|
|
408
|
+
* @returns {Promise<void>} A Promise that resolves once the blackout time is set.
|
|
409
|
+
* @throws {RemotePlayerError} If the player is not initialized or not loaded. if date is not a Date object or if the remote player api version is not supported
|
|
410
|
+
*/
|
|
411
|
+
setScreenBlackout(date) {
|
|
412
|
+
return noop("RemotePlayer.setScreenBlackout", date);
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* The function resets the currently set blackout time for the screen.
|
|
417
|
+
* This is useful for parental controls to be reset the blackout time after it has been set.
|
|
418
|
+
*
|
|
419
|
+
* @returns {Promise<void>} A Promise that resolves once the blackout time is reset.
|
|
420
|
+
* @throws {RemotePlayerError} If the player is not initialized or not loaded. if the remote player api version is not supported
|
|
421
|
+
*/
|
|
422
|
+
resetScreenBlackout() {
|
|
423
|
+
return noop("RemotePlayer.resetScreenBlackout");
|
|
424
|
+
}
|
|
425
|
+
|
|
400
426
|
/**
|
|
401
427
|
* Getter/Setter for currentTime
|
|
402
428
|
*/
|