123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <!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, null, null);
- 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>
|