| <!DOCTYPE html> <!-- webkit-test-runner [ SpatialPortalEnabled=true ModelElementEnabled=true ModelProcessEnabled=true allowTestOnlyIPC=true ] --> | |
| <html> | |
| <script src="../resources/testharness.js"></script> | |
| <script src="../resources/testharnessreport.js"></script> | |
| <script src="../model-element/resources/model-utils.js"></script> | |
| <script src="../model-element/resources/model-element-test-utils.js"></script> | |
| <script src="resources/spatial-portal-utils.js"></script> | |
| <body> | |
| <script> | |
| 'use strict'; | |
| window.internals?.disableModelLoadDelaysForTesting(); | |
| const blueResource = "../model-element/resources/blue.hdr"; | |
| const redResource = "../model-element/resources/red.hdr"; | |
| const blueMap = "blue.hdr"; | |
| const redMap = "red.hdr"; | |
| const modelResource = "../model-element/resources/cube.usdz"; | |
| promise_test(async t => { | |
| const [model] = createModelAndSource(t, modelResource); | |
| model.setAttribute("environmentmap", blueResource); | |
| await model.ready; | |
| await waitForEnvironmentMap(model, value => value.endsWith(blueMap), "the attribute's map"); | |
| assert_equals(getComputedStyle(model).environmentMap, "auto", "the property is at its initial value"); | |
| }, "environment-map: auto defers to the environmentmap attribute"); | |
| promise_test(async t => { | |
| declareEnvironmentMap(t, { name: "sunset", src: redResource }); | |
| const [model] = createModelAndSource(t, modelResource); | |
| model.setAttribute("environmentmap", blueResource); | |
| model.style.environmentMap = '"sunset"'; | |
| await model.ready; | |
| const value = await waitForEnvironmentMap(model, map => map.endsWith(redMap), "the CSS map"); | |
| assert_true(value.endsWith(redMap), `${value} comes from CSS, not the attribute`); | |
| }, "A named environment map overrides the environmentmap attribute"); | |
| promise_test(async t => { | |
| const [model] = createModelAndSource(t, modelResource); | |
| model.setAttribute("environmentmap", blueResource); | |
| model.style.environmentMap = "none"; | |
| await model.ready; | |
| await waitForEnvironmentMap(model, value => value === "none", "the lighting to be disabled"); | |
| }, "environment-map: none overrides the environmentmap attribute"); | |
| promise_test(async t => { | |
| declareEnvironmentMap(t, { name: "sunset", src: redResource }); | |
| const [model] = createModelAndSource(t, modelResource); | |
| model.setAttribute("environmentmap", blueResource); | |
| model.style.environmentMap = '"sunset"'; | |
| await model.ready; | |
| await waitForEnvironmentMap(model, value => value.endsWith(redMap), "the CSS map"); | |
| model.style.environmentMap = "auto"; | |
| await waitForEnvironmentMap(model, value => value.endsWith(blueMap), "the attribute's map again"); | |
| }, "Reverting environment-map to auto hands control back to the attribute"); | |
| </script> | |
| </body> | |
| </html> |