diff options
Diffstat (limited to 'dom/browser-element/mochitest/browserElement_BadScreenshot.js')
-rw-r--r-- | dom/browser-element/mochitest/browserElement_BadScreenshot.js | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/dom/browser-element/mochitest/browserElement_BadScreenshot.js b/dom/browser-element/mochitest/browserElement_BadScreenshot.js new file mode 100644 index 000000000..7b194da86 --- /dev/null +++ b/dom/browser-element/mochitest/browserElement_BadScreenshot.js @@ -0,0 +1,71 @@ +/* Any copyright is dedicated to the public domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Bug 800170 - Test that we get errors when we pass bad arguments to +// mozbrowser's getScreenshot. +"use strict"; + +SimpleTest.waitForExplicitFinish(); +browserElementTestHelpers.setEnabledPref(true); + +var iframe; +var numPendingTests = 0; + +// Call iframe.getScreenshot with the given args. If expectSuccess is true, we +// expect the screenshot's onsuccess handler to fire. Otherwise, we expect +// getScreenshot() to throw an exception. +function checkScreenshotResult(expectSuccess, args) { + var req; + try { + req = iframe.getScreenshot.apply(iframe, args); + } + catch(e) { + ok(!expectSuccess, "getScreenshot(" + JSON.stringify(args) + ") threw an exception."); + return; + } + + numPendingTests++; + req.onsuccess = function() { + ok(expectSuccess, "getScreenshot(" + JSON.stringify(args) + ") succeeded."); + numPendingTests--; + if (numPendingTests == 0) { + SimpleTest.finish(); + } + }; + + // We never expect to see onerror. + req.onerror = function() { + ok(false, "getScreenshot(" + JSON.stringify(args) + ") ran onerror."); + numPendingTests--; + if (numPendingTests == 0) { + SimpleTest.finish(); + } + }; +} + +function runTest() { + iframe = document.createElement('iframe'); + iframe.setAttribute('mozbrowser', 'true'); + document.body.appendChild(iframe); + iframe.src = 'data:text/html,<html>' + + '<body style="background:green">hello</body></html>'; + + iframe.addEventListener('mozbrowserfirstpaint', function() { + // This one should succeed. + checkScreenshotResult(true, [100, 100]); + + // These should fail. + checkScreenshotResult(false, []); + checkScreenshotResult(false, [100]); + checkScreenshotResult(false, ['a', 100]); + checkScreenshotResult(false, [100, 'a']); + checkScreenshotResult(false, [-1, 100]); + checkScreenshotResult(false, [100, -1]); + + if (numPendingTests == 0) { + SimpleTest.finish(); + } + }); +} + +addEventListener('testready', runTest); |