diff --git a/test/iframeTest.html b/test/iframeTest.html new file mode 100644 index 0000000..361f4b7 --- /dev/null +++ b/test/iframeTest.html @@ -0,0 +1,39 @@ + + + + + + iFrame Test + + + + + + + + diff --git a/test/iframeTest.js b/test/iframeTest.js new file mode 100644 index 0000000..6b14935 --- /dev/null +++ b/test/iframeTest.js @@ -0,0 +1,101 @@ +var log = function(){ + "use strict"; + return function log(...str){ + // eslint-disable-next-line no-console + console.log(...str); + }; +}(); +function draw(canvas){ + "use strict"; + + canvas.setAttribute("width", 220); + canvas.setAttribute("height", 30); + + var fp_text = "BrowserLeaks,com 10"; + + var ctx = canvas.getContext("2d"); + ctx.textBaseline = "top"; + ctx.font = "14px 'Arial'"; + ctx.textBaseline = "alphabetic"; + ctx.fillStyle = "#f60"; + ctx.fillRect(125, 1, 62, 20); + ctx.fillStyle = "#069"; + ctx.fillText(fp_text, 2, 15); + ctx.fillStyle = "rgba(102, 204, 0, 07)"; + ctx.fillText(fp_text, 4, 17); + + return ctx; +} +function test(window){ + "use strict"; + + // create window canvas + var canvas = document.createElement("canvas"); + // draw image in window canvas + var ctx = draw(canvas); + return window.HTMLCanvasElement.prototype.toDataURL.call(canvas); +} + +function hash(string){ + "use strict"; + + var buffer = new TextEncoder("utf-8").encode(string); + return crypto.subtle.digest("SHA-256", buffer).then(function(hash){ + var chunks = []; + (new Uint32Array(hash)).forEach(function(num){ + chunks.push(num.toString(16)); + }); + return chunks.map(function(chunk){ + return "0".repeat(8 - chunk.length) + chunk; + }).join(""); + }); + +} + +function compare(string1, string2, alwaysOutputHashes){ + "use strict"; + function outputHashes(message){ + Promise.all([ + hash(string1), + hash(string2) + ]).then(function(hashes){ + // eslint-disable-next-line no-console + console.log(message, ...hashes); + }); + + } + + if (string1 === string2){ + if (alwaysOutputHashes){ + outputHashes("Matching hashes:"); + } + return "match"; + } + else { + outputHashes("Hashes that differ:"); + if (string1.length === string2.length){ + let i; + for (i = 0; i < string1.length; i += 1){ + if (string1.charAt(i) !== string2.charAt(i)){ + break; + } + } + return "missmatch (first at " + i + ")"; + } + else { + let i; + for (i = 0; i < Math.min(string1.length, string2.length); i += 1){ + if (string1.charAt(i) !== string2.charAt(i)){ + break; + } + } + return "missmatch (different lengths, first at " + i + ")"; + } + } +} +var reference = test(window); +hash(reference).then(function(hash){ + "use strict"; + + log("reference hash:", hash); +}); \ No newline at end of file diff --git a/test/index.html b/test/index.html index 6e25370..4ed6317 100644 --- a/test/index.html +++ b/test/index.html @@ -19,5 +19,6 @@
  • Support for webGL
  • Navigator test
  • Settings loading
  • +
  • Iframe protection
  • \ No newline at end of file