<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=674770 --> <head> <title>Test for Bug 674770</title> <script type="application/javascript" src="/MochiKit/packed.js"></script> <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <script type="text/javascript" src="/tests/SimpleTest/EventUtils.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=674770">Mozilla Bug 674770</a> <p id="display"></p> <div id="content"> <a href="file_bug674770-1.html" id="link1">test</a> <div contenteditable> <a href="file_bug674770-1.html" id="link2">test</a> </div> </div> <pre id="test"> <script type="application/javascript"> SimpleTest.waitForExplicitFinish(); SimpleTest.waitForFocus(function() { SpecialPowers.pushPrefEnv({"set":[["middlemouse.paste", true], ["dom.ipc.processCount", 1]]}, startTests); }); function startTests() { var tests = [ { description: "Testing link in <div>: ", target: function () { return document.querySelector("#link1"); }, linkShouldWork: true }, { description: "Testing link in <div contenteditable>: ", target: function () { return document.querySelector("#link2"); }, linkShouldWork: false }, ]; var currentTest; function runNextTest() { localStorage.removeItem("clicked"); currentTest = tests.shift(); if (!currentTest) { SimpleTest.finish(); return; } ok(true, currentTest.description + "Starting to test..."); synthesizeMouseAtCenter(currentTest.target(), { button: 1 }); } addEventListener("storage", function(e) { is(e.key, "clicked", currentTest.description + "Key should always be 'clicked'"); is(e.newValue, "true", currentTest.description + "Value should always be 'true'"); ok(currentTest.linkShouldWork, currentTest.description + "The click operation on the link " + (currentTest.linkShouldWork ? "should work" : "shouldn't work")); SimpleTest.executeSoon(runNextTest); }, false); SpecialPowers.addSystemEventListener(window, "click", function (aEvent) { // When the click event should cause default action, e.g., opening the link, // the event shouldn't have been consumed except the link handler. // However, in e10s mode, it's not consumed during propagating the event but // in non-e10s mode, it's consumed during the propagation. Therefore, // we cannot check defaultPrevented value when the link should work as is // if there is no way to detect if it's running in e10s mode or not. // So, let's skip checking Event.defaultPrevented value when the link should // work. In such case, we should receive "storage" event later. if (currentTest.linkShouldWork) { return; } ok(SpecialPowers.defaultPreventedInAnyGroup(aEvent), currentTest.description + "The default action should be consumed because the link should work as is"); if (SpecialPowers.defaultPreventedInAnyGroup(aEvent)) { // In this case, "storage" event won't be fired. SimpleTest.executeSoon(runNextTest); } }, false); SimpleTest.executeSoon(runNextTest); } </script> </pre> </body> </html>