83 lines
2.7 KiB
JavaScript
83 lines
2.7 KiB
JavaScript
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
|
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// Tests that warnings about ineffective iframe sandboxing are logged to the
|
|
// web console when necessary (and not otherwise).
|
|
|
|
"use strict";
|
|
|
|
requestLongerTimeout(2);
|
|
|
|
const TEST_URI_WARNING = "http://example.com/browser/devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning0.html";
|
|
const TEST_URI_NOWARNING = [
|
|
"http://example.com/browser/devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning1.html",
|
|
"http://example.com/browser/devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning2.html",
|
|
"http://example.com/browser/devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning3.html",
|
|
"http://example.com/browser/devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning4.html",
|
|
"http://example.com/browser/devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning5.html"
|
|
];
|
|
|
|
const INEFFECTIVE_IFRAME_SANDBOXING_MSG = "An iframe which has both " +
|
|
"allow-scripts and allow-same-origin for its sandbox attribute can remove " +
|
|
"its sandboxing.";
|
|
const SENTINEL_MSG = "testing ineffective sandboxing message";
|
|
|
|
add_task(function* () {
|
|
yield testYesWarning();
|
|
|
|
for (let id = 0; id < TEST_URI_NOWARNING.length; id++) {
|
|
yield testNoWarning(id);
|
|
}
|
|
});
|
|
|
|
function* testYesWarning() {
|
|
yield loadTab(TEST_URI_WARNING);
|
|
let hud = yield openConsole();
|
|
|
|
ContentTask.spawn(gBrowser.selectedBrowser, SENTINEL_MSG, function* (msg) {
|
|
content.console.log(msg);
|
|
});
|
|
|
|
yield waitForMessages({
|
|
webconsole: hud,
|
|
messages: [
|
|
{
|
|
name: "Ineffective iframe sandboxing warning displayed successfully",
|
|
text: INEFFECTIVE_IFRAME_SANDBOXING_MSG,
|
|
category: CATEGORY_SECURITY,
|
|
severity: SEVERITY_WARNING
|
|
},
|
|
{
|
|
text: SENTINEL_MSG,
|
|
severity: SEVERITY_LOG
|
|
}
|
|
]
|
|
});
|
|
|
|
let msgs = hud.outputNode.querySelectorAll(".message[category=security]");
|
|
is(msgs.length, 1, "one security message");
|
|
}
|
|
|
|
function* testNoWarning(id) {
|
|
yield loadTab(TEST_URI_NOWARNING[id]);
|
|
let hud = yield openConsole();
|
|
|
|
ContentTask.spawn(gBrowser.selectedBrowser, SENTINEL_MSG, function* (msg) {
|
|
content.console.log(msg);
|
|
});
|
|
|
|
yield waitForMessages({
|
|
webconsole: hud,
|
|
messages: [
|
|
{
|
|
text: SENTINEL_MSG,
|
|
severity: SEVERITY_LOG
|
|
}
|
|
]
|
|
});
|
|
|
|
let msgs = hud.outputNode.querySelectorAll(".message[category=security]");
|
|
is(msgs.length, 0, "no security messages (case " + id + ")");
|
|
}
|