pagereveal-no-view-transition-new-opt-out.html (1343B)
1 <!DOCTYPE html> 2 <title> 3 View transitions: null event.viewTransition when new page removes opt-in 4 before pagereveal 5 </title> 6 <link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/"> 7 <link rel="author" href="mailto:bokan@chromium.org"> 8 <script src="/resources/testharness.js"></script> 9 <script src="/resources/testharnessreport.js"></script> 10 <style id="vt-style"> 11 @view-transition { 12 navigation: auto; 13 } 14 </style> 15 <script> 16 const params = new URLSearchParams(location.search.substr(1)); 17 18 switch (params.get("mode") || "test") { 19 case "test": 20 promise_test(async t => { 21 const event = await new Promise(resolve => { 22 window.did_reveal = e => { resolve(e) }; 23 const popup = window.open("?mode=old"); 24 t.add_cleanup(() => popup.close()); 25 }); 26 27 assert_true('viewTransition' in event, 28 '`pagereveal` must have a `viewTransition` property.'); 29 assert_equals(event.viewTransition, null, 30 '`viewTransition` must be null when there is no opt-in.'); 31 }); 32 break; 33 case "old": 34 onload = () => requestAnimationFrame(() => requestAnimationFrame(() => { 35 location.replace('?mode=new'); 36 })); 37 break; 38 case "new": 39 onpagereveal = e => window.opener.did_reveal(e); 40 // Remove the opt-in from the destination page. 41 document.querySelector("#vt-style").remove(); 42 break; 43 } 44 </script>