<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 ? "InlineStyleChange" : "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>
