blob: 7ff6301653dfcc69517163a4f676e087a87000a7 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
</head>
<body>
<script>
description("This tests the constructor for the SecurityPolicyViolationEvent DOM class.");
var testObject = {nyannyan: 123};
var testDiv = document.createElement("div");
// No initializer is passed.
shouldBeTrue("new SecurityPolicyViolationEvent('eventType').bubbles");
shouldBeFalse("new SecurityPolicyViolationEvent('eventType').cancelable");
shouldBeEmptyString("new SecurityPolicyViolationEvent('eventType').documentURI");
shouldBeEmptyString("new SecurityPolicyViolationEvent('eventType').referrer");
shouldBeEmptyString("new SecurityPolicyViolationEvent('eventType').blockedURI");
shouldBeEmptyString("new SecurityPolicyViolationEvent('eventType').violatedDirective");
shouldBeEmptyString("new SecurityPolicyViolationEvent('eventType').effectiveDirective");
shouldBeEmptyString("new SecurityPolicyViolationEvent('eventType').originalPolicy");
shouldBeEmptyString("new SecurityPolicyViolationEvent('eventType').sourceFile");
shouldBeEqualToString("new SecurityPolicyViolationEvent('eventType').disposition", "enforce");
shouldBe("new SecurityPolicyViolationEvent('eventType').lineNumber", "0");
shouldBe("new SecurityPolicyViolationEvent('eventType').columnNumber", "0");
shouldBe("new SecurityPolicyViolationEvent('eventType').statusCode", "0");
/*
required DOMString documentURI;
required DOMString violatedDirective;
required DOMString effectiveDirective;
required DOMString originalPolicy;
required SecurityPolicyViolationEventDisposition disposition;
required unsigned short statusCode;
*/
// This function will add to the init dict any missing required members
function add_required_members(init_dict, deleted_member) {
["documentURI", "violatedDirective", "effectiveDirective", "originalPolicy"].forEach(function(member) {
if (!(member in init_dict)) init_dict[member] = 'bar';
})
if (!("statusCode" in init_dict)) init_dict["statusCode"] = 200;
if (!("disposition" in init_dict)) init_dict["disposition"] = 'enforce';
// for tests that test the absence of required members
if (deleted_member != undefined && deleted_member in init_dict) delete init_dict[deleted_member];
return init_dict;
}
// bubbles is always true.
shouldBeTrue("new SecurityPolicyViolationEvent('eventType', add_required_members({ bubbles: false})).bubbles");
shouldBeTrue("new SecurityPolicyViolationEvent('eventType', add_required_members({ bubbles: true})).bubbles");
// cancelable is always false.
shouldBeFalse("new SecurityPolicyViolationEvent('eventType', add_required_members({ cancelable: false})).cancelable");
shouldBeFalse("new SecurityPolicyViolationEvent('eventType', add_required_members({ cancelable: true})).cancelable");
// String members are passed.
["documentURI", "referrer", "blockedURI", "violatedDirective", "effectiveDirective", "originalPolicy", "sourceFile"].forEach(function(member) {
shouldBeEqualToString("new SecurityPolicyViolationEvent('eventType', add_required_members({ " + member + ": 'foo' }))." + member, "foo");
});
// Enum members throw on unknown initializer values.
shouldThrow("new SecurityPolicyViolationEvent('eventType', add_required_members({ disposition: 'foo' }))");
// Number members are passed.
["lineNumber", "columnNumber", "statusCode"].forEach(function(member) {
shouldBe("new SecurityPolicyViolationEvent('eventType', add_required_members({ " + member + ": 42 }))." + member, "42");
});
// Missing required members throw
["documentURI", "violatedDirective", "effectiveDirective", "originalPolicy", "statusCode", "disposition"].forEach(function(member) {
shouldThrow("new SecurityPolicyViolationEvent('eventType', add_required_members({}, \"" + member + "\"))")
});
</script>
</body>
</html>