diff options
Diffstat (limited to 'testing/web-platform/tests/css/css-view-transitions/only-child-old.html')
-rw-r--r-- | testing/web-platform/tests/css/css-view-transitions/only-child-old.html | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-view-transitions/only-child-old.html b/testing/web-platform/tests/css/css-view-transitions/only-child-old.html new file mode 100644 index 0000000000..79fb26c6d3 --- /dev/null +++ b/testing/web-platform/tests/css/css-view-transitions/only-child-old.html @@ -0,0 +1,165 @@ +<!DOCTYPE html> +<html class="reftest-wait foo"> +<title>View transitions: ensure :only-child is supported on view-transition-old</title> +<link rel="help" href="https://github.com/WICG/view-transitions"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<style> +::view-transition { + background-color: black; +} +html:only-child { + background-color: black; +} +:root:only-child { + background-color: black; +} +:only-child { + background-color: black; +} +.foo:only-child { + background-color: black; +} + +::view-transition-old(root) { + background-color: blue; +} +::view-transition-old(target) { + background-color: blue; +} +::view-transition-old(*) { + color: blue; +} + +::view-transition-old(root):only-child { + background-color: red; +} +::view-transition-old(target):only-child { + background-color: red; +} +::view-transition-old(*):only-child { + color: red; +} + +</style> +<div id="target"></div> + +<script> +let matchedColor = "rgb(255, 0, 0)"; +let notMatchedColor = "rgb(0, 0, 255)"; + +promise_test(() => { + return new Promise(async (resolve, reject) => { + document.documentElement.style.viewTransitionName = "root"; + target.style.viewTransitionName = "none"; + let transition = document.startViewTransition(() => { + document.documentElement.style.viewTransitionName = "none"; + }); + + transition.ready.then(() => { + let style = getComputedStyle( + document.documentElement, ":view-transition-old(root)"); + if (style.backgroundColor == matchedColor && style.color == matchedColor) + resolve(); + else + reject(style.backgroundColor + " and " + style.color); + }); + }); +}, ":only-child should match because ::view-transition-new is not generated (root to none)"); + +promise_test(() => { + return new Promise(async (resolve, reject) => { + document.documentElement.style.viewTransitionName = "root"; + target.style.viewTransitionName = "none"; + let transition = document.startViewTransition(); + + transition.ready.then(() => { + let style = getComputedStyle( + document.documentElement, ":view-transition-old(root)"); + if (style.backgroundColor == notMatchedColor && style.color == notMatchedColor) + resolve(); + else + reject(style.backgroundColor + " and " + style.color); + }); + }); +}, ":only-child should not match because ::view-transition-new is generated (root to root)"); + +promise_test(() => { + return new Promise(async (resolve, reject) => { + document.documentElement.style.viewTransitionName = "root"; + target.style.viewTransitionName = "none"; + let transition = document.startViewTransition(() => { + document.documentElement.style.viewTransitionName = "none"; + target.style.viewTransitionName = "root"; + }); + + transition.ready.then(() => { + let style = getComputedStyle( + document.documentElement, ":view-transition-old(root)"); + if (style.backgroundColor == notMatchedColor && style.color == notMatchedColor) + resolve(); + else + reject(style.backgroundColor + " and " + style.color); + }); + }); +}, ":only-child should not match because ::view-transition-new is generated (root to element)"); + +promise_test(() => { + return new Promise(async (resolve, reject) => { + target.style.viewTransitionName = "target"; + document.documentElement.style.viewTransitionName = "none"; + let transition = document.startViewTransition(() => { + target.style.viewTransitionName = "none"; + }); + + transition.ready.then(() => { + let style = getComputedStyle( + document.documentElement, ":view-transition-old(target)"); + if (style.backgroundColor == matchedColor && style.color == matchedColor) + resolve(); + else + reject(style.backgroundColor + " and " + style.color); + }); + }); +}, ":only-child should match because ::view-transition-new is not generated (element to none)"); + +promise_test(() => { + return new Promise(async (resolve, reject) => { + target.style.viewTransitionName = "root"; + document.documentElement.style.viewTransitionName = "none"; + let transition = document.startViewTransition(() => { + document.documentElement.style.viewTransitionName = "root"; + target.style.viewTransitionName = "none"; + }); + + transition.ready.then(() => { + let style = getComputedStyle( + document.documentElement, ":view-transition-old(root)"); + if (style.backgroundColor == notMatchedColor && style.color == notMatchedColor) + resolve(); + else + reject(style.backgroundColor + " and " + style.color); + }); + }); +}, ":only-child should not match because ::view-transition-new is generated (element to root)"); + +promise_test(() => { + return new Promise(async (resolve, reject) => { + target.style.viewTransitionName = "target"; + document.documentElement.style.viewTransitionName = "none"; + let transition = document.startViewTransition(); + + transition.ready.then(() => { + let style = getComputedStyle( + document.documentElement, ":view-transition-old(target)"); + if (style.backgroundColor == notMatchedColor && style.color == notMatchedColor) + resolve(); + else + reject(style.backgroundColor + " and " + style.color); + }); + }); +}, ":only-child should not match because ::view-transition-new is generated (element to element)"); +</script> |