Tests for meta color-scheme from css-color-adjust.

All tests pass with CSSColorScheme and MetaColorScheme enabled.

Bug: 925935
Change-Id: I5d05d86d2b2f5c71868ba5607b915c2dfe9a1b59
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1967182
Commit-Queue: Rune Lillesveen <futhark@chromium.org>
Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
Cr-Commit-Position: refs/heads/master@{#725086}
diff --git a/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html b/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html
new file mode 100644
index 0000000..df982ff
--- /dev/null
+++ b/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme - empty content value</title>
+<meta name="color-scheme" content="">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  assert_root_color_scheme("normal");
+</script>
diff --git a/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html b/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html
new file mode 100644
index 0000000..e954a9e
--- /dev/null
+++ b/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<title>CSS Color Adjust Test: multiple meta tags - first valid applies</title>
+<meta name="color-scheme">
+<meta name="color-scheme" content>
+<meta name="color-scheme" content="">
+<meta name="color-scheme" content="light,dark">
+<!-- This is first with a valid content value -->
+<meta name="color-scheme" content="dark">
+<meta name="color-scheme" content="light">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  assert_root_color_scheme("dark");
+</script>
diff --git a/css/css-color-adjust/meta/meta-color-scheme-insert.html b/css/css-color-adjust/meta/meta-color-scheme-insert.html
new file mode 100644
index 0000000..5b0a213
--- /dev/null
+++ b/css/css-color-adjust/meta/meta-color-scheme-insert.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<title>CSS Color Adjust Test: insert meta tags</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  function createMeta(content) {
+    const meta = document.createElement("meta");
+    meta.setAttribute("name", "color-scheme");
+    meta.setAttribute("content", content);
+    return meta;
+  }
+
+  assert_root_color_scheme("normal");
+
+  document.head.appendChild(createMeta("light"));
+  assert_root_color_scheme("light");
+
+  document.head.insertBefore(createMeta("dark"), document.head.lastChild);
+  assert_root_color_scheme("dark");
+</script>
diff --git a/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html b/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html
new file mode 100644
index 0000000..95f2444
--- /dev/null
+++ b/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme - no content value</title>
+<meta name="color-scheme">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  assert_root_color_scheme("normal");
+</script>
diff --git a/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html b/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html
new file mode 100644
index 0000000..c7638e7
--- /dev/null
+++ b/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme - presentational hint</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<style>
+  * { color-scheme: light }
+</style>
+<meta name="color-scheme" content="dark">
+<script>
+  // Author level CSS color-scheme property overrides meta color-scheme value
+  // which is at the presentational hint cascade order.
+  assert_root_color_scheme("light");
+</script>
diff --git a/css/css-color-adjust/meta/meta-color-scheme-remove-head.html b/css/css-color-adjust/meta/meta-color-scheme-remove-head.html
new file mode 100644
index 0000000..2d34538
--- /dev/null
+++ b/css/css-color-adjust/meta/meta-color-scheme-remove-head.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<title>CSS Color Adjust Test: Remove head with meta color-scheme</title>
+<meta name="color-scheme" content="dark">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<body></body>
+<script>
+  assert_root_color_scheme("dark");
+  document.head.remove();
+  assert_root_color_scheme("normal");
+</script>
diff --git a/css/css-color-adjust/meta/meta-color-scheme-remove.html b/css/css-color-adjust/meta/meta-color-scheme-remove.html
new file mode 100644
index 0000000..3d72a0b
--- /dev/null
+++ b/css/css-color-adjust/meta/meta-color-scheme-remove.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>CSS Color Adjust Test: remove meta tag</title>
+<meta id="dark" name="color-scheme" content="dark">
+<meta id="light" name="color-scheme" content="light">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  assert_root_color_scheme("dark");
+  dark.remove();
+  assert_root_color_scheme("light");
+  light.remove();
+  assert_root_color_scheme("normal");
+</script>
diff --git a/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html b/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html
new file mode 100644
index 0000000..2787aaa
--- /dev/null
+++ b/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html
@@ -0,0 +1,12 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme in body should not apply</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<body>
+  <meta name="color-scheme" content="dark">
+</body>
+<script>
+  assert_root_color_scheme("normal");
+</script>
diff --git a/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html b/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html
new file mode 100644
index 0000000..d7f2fd2
--- /dev/null
+++ b/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>CSS Color Adjust Test: Single meta color-scheme in head</title>
+<meta name="color-scheme" content="dark">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  assert_root_color_scheme("dark");
+</script>
diff --git a/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html b/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html
new file mode 100644
index 0000000..2877e10
--- /dev/null
+++ b/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme in shadow-tree should not apply</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  const host = document.createElement("div");
+  host.id = "host";
+  document.head.appendChild(host);
+  const root = host.attachShadow({mode:"open"});
+  const meta = document.createElement("meta");
+  meta.setAttribute("name", "color-scheme");
+  meta.setAttribute("content", "dark");
+  root.appendChild(meta);
+
+  assert_root_color_scheme("normal");
+</script>
diff --git a/css/css-color-adjust/meta/support/compute-root-color-scheme.js b/css/css-color-adjust/meta/support/compute-root-color-scheme.js
new file mode 100644
index 0000000..e36066c
--- /dev/null
+++ b/css/css-color-adjust/meta/support/compute-root-color-scheme.js
@@ -0,0 +1,7 @@
+'use strict';
+
+function assert_root_color_scheme(expected) {
+  test(() => {
+    assert_equals(getComputedStyle(document.documentElement).colorScheme, expected);
+  }, "Computed root color-scheme should be " + expected);
+}