<!DOCTYPE>
<title>NoModificationAllowedError when mutating read only properties</title>
<link rel="author" title="Anders Hartvoll Ruud" href="andruud@chromium.org">
<link rel="help" href="https://www.w3.org/TR/cssom-1/#dom-cssstyledeclaration-setpropertyvalue">
<meta name="assert" content="This test verifies that NoModificationAllowedError is thrown when mutating read only properties" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body></body>
<script>
test(function(t) {
    assert_equals(document.defaultView.getComputedStyle(document.body, null).parentRule, null);
}, "Computed style parent (should be null)");

test(function(t) {
    assert_throws("NoModificationAllowedError", function() {
        document.defaultView.getComputedStyle(document.body, null).color = "blue";
    });
}, "Exception thrown when trying to change a computed style declaration via property");

test(function(t) {
    assert_throws("NoModificationAllowedError", function() {
        document.defaultView.getComputedStyle(document.body, null).setProperty("color", "blue");
    });
}, "Exception thrown when trying to change a computed style declaration via setProperty");

test(function(t) {
    assert_throws("NoModificationAllowedError", function() {
        document.defaultView.getComputedStyle(document.body, null).webkitTransition = "";
    });
}, "Exception thrown when trying to change a computed style alias via property");

test(function(t) {
    assert_throws("NoModificationAllowedError", function() {
        document.defaultView.getComputedStyle(document.body, null).setProperty("webkitTransition", "");
    });
}, "Exception thrown when trying to change a computed style alias via setProperty");
</script>
