Files
shaka-player/test/util/platform_unit.js
T
Wojciech Tyczyński 9e26166c40 fix: patch setServerCertificate() on older Tizens & webOS (#6696)
We've tried to enable setting server certificates to optimize playback
start, but turned out that with our widevine certificate shaka was
throwing 6004 error. The issue is not reproducible starting from Tizen
5.5. The same certificate was working properly also on Chrome.
2024-05-29 11:07:17 +02:00

112 lines
4.4 KiB
JavaScript

/*! @license
* Shaka Player
* Copyright 2016 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
describe('Platform', () => {
const originalUserAgent = navigator.userAgent;
/* eslint-disable max-len */
// See: https://developer.samsung.com/smarttv/develop/guides/fundamentals/retrieving-platform-information.html
const tizen50 = 'Mozilla/5.0 (SMART-TV; LINUX; Tizen 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/5.0 TV Safari/537.36';
const tizen55 = 'Mozilla/5.0 (SMART-TV; LINUX; Tizen 5.5) AppleWebKit/537.36 (KHTML, like Gecko) 69.0.3497.106.1/5.5 TV Safari/537.36';
const tizen60 = 'Mozilla/5.0 (SMART-TV; LINUX; Tizen 6.0) AppleWebKit/537.36 (KHTML, like Gecko) 76.0.3809.146/6.0 TV Safari/537.36';
const tizen65 = 'Mozilla/5.0 (SMART-TV; LINUX; Tizen 6.5) AppleWebKit/537.36 (KHTML, like Gecko) 85.0.4183.93/6.5 TV Safari/537.36';
const tizen70 = 'Mozilla/5.0 (SMART-TV; LINUX; Tizen 7.0) AppleWebKit/537.36 (KHTML, like Gecko) 94.0.4606.31/7.0 TV Safari/537.36';
// See: https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine#useragent-string
const webOs3 = 'Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.2.1 Chrome/38.0.2125.122 Safari/537.36 WebAppManager';
const webOs4 = 'Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.34 Safari/537.36 WebAppManager';
const webOs5 = 'Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 WebAppManager';
/* eslint-enable max-len */
afterEach(() => {
setUserAgent(originalUserAgent);
});
it('checks is Tizen 5', () => {
setUserAgent(webOs3);
expect(shaka.util.Platform.isTizen5()).toBe(false);
setUserAgent(tizen50);
expect(shaka.util.Platform.isTizen5()).toBe(true);
setUserAgent(tizen55);
expect(shaka.util.Platform.isTizen5()).toBe(true);
setUserAgent(tizen60);
expect(shaka.util.Platform.isTizen5()).toBe(false);
setUserAgent(tizen65);
expect(shaka.util.Platform.isTizen5()).toBe(false);
setUserAgent(tizen70);
expect(shaka.util.Platform.isTizen5()).toBe(false);
});
it('checks is Tizen 5.0', () => {
setUserAgent(webOs3);
expect(shaka.util.Platform.isTizen5_0()).toBe(false);
setUserAgent(tizen50);
expect(shaka.util.Platform.isTizen5_0()).toBe(true);
setUserAgent(tizen55);
expect(shaka.util.Platform.isTizen5_0()).toBe(false);
setUserAgent(tizen60);
expect(shaka.util.Platform.isTizen5_0()).toBe(false);
setUserAgent(tizen65);
expect(shaka.util.Platform.isTizen5_0()).toBe(false);
setUserAgent(tizen70);
expect(shaka.util.Platform.isTizen5_0()).toBe(false);
});
it('checks is Tizen 6', () => {
setUserAgent(webOs3);
expect(shaka.util.Platform.isTizen6()).toBe(false);
setUserAgent(tizen50);
expect(shaka.util.Platform.isTizen6()).toBe(false);
setUserAgent(tizen55);
expect(shaka.util.Platform.isTizen6()).toBe(false);
setUserAgent(tizen60);
expect(shaka.util.Platform.isTizen6()).toBe(true);
setUserAgent(tizen65);
expect(shaka.util.Platform.isTizen6()).toBe(true);
setUserAgent(tizen70);
expect(shaka.util.Platform.isTizen6()).toBe(false);
});
it('checks is webOS 3', () => {
setUserAgent(tizen50);
expect(shaka.util.Platform.isWebOS3()).toBe(false);
setUserAgent(webOs3);
expect(shaka.util.Platform.isWebOS3()).toBe(true);
setUserAgent(webOs4);
expect(shaka.util.Platform.isWebOS3()).toBe(false);
setUserAgent(webOs5);
expect(shaka.util.Platform.isWebOS3()).toBe(false);
});
it('checks is webOS 4', () => {
setUserAgent(tizen50);
expect(shaka.util.Platform.isWebOS4()).toBe(false);
setUserAgent(webOs3);
expect(shaka.util.Platform.isWebOS4()).toBe(false);
setUserAgent(webOs4);
expect(shaka.util.Platform.isWebOS4()).toBe(true);
setUserAgent(webOs5);
expect(shaka.util.Platform.isWebOS4()).toBe(false);
});
it('checks is webOS 5', () => {
setUserAgent(tizen50);
expect(shaka.util.Platform.isWebOS5()).toBe(false);
setUserAgent(webOs3);
expect(shaka.util.Platform.isWebOS5()).toBe(false);
setUserAgent(webOs4);
expect(shaka.util.Platform.isWebOS5()).toBe(false);
setUserAgent(webOs5);
expect(shaka.util.Platform.isWebOS5()).toBe(true);
});
});
/** @param {string} userAgent */
function setUserAgent(userAgent) {
Object.defineProperty(
navigator, 'userAgent', {value: userAgent, configurable: true});
}