Test that the style is invalidated and updated properly when properties causing :read-only/:read-write change.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Initially, the target should be read only.
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(255, 0, 0)"
Changing content editable via the API.
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(0, 255, 0)"
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(255, 0, 0)"
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(0, 255, 0)"
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(255, 0, 0)"
Changing content editable via the attributes.
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(0, 255, 0)"
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(255, 0, 0)"
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(0, 255, 0)"
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(255, 0, 0)"
Changing content editable on the parent via the API.
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(0, 255, 0)"
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(255, 0, 0)"
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(0, 255, 0)"
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(255, 0, 0)"
Changing content editable via the attributes.
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(0, 255, 0)"
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(255, 0, 0)"
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(0, 255, 0)"
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(255, 0, 0)"
Moving the document to design mode.
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(0, 255, 0)"
Setting the target's contenteditable to true should not change a thing now.
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(0, 255, 0)"
Setting the target's contenteditable to false should still be respected in design mode.
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(255, 0, 0)"
Let's remove the contenteditable attribute on the target, we should still be read-write because of design mode.
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(0, 255, 0)"
Disabling design mode.
PASS getComputedStyle(document.getElementById("target")).backgroundColor is "rgb(255, 0, 0)"
PASS successfullyParsed is true

TEST COMPLETE

