<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>

<div id=test><div></div></div>

<script>
var testDiv = document.querySelector('#test');
var testDivChild = testDiv.firstChild;

function testInvalidation(cssText, shouldInvalidate, name)
{
    test(() => {
        internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks();

        testDiv.style.cssText = cssText;

        assert_equals(internals.styleChangeType(testDiv), shouldInvalidate ? "InlineStyleInvalid" : "NoStyleChange");
        assert_equals(internals.styleChangeType(testDivChild), "NoStyleChange");
    }, name);
}

testInvalidation("color:red", true, "Setting cssText invalidates style");
testInvalidation("color:red; transform: scale3d(0, 0, 1);", true, "Adding more properties to cssText invalidates style");
testInvalidation("color:blue; transform: scale3d(0, 0, 1);", true, "Changing a property value invalidates style");
testInvalidation("color:blue; transform: scale3d(0, 1, 1);", true, "Changing another property value invalidates style");
testInvalidation("color:blue; transform: scale3d(0, 1, 1);", false, "Setting cssText without changing it doesn't invalidate style");
testInvalidation(" color:blue; transform: scale3d(0,1,1)", false, "Non-semantic change to cssText doesn't invalidate style");
testInvalidation("transform: scale3d(0,1,1)", true, "Removing a property invalidates style");
testInvalidation("", true, "Clearing cssText invalidates style");

</script>
