<!DOCTYPE html>

<!-- webkit-test-runner [ experimental:DarkModeCSSEnabled=true ] -->

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

<style>
#test1 {
    color: text;
}
</style>

<meta id="meta" name="color-scheme" content="light">

<div id="test1"></div>

<script>
function test_prop(id, prop, expected) {
    assert_equals(window.getComputedStyle(document.getElementById(id)).getPropertyValue(prop).trim(), expected);
}

function test_color_is_black(id) {
    test_prop("test1", "color", "rgb(0, 0, 0)");
}

test(function() {
    test_color_is_black("test1");
}, "Element colors are correct in light color scheme with only light color scheme");

test(function() {
    document.getElementById("meta").content = "light dark";
}, "Color schemes changed to light and dark");

test(function() {
    test_color_is_black("test1");
}, "Element colors are correct in light color scheme with light and dark color scheme");

test(function() {
    document.getElementById("meta").content = "dark";
}, "Color schemes changed to dark");

test(function() {
    test_color_is_black("test1");
}, "Element colors are correct in light color scheme with only dark color scheme");

test(function() {
    document.getElementById("meta").content = "light ,foo ";
}, "Color schemes changed to light and a bogus value");

test(function() {
    test_color_is_black("test1");
}, "Element colors are correct in light color scheme with only light color scheme");

test(function() {
    document.getElementById("meta").content = "";
}, "Color schemes changed to empty value");

test(function() {
    test_color_is_black("test1");
}, "Element colors are correct in light color scheme with implicit light color scheme");

test(function() {
    document.getElementById("meta").content = "   light, dark ";
}, "Color schemes changed to light and dark");

test(function() {
    test_color_is_black("test1");
}, "Element colors are correct in light color scheme with light and dark color scheme");

test(function() {
    document.getElementById("meta").content = ", foo dark";
}, "Color schemes changed to a bogus value and dark");

test(function() {
    test_color_is_black("test1");
}, "Element colors are correct in light color scheme with dark color scheme");
</script>
