summaryrefslogtreecommitdiffstats
path: root/dom/tests/mochitest/bugs/worker_bug743615.js
blob: 16c5617bd26667acc6aeb3863c5d6ff4179d105e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
importScripts("utils_bug743615.js");

self.onmessage = function onMessage(evt) {
  // Check the pattern that was sent.
  var imageData = evt.data.imageData;
  var pattern = evt.data.pattern;
  var statusMessage = checkPattern(imageData, pattern)
    ? "PASS"
    : "Got corrupt typed array in worker";

  // Check against the interface object.
  if (!(imageData instanceof ImageData)) {
    statusMessage += ", Bad interface object in worker";
  }

  // Check the getters.
  if (imageData.width * imageData.height != imageData.data.length / 4) {
    statusMessage += ", Bad ImageData getters in worker: ";
    statusMessage += [imageData.width, imageData.height].join(", ");
  }

  // Make sure that writing to .data is a no-op when not in strict mode.
  var origData = imageData.data;
  var threw = false;
  try {
    imageData.data = [];
    imageData.width = 2;
    imageData.height = 2;
  } catch (e) {
    threw = true;
  }
  if (threw || imageData.data !== origData) {
    statusMessage = statusMessage + ", Should silently ignore sets";
  }

  // Send back a new pattern.
  pattern = makePattern(imageData.data.length, 99, 2);
  setPattern(imageData, pattern);
  self.postMessage({
    statusMessage,
    imageData,
    pattern,
  });
};