| <!DOCTYPE html><!-- webkit-test-runner [ enableModernMediaControls=false ] --> |
| <html> |
| <head> |
| <script src="../media-file.js"></script> |
| <script src="controls-test-helpers.js"></script> |
| <script> |
| internals.setMockMediaPlaybackTargetPickerEnabled(true); |
| internals.settings.setAllowsAirPlayForMediaPlayback(true); |
| |
| let eventCounter = 0; |
| |
| function isVisible(state) |
| { |
| if (state === null || typeof state.className !== "string") |
| return true; |
| |
| const classes = state.className.split(); |
| return !classes.includes("dropped") && !classes.includes("hidden"); |
| } |
| |
| function start() |
| { |
| tester.startNewSection("Test initial state"); |
| |
| tester.test("We are using the apple idiom") |
| .value(tester.currentState.idiom) |
| .isEqualTo("apple"); |
| |
| tester.test("video.controls should be false") |
| .value(tester.media.controls) |
| .isFalse(); |
| |
| const controlPanel = tester.stateForControlsElement("Media Controls Panel"); |
| tester.test("Controls should not be visible") |
| .value(isVisible(controlPanel)) |
| .isFalse(); |
| |
| tester.startNewSection("Select an AppleTV device"); |
| internals.setMediaElementRestrictions(tester.media, "norestrictions"); |
| tester.media.addEventListener('webkitplaybacktargetavailabilitychanged', () => { }, false); |
| tester.media.addEventListener('webkitcurrentplaybacktargetiswirelesschanged', targetChanged, false); |
| internals.setMockMediaPlaybackTargetPickerState("Sleepy TV", "DeviceAvailable"); |
| } |
| |
| function targetChanged() |
| { |
| if (!tester.media.webkitCurrentPlaybackTargetIsWireless) |
| return; |
| |
| // Because this script is triggered by the same event the default controls use to |
| // show the placeholder, this may run before the controls have been reconfigured. |
| const placeholder = tester.stateForControlsElement("Inline playback placeholder", true); |
| if (!isVisible(placeholder) && ++eventCounter < 5) { |
| setTimeout(targetChanged, 100); |
| return; |
| } |
| |
| tester.test("Placeholder is visible") |
| .value(isVisible(placeholder)) |
| .isTrue(); |
| tester.test("Placeholder has classname 'appletv'") |
| .value(placeholder.className) |
| .contains("appletv"); |
| |
| const controlPanel = tester.stateForControlsElement("Media Controls Panel"); |
| tester.test("Controls should not be visible") |
| .value(isVisible(controlPanel)) |
| .isFalse(); |
| |
| tester.end(); |
| } |
| |
| const tester = new ControlsTest() |
| .whenReady(start) |
| .start(); |
| |
| </script> |
| </head> |
| <body> |
| <p>This tests that showing the wireless device placeholder does not show controls.</p> |
| <p>This test only runs in DRT!</p> |
| <video ></video> |
| </body> |
| </html> |