This repository has been archived by the owner on Apr 10, 2024. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge mozilla-inbound to mozilla-central based on a green PGO changes…
…et with some green mobile specific patches pushed on top of it; a=merge
- Loading branch information
Showing
20 changed files
with
558 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
<!DOCTYPE HTML> | ||
<html> | ||
<!-- | ||
https://bugzilla.mozilla.org/show_bug.cgi?id=743615 | ||
--> | ||
<head> | ||
<meta charset="utf-8"> | ||
<title>Test for Bug 743615</title> | ||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> | ||
<script type="application/javascript" src="utils_bug743615.js"></script> | ||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> | ||
</head> | ||
<body> | ||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=743615">Mozilla Bug 743615</a> | ||
<p id="display"></p> | ||
<div id="content" style="display: none"> | ||
<canvas id="c" width="200" height="200"><canvas> | ||
</div> | ||
<pre id="test"> | ||
<script type="application/javascript"> | ||
|
||
/** Test for structured cloning ImageData. **/ | ||
|
||
SimpleTest.waitForExplicitFinish(); | ||
window.addEventListener('message', windowMessage); | ||
startTest(); | ||
|
||
function startTest() { | ||
// Make an ImageData. | ||
var ctx = document.getElementById('c').getContext('2d'); | ||
ctx.fillStyle = 'rgb('; | ||
ctx.fillRect(30, 30, 50, 50); | ||
|
||
// Make a blank ImageData. | ||
var imageData = ctx.createImageData(200, 200); | ||
is(imageData.data.length, imageData.width * imageData.height * 4, | ||
'right size for data'); | ||
|
||
// Write some things into it. | ||
var pattern = makePattern(imageData.data.length, 42, 7); | ||
setPattern(imageData, pattern); | ||
ok(checkPattern(imageData, pattern), 'Can read it back before sending'); | ||
|
||
// PostMessage it to ourselves. | ||
window.postMessage({ imageData: imageData, | ||
pattern: pattern, | ||
dataRef: imageData.data }, '*'); | ||
} | ||
|
||
function windowMessage(evt) { | ||
// Check the pattern we received. | ||
var imageData = evt.data.imageData; | ||
var pattern = evt.data.pattern; | ||
ok(checkPattern(imageData, pattern), | ||
'postMessage from self worked correctly'); | ||
|
||
// We're not spec compliant on this yet. | ||
todo_is(imageData.data, evt.data.dataRef, | ||
'Should have backrefs for imagedata buffer'); | ||
|
||
// Make a new pattern, and send it to a worker. | ||
pattern = makePattern(imageData.data.length, 4, 3); | ||
setPattern(imageData, pattern); | ||
var worker = new Worker('worker_bug743615.js'); | ||
worker.onmessage = workerMessage; | ||
worker.postMessage( {imageData: imageData, pattern: pattern }); | ||
} | ||
|
||
function workerMessage(evt) { | ||
// Relay the results of the worker-side tests. | ||
is(evt.data.statusMessage, 'PASS', evt.data.statusMessage); | ||
|
||
// Test what the worker sent us. | ||
ok(checkPattern(evt.data.imageData, evt.data.pattern), | ||
'postMessage from worker worked correctly'); | ||
|
||
// All done. | ||
SimpleTest.finish(); | ||
} | ||
|
||
</script> | ||
</pre> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
function makePattern(len, start, inc) { | ||
var pattern = []; | ||
while(len) { | ||
pattern.push(start); | ||
start = (start + inc) % 256; | ||
--len; | ||
} | ||
return pattern; | ||
} | ||
|
||
function setPattern(imageData, pattern) { | ||
if (pattern.length != imageData.data.length) | ||
throw Error('Invalid pattern'); | ||
for (var i = 0; i < pattern.length; ++i) | ||
imageData.data[i] = pattern[i]; | ||
} | ||
|
||
function checkPattern(imageData, pattern) { | ||
if (pattern.length != imageData.data.length) | ||
throw Error('Invalid pattern'); | ||
for (var i = 0; i < pattern.length; ++i) | ||
if (imageData.data[i] != pattern[i]) | ||
return false; | ||
return true; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
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: statusMessage, imageData: imageData, | ||
pattern: pattern }); | ||
} |
Oops, something went wrong.