зеркало из https://github.com/mozilla/gecko-dev.git
99 строки
3.0 KiB
HTML
99 строки
3.0 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Test for icon filenames</title>
|
|
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/WindowSnapshot.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
|
|
</head>
|
|
<body>
|
|
|
|
<pre id="test">
|
|
<script class="testbody" type="text/javascript">
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
// We want to make sure that moz-icon URIs with non-ascii characters work. To that
|
|
// end, we compare the rendering of an icon without non-ascii characters to that
|
|
// of one that does include such characters.
|
|
|
|
// First, obtain the file URI to the ourselves:
|
|
var chromeURI = location.href;
|
|
var io = Components.classes['@mozilla.org/network/io-service;1']
|
|
.getService(Components.interfaces.nsIIOService);
|
|
chromeURI = io.newURI(chromeURI);
|
|
var chromeReg = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
|
|
.getService(Components.interfaces.nsIChromeRegistry);
|
|
fileURI = chromeReg.convertChromeURL(chromeURI);
|
|
fileURI.QueryInterface(Components.interfaces.nsIFileURL);
|
|
var self = fileURI.file;
|
|
|
|
// Check if the non-ascii-named icon is still hanging around from a previous test
|
|
var dest = self.parent;
|
|
dest.append("\u263a.ico");
|
|
if (dest.exists()) {
|
|
dest.remove(false);
|
|
}
|
|
|
|
// Copy the source icon so that we have an identical icon with non-ascii characters
|
|
// in its name
|
|
var src = self.parent;
|
|
src.append("bug415761.ico");
|
|
src.copyTo(null, dest.leafName);
|
|
|
|
// Now load both icons in an Image() with a moz-icon URI
|
|
var testImage = new Image();
|
|
var refImage = new Image();
|
|
|
|
var loadedImages = 0;
|
|
testImage.onload = refImage.onload = function() {
|
|
loadedImages++;
|
|
if (loadedImages == 2) {
|
|
finishTest();
|
|
}
|
|
};
|
|
testImage.onerror = refImage.onerror = function() {
|
|
testImage.onload = refImage.onload = function() {};
|
|
|
|
ok(false, "Icon did not load successfully");
|
|
SimpleTest.finish();
|
|
};
|
|
|
|
function finishTest() {
|
|
ok(true, "Both icons loaded successfully");
|
|
// Render the reference to a canvas
|
|
var refCanvas = document.createElement("canvas");
|
|
refCanvas.setAttribute("height", 32);
|
|
refCanvas.setAttribute("width", 32);
|
|
refCanvas.getContext('2d').drawImage(refImage, 0, 0, 32, 32);
|
|
|
|
// Render the icon with a non-ascii character in its name to a canvas
|
|
var testCanvas = document.createElement("canvas");
|
|
testCanvas.setAttribute("height", 32);
|
|
testCanvas.setAttribute("width", 32);
|
|
testCanvas.getContext('2d').drawImage(testImage, 0, 0, 32, 32);
|
|
|
|
// Assert that they should be the same.
|
|
assertSnapshots(refCanvas, testCanvas, true, 0, "icon", "reference icon");
|
|
SimpleTest.finish();
|
|
};
|
|
|
|
var testURI = io.newFileURI(dest).spec;
|
|
var refURI = io.newFileURI(src).spec;
|
|
testImage.src = "moz-icon:" + testURI;
|
|
refImage.src = "moz-icon:" + refURI;
|
|
|
|
SimpleTest.registerCleanupFunction(function() {
|
|
// Remove the copied file if it exists.
|
|
if (dest.exists()) {
|
|
dest.remove(false);
|
|
}
|
|
});
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
|
|
</html>
|
|
|