mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-01-08 12:22:34 +00:00
133 lines
4.9 KiB
HTML
133 lines
4.9 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=1132743
|
|
-->
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Test for Bug 1132743</title>
|
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="application/javascript;version=1.7" src="unprefixing_service_utils.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=1132743">Mozilla Bug 1132743</a>
|
|
<div id="display">
|
|
<iframe id="testIframe"></iframe>
|
|
</div>
|
|
<pre id="test">
|
|
<script type="application/javascript;version=1.7">
|
|
"use strict";
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
/**
|
|
* This test checks that our CSS unprefixing prefs are effective.
|
|
*
|
|
* We do this using an iframe, in which we load a test file at a test domain
|
|
* (whose whitelist-status depends on a pref), and we have the iframe report
|
|
* back to us (using postMessage) about whether unprefixing is working.
|
|
*
|
|
* High-level overview of the process here (starting with begin()):
|
|
* - First, we ensure that the pref...
|
|
* "layout.css.unprefixing-service.include-test-domains"
|
|
* ...is *unset* by default. (No point exposing it in about:config).
|
|
* - Then, we test that (as a result of this pref being unset) the
|
|
* unprefixing service is *inactive* at our test-domain, by default.
|
|
* - Then, via a series of calls to "startNextTest()"/"testHost()", we re-test
|
|
* the same test-domain with a variety of pref configurations, to ensure
|
|
* that unprefixing only happens there when we've preffed on the service
|
|
* *and* we've enabled the testing entries in the whiteslist.
|
|
*/
|
|
|
|
const IFRAME_TESTFILE = "unprefixing_service_iframe.html";
|
|
|
|
// Just test the first host in our known-whitelisted-hosts list.
|
|
const WHITELISTED_TEST_HOST = gWhitelistedHosts[0];
|
|
|
|
// Configurations of our prefs to test.
|
|
// Each is a 3-entry array, whose entries mean:
|
|
// (1) should we enable the CSS Unprefixing Service pref?
|
|
// (2) should we enable the "include test domains in whitelist" pref?
|
|
// (3) in this pref-configuration, should we expect to see unprefixing active
|
|
// on our whitelisted test-domain?
|
|
//
|
|
// As you can see, the only configuration which should produce unprefixing
|
|
// activity is when *both* prefs are enabled.
|
|
let gTestConfigs = [
|
|
[false, false, false],
|
|
[false, true, false],
|
|
[true, false, false],
|
|
[true, true, true],
|
|
];
|
|
|
|
// Test that a particular configuration of prefs will activate or inactivate
|
|
// the CSS unprefixing service, for styles loaded from WHITELISTED_TEST_HOST.
|
|
// aTestConfig is described above, in documentation for gTestConfigs.
|
|
function testConfig(aTestConfig)
|
|
{
|
|
if (aTestConfig.length != 3) {
|
|
ok(false, "bug in test; need 3 entries. see gTestConfigs documentation");
|
|
}
|
|
|
|
info("Verifying that CSS Unprefixing Service is " +
|
|
(aTestConfig[2] ? "active" : "inactive") +
|
|
" at test host, with prefs: " +
|
|
PREF_UNPREFIXING_SERVICE + "=" + aTestConfig[0] + ", " +
|
|
PREF_INCLUDE_TEST_DOMAINS + "=" + aTestConfig[1]);
|
|
|
|
SpecialPowers.pushPrefEnv(
|
|
{ set:
|
|
[[PREF_UNPREFIXING_SERVICE, aTestConfig[0]],
|
|
[PREF_INCLUDE_TEST_DOMAINS, aTestConfig[1]]]
|
|
},
|
|
function() {
|
|
testHost(WHITELISTED_TEST_HOST, aTestConfig[2]);
|
|
});
|
|
}
|
|
|
|
// This function gets invoked when our iframe finishes a given round of testing.
|
|
function startNextTest()
|
|
{
|
|
if (gTestConfigs.length > 0) {
|
|
// Grab the next test-config, and kick off a test for it.
|
|
testConfig(gTestConfigs.pop());
|
|
return;
|
|
}
|
|
|
|
// Array empty --> we're done.
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
function begin()
|
|
{
|
|
// First, check that PREF_INCLUDE_TEST_DOMAINS is unset:
|
|
try {
|
|
let val = SpecialPowers.getBoolPref(PREF_INCLUDE_TEST_DOMAINS);
|
|
ok(false, "The test pref '" + PREF_INCLUDE_TEST_DOMAINS +
|
|
"' should be unspecified by default");
|
|
} catch(e) { /* Good, we threw; pref is unset. */ }
|
|
|
|
// Before we start loading things in iframes, set up postMessage handler.
|
|
registerPostMessageListener(startNextTest);
|
|
|
|
// To kick things off, we don't set any prefs; we just test the default state
|
|
// (which should have the "include test domains" pref implicitly disabled, &
|
|
// hence unprefixing should end up being disabled in our iframe). Subsequent
|
|
// tests are kicked off via postMessage-triggered calls to startNextTest(),
|
|
// which will tweak prefs and re-test.
|
|
info("Verifying that CSS Unprefixing Service is inactive at test host, " +
|
|
"with default pref configuration");
|
|
testHost(WHITELISTED_TEST_HOST, false);
|
|
}
|
|
|
|
// Before we start, make sure *native* -webkit prefix support is turned off.
|
|
// It's not whitelist-restricted (and behaves slightly differently), so if we
|
|
// left it enabled, it'd prevent us from being able to detect
|
|
// CSSUnprefixingService's domain whitelisting in this test.
|
|
SpecialPowers.pushPrefEnv({ set: [["layout.css.prefixes.webkit", false]]},
|
|
begin);
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|