diff options
Diffstat (limited to 'devtools/client/inspector/shared/test/browser_styleinspector_csslogic-content-stylesheets.js')
-rw-r--r-- | devtools/client/inspector/shared/test/browser_styleinspector_csslogic-content-stylesheets.js | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/devtools/client/inspector/shared/test/browser_styleinspector_csslogic-content-stylesheets.js b/devtools/client/inspector/shared/test/browser_styleinspector_csslogic-content-stylesheets.js new file mode 100644 index 000000000..421a2bb47 --- /dev/null +++ b/devtools/client/inspector/shared/test/browser_styleinspector_csslogic-content-stylesheets.js @@ -0,0 +1,82 @@ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// Check stylesheets on HMTL and XUL document + +// FIXME: this test opens the devtools for nothing, it should be changed into a +// devtools/server/tests/mochitest/test_css-logic-...something...html +// test + +const TEST_URI_HTML = TEST_URL_ROOT + "doc_content_stylesheet.html"; +const TEST_URI_AUTHOR = TEST_URL_ROOT + "doc_author-sheet.html"; +const TEST_URI_XUL = TEST_URL_ROOT + "doc_content_stylesheet.xul"; +const XUL_URI = Cc["@mozilla.org/network/io-service;1"] + .getService(Ci.nsIIOService) + .newURI(TEST_URI_XUL, null, null); +var ssm = Components.classes["@mozilla.org/scriptsecuritymanager;1"] + .getService(Ci.nsIScriptSecurityManager); +const XUL_PRINCIPAL = ssm.createCodebasePrincipal(XUL_URI, {}); + +add_task(function* () { + requestLongerTimeout(2); + + info("Checking stylesheets on HTML document"); + yield addTab(TEST_URI_HTML); + + let {inspector, testActor} = yield openInspector(); + yield selectNode("#target", inspector); + + info("Checking stylesheets"); + yield checkSheets("#target", testActor); + + info("Checking authored stylesheets"); + yield addTab(TEST_URI_AUTHOR); + + ({inspector} = yield openInspector()); + yield selectNode("#target", inspector); + yield checkSheets("#target", testActor); + + info("Checking stylesheets on XUL document"); + info("Allowing XUL content"); + allowXUL(); + yield addTab(TEST_URI_XUL); + + ({inspector} = yield openInspector()); + yield selectNode("#target", inspector); + + yield checkSheets("#target", testActor); + info("Disallowing XUL content"); + disallowXUL(); +}); + +function allowXUL() { + Cc["@mozilla.org/permissionmanager;1"].getService(Ci.nsIPermissionManager) + .addFromPrincipal(XUL_PRINCIPAL, "allowXULXBL", + Ci.nsIPermissionManager.ALLOW_ACTION); +} + +function disallowXUL() { + Cc["@mozilla.org/permissionmanager;1"].getService(Ci.nsIPermissionManager) + .addFromPrincipal(XUL_PRINCIPAL, "allowXULXBL", + Ci.nsIPermissionManager.DENY_ACTION); +} + +function* checkSheets(targetSelector, testActor) { + let sheets = yield testActor.getStyleSheetsInfoForNode(targetSelector); + + for (let sheet of sheets) { + if (!sheet.href || + /doc_content_stylesheet_/.test(sheet.href) || + // For the "authored" case. + /^data:.*seagreen/.test(sheet.href)) { + ok(sheet.isContentSheet, + sheet.href + " identified as content stylesheet"); + } else { + ok(!sheet.isContentSheet, + sheet.href + " identified as non-content stylesheet"); + } + } +} |