|  | <!DOCTYPE html> | 
|  | <title>View Transitions: @view-transition cascaldes correclty with layers in separate external stylesheets.</title> | 
|  | <link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/"> | 
|  | <link rel="author" href="mailto:bokan@chromium.org"> | 
|  | <script src="/resources/testharness.js"></script> | 
|  | <script src="/resources/testharnessreport.js"></script> | 
|  | <style> | 
|  | @layer inertA, inertB, active; | 
|  | </style> | 
|  | <style> | 
|  | @import "resources/opt-out-style.css" layer(inertA); | 
|  | </style> | 
|  | <style> | 
|  | @import "resources/opt-in-style.css" layer(active); | 
|  | </style> | 
|  | <style> | 
|  | @import "resources/opt-out-style.css" layer(inertB); | 
|  | </style> | 
|  | <script> | 
|  | const params = new URLSearchParams(location.search); | 
|  |  | 
|  | switch (params.get("mode") || "test") { | 
|  | case "test": | 
|  | promise_test(async t => { | 
|  | const event = await new Promise(resolve => { | 
|  | window.did_reveal = e => { resolve(e) }; | 
|  | const popup = window.open("?mode=old"); | 
|  | t.add_cleanup(() => popup.close()); | 
|  | }); | 
|  |  | 
|  | assert_not_equals(event.viewTransition, null, "ViewTransition must be triggered."); | 
|  | }); | 
|  | break; | 
|  | case "old": | 
|  | onload = () => requestAnimationFrame(() => requestAnimationFrame(() => { | 
|  | location.replace('?mode=new'); | 
|  | })); | 
|  | break; | 
|  | case "new": | 
|  | onpagereveal = e => window.opener.did_reveal(e); | 
|  | break; | 
|  | } | 
|  | </script> |