Bug 1066410 - Serious color distortion happened when plays WebRTC. r=jesup, a=bajaj
[gecko.git] / dom / workers / test / worker_wrapper.js
blobdf32905d9c6e1c1c3d68745ec9706e98694822e2
1 // Any copyright is dedicated to the Public Domain.
2 // http://creativecommons.org/publicdomain/zero/1.0/
3 //
4 // Worker-side wrapper script for the worker_driver.js helper code.  See
5 // the comments at the top of worker_driver.js for more information.
7 function ok(a, msg) {
8   dump("OK: " + !!a + "  =>  " + a + ": " + msg + "\n");
9   postMessage({type: 'status', status: !!a, msg: a + ": " + msg });
12 function is(a, b, msg) {
13   dump("IS: " + (a===b) + "  =>  " + a + " | " + b + ": " + msg + "\n");
14   postMessage({type: 'status', status: a === b, msg: a + " === " + b + ": " + msg });
17 function workerTestArrayEquals(a, b) {
18   if (!Array.isArray(a) || !Array.isArray(b) || a.length != b.length) {
19     return false;
20   }
21   for (var i = 0, n = a.length; i < n; ++i) {
22     if (a[i] !== b[i]) {
23       return false;
24     }
25   }
26   return true;
29 function workerTestDone() {
30   postMessage({ type: 'finish' });
33 function workerTestGetPrefs(prefs, cb) {
34   addEventListener('message', function workerTestGetPrefsCB(e) {
35     if (e.data.type != 'returnPrefs' ||
36         !workerTestArrayEquals(prefs, e.data.prefs)) {
37       return;
38     }
39     removeEventListener('message', workerTestGetPrefsCB);
40     cb(e.data.result);
41   });
42   postMessage({
43     type: 'getPrefs',
44     prefs: prefs
45   });
48 function workerTestGetPermissions(permissions, cb) {
49   addEventListener('message', function workerTestGetPermissionsCB(e) {
50     if (e.data.type != 'returnPermissions' ||
51         !workerTestArrayEquals(permissions, e.data.permissions)) {
52       return;
53     }
54     removeEventListener('message', workerTestGetPermissionsCB);
55     cb(e.data.result);
56   });
57   postMessage({
58     type: 'getPermissions',
59     permissions: permissions
60   });
63 function workerTestGetVersion(cb) {
64   addEventListener('message', function workerTestGetVersionCB(e) {
65     if (e.data.type !== 'returnVersion') {
66       return;
67     }
68     removeEventListener('message', workerTestGetVersionCB);
69     cb(e.data.result);
70   });
71   postMessage({
72     type: 'getVersion'
73   });
76 function workerTestGetUserAgent(cb) {
77   addEventListener('message', function workerTestGetUserAgentCB(e) {
78     if (e.data.type !== 'returnUserAgent') {
79       return;
80     }
81     removeEventListener('message', workerTestGetUserAgentCB);
82     cb(e.data.result);
83   });
84   postMessage({
85     type: 'getUserAgent'
86   });
89 function workerTestGetOSCPU(cb) {
90   addEventListener('message', function workerTestGetOSCPUCB(e) {
91     if (e.data.type !== 'returnOSCPU') {
92       return;
93     }
94     removeEventListener('message', workerTestGetOSCPUCB);
95     cb(e.data.result);
96   });
97   postMessage({
98     type: 'getOSCPU'
99   });
102 addEventListener('message', function workerWrapperOnMessage(e) {
103   removeEventListener('message', workerWrapperOnMessage);
104   var data = e.data;
105   try {
106     importScripts(data.script);
107   } catch(e) {
108     postMessage({
109       type: 'status',
110       status: false,
111       msg: 'worker failed to import ' + data.script + "; error: " + e.message
112     });
113   }