Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test runs only with pattern: os != 'android'
- Manifest: browser/components/enterprisepolicies/tests/xpcshell/xpcshell.toml
/* Any copyright is dedicated to the Public Domain.
"use strict";
const { E10SUtils } = ChromeUtils.importESModule(
"resource://gre/modules/E10SUtils.sys.mjs"
);
function isJitDisabledForRemoteType(remoteType) {
return (
remoteType.endsWith("^disableJit=1") || remoteType.endsWith("&disableJit=1")
);
}
function assertJitState(url, isAllowed) {
let uri = Services.io.newURI(url);
Assert.equal(
Services.policies.isAllowedForURI("jit", uri),
isAllowed,
`Policy service should return the expected state for ${url}`
);
let remoteType = E10SUtils.getRemoteTypeForURIObject(uri, {
remoteSubFrames: true,
multiProcess: true,
preferredRemoteType: E10SUtils.DEFAULT_REMOTE_TYPE,
});
Assert.equal(
isJitDisabledForRemoteType(remoteType),
!isAllowed,
`Remote type should have the expected JIT state for ${url}`
);
}
add_task(async function test_isAllowedForSite() {
// Empty policies don't block anything
await setupPolicyEngineWithJson({
policies: {
SitePolicies: [],
},
});
assertJitState("http://example.net/", true);
assertJitState("http://example.org/", true);
assertJitState("http://example.com/", true);
assertJitState(
"moz-nullprincipal:{56cac540-864d-47e7-8e25-1614eab5155e}",
true
);
// Simple match case
await setupPolicyEngineWithJson({
policies: {
SitePolicies: [
{
Match: ["*.example.com"],
Policies: {
DisableJit: true,
},
},
],
},
});
assertJitState("http://example.net/", true);
assertJitState("http://example.org/", true);
assertJitState("http://example.com/", false);
assertJitState("http://www.example.com/", false);
assertJitState("http://test.example.com/", false);
assertJitState(
"moz-nullprincipal:{56cac540-864d-47e7-8e25-1614eab5155e}",
true
);
// Multiple match case
await setupPolicyEngineWithJson({
policies: {
SitePolicies: [
{
Match: ["*.example.com", "*.example.org"],
Policies: {
DisableJit: true,
},
},
],
},
});
assertJitState("http://example.net/", true);
assertJitState("http://example.org/", false);
assertJitState("http://example.com/", false);
assertJitState(
"moz-nullprincipal:{56cac540-864d-47e7-8e25-1614eab5155e}",
true
);
// Missing wildcard or being too specific still uses the base domain
await setupPolicyEngineWithJson({
policies: {
SitePolicies: [
{
Match: ["example.com", "www.example.org"],
Policies: {
DisableJit: true,
},
},
],
},
});
assertJitState("http://example.net/", true);
assertJitState("http://example.org/", false);
assertJitState("http://www.example.org/", false);
assertJitState("http://test.example.org/", false);
assertJitState("http://example.com/", false);
assertJitState("http://www.example.com/", false);
assertJitState("http://test.example.com/", false);
assertJitState(
"moz-nullprincipal:{56cac540-864d-47e7-8e25-1614eab5155e}",
true
);
// No match implies all sites
await setupPolicyEngineWithJson({
policies: {
SitePolicies: [
{
Exceptions: ["*.example.com"],
Policies: {
DisableJit: true,
},
},
],
},
});
assertJitState("http://example.net/", false);
assertJitState("http://example.org/", false);
assertJitState("http://example.com/", true);
assertJitState(
"moz-nullprincipal:{56cac540-864d-47e7-8e25-1614eab5155e}",
false
);
// Empty match implies all sites
await setupPolicyEngineWithJson({
policies: {
SitePolicies: [
{
Match: [],
Exceptions: ["*.example.com"],
Policies: {
DisableJit: true,
},
},
],
},
});
assertJitState("http://example.net/", false);
assertJitState("http://example.org/", false);
assertJitState("http://example.com/", true);
assertJitState(
"moz-nullprincipal:{56cac540-864d-47e7-8e25-1614eab5155e}",
false
);
// Wildcard implies all sites
await setupPolicyEngineWithJson({
policies: {
SitePolicies: [
{
Match: ["*"],
Exceptions: ["*.example.com"],
Policies: {
DisableJit: true,
},
},
],
},
});
assertJitState("http://example.net/", false);
assertJitState("http://example.org/", false);
assertJitState("http://example.com/", true);
assertJitState(
"moz-nullprincipal:{56cac540-864d-47e7-8e25-1614eab5155e}",
false
);
// Empty policies do nothing
await setupPolicyEngineWithJson({
policies: {
SitePolicies: [
{
Match: ["*.example.com"],
Policies: {},
},
],
},
});
assertJitState("http://example.net/", true);
assertJitState("http://example.org/", true);
assertJitState("http://example.com/", true);
assertJitState(
"moz-nullprincipal:{56cac540-864d-47e7-8e25-1614eab5155e}",
true
);
// Earlier policies take precedence over later ones.
await setupPolicyEngineWithJson({
policies: {
SitePolicies: [
{
Match: ["*.example.com"],
Policies: {
DisableJit: false,
},
},
{
Match: ["*.example.com", "*.example.org"],
Policies: {
DisableJit: true,
},
},
],
},
});
assertJitState("http://example.net/", true);
assertJitState("http://example.org/", false);
assertJitState("http://example.com/", true);
assertJitState(
"moz-nullprincipal:{56cac540-864d-47e7-8e25-1614eab5155e}",
true
);
// Earlier policies only take precedence if they include the relevant policy.
await setupPolicyEngineWithJson({
policies: {
SitePolicies: [
{
Match: ["*.example.com"],
Policies: {},
},
{
Match: ["*.example.com", "*.example.org"],
Policies: {
DisableJit: true,
},
},
],
},
});
assertJitState("http://example.net/", true);
assertJitState("http://example.org/", false);
assertJitState("http://example.com/", false);
assertJitState(
"moz-nullprincipal:{56cac540-864d-47e7-8e25-1614eab5155e}",
true
);
});