Add a test for media control dropoff
authoreric.carlson@apple.com <eric.carlson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 11 Jul 2016 14:37:32 +0000 (14:37 +0000)
committereric.carlson@apple.com <eric.carlson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 11 Jul 2016 14:37:32 +0000 (14:37 +0000)
https://bugs.webkit.org/show_bug.cgi?id=151287
<rdar://problem/23544666>

Reviewed by Antoine Quint.

Source/WebCore:

Test: media/controls/inline-elements-dropoff-order.html

* Modules/mediacontrols/mediaControlsApple.js: Expose more state to testing.
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::setAllowsAirPlayForMediaPlayback): Renamed from setWirelessPlaybackDisabled.
(WebCore::InternalSettings::setWirelessPlaybackDisabled): Deleted.
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

LayoutTests:

* media/controls/inline-elements-dropoff-order-expected.txt: Added.
* media/controls/inline-elements-dropoff-order.html: Added.
* platform/mac-yosemite/media/controls: Added.
* platform/mac-yosemite/media/controls/inline-elements-dropoff-order-expected.txt: Added.
* platform/mac-elcapitan/media/controls: Added.
* platform/mac-elcapitan/media/controls/inline-elements-dropoff-order-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@203057 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/media/controls/inline-elements-dropoff-order-expected.txt [new file with mode: 0644]
LayoutTests/media/controls/inline-elements-dropoff-order.html [new file with mode: 0644]
LayoutTests/platform/mac-yosemite/media/controls/inline-elements-dropoff-order-expected.txt [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/Modules/mediacontrols/mediaControlsApple.js
Source/WebCore/testing/InternalSettings.cpp
Source/WebCore/testing/InternalSettings.h
Source/WebCore/testing/InternalSettings.idl

index f17d667..083f2cf 100644 (file)
@@ -1,3 +1,18 @@
+2016-07-11  Eric Carlson  <eric.carlson@apple.com>
+
+        Add a test for media control dropoff
+        https://bugs.webkit.org/show_bug.cgi?id=151287
+        <rdar://problem/23544666>
+
+        Reviewed by Antoine Quint.
+
+        * media/controls/inline-elements-dropoff-order-expected.txt: Added.
+        * media/controls/inline-elements-dropoff-order.html: Added.
+        * platform/mac-yosemite/media/controls: Added.
+        * platform/mac-yosemite/media/controls/inline-elements-dropoff-order-expected.txt: Added.
+        * platform/mac-elcapitan/media/controls: Added.
+        * platform/mac-elcapitan/media/controls/inline-elements-dropoff-order-expected.txt: Added.
+
 2016-07-11  Frederic Wang  <fwang@igalia.com>
 
         Update expectations for some MathML pixel tests on Windows.
diff --git a/LayoutTests/media/controls/inline-elements-dropoff-order-expected.txt b/LayoutTests/media/controls/inline-elements-dropoff-order-expected.txt
new file mode 100644 (file)
index 0000000..95b703e
--- /dev/null
@@ -0,0 +1,359 @@
+Test control element visibility at different element widths.
+
+This test only runs in DRT!
+
+
+EVENT: error
+PASS: We are using the Apple idiom
+
+*** Test the controls layout without video ***
+
+* Width 60px:
+PASS: Play Button is visible
+PASS: Status Display is visible
+PASS: Rewind Button is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Fullscreen Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 90px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Status Display is visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Fullscreen Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 200px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Status Display is visible
+PASS: Mute Box is visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Fullscreen Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+
+*** Test the controls layout with video ***
+
+EVENT: canplaythrough
+* Width 60px:
+PASS: Play Button is visible
+PASS: Rewind Button is not visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Fullscreen Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 90px:
+PASS: Play Button is visible
+PASS: Fullscreen Button is visible
+PASS: Rewind Button is not visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 120px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 150px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 200px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Picture-in-picture Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 400px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Timeline is visible
+PASS: Current Time is visible
+PASS: Thumbnail Track is visible
+PASS: Time Remaining is visible
+PASS: Mute Box is visible
+PASS: Picture-in-picture Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Caption Button is not visible
+
+
+*** Test the controls layout with video and a caption track ***
+
+* Width 60px:
+PASS: Play Button is visible
+PASS: Rewind Button is not visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Fullscreen Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 90px:
+PASS: Play Button is visible
+PASS: Fullscreen Button is visible
+PASS: Rewind Button is not visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 120px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 150px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 180px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Caption Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 200px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Caption Button is visible
+PASS: Picture-in-picture Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 400px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Current Time is visible
+PASS: Timeline is visible
+PASS: Thumbnail Track is visible
+PASS: Time Remaining is visible
+PASS: Mute Box is visible
+PASS: Caption Button is visible
+PASS: Picture-in-picture Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+
+
+*** Test the controls layout with video, a caption track, and AppleTV ***
+
+* Width 60px:
+PASS: Play Button is visible
+PASS: Rewind Button is not visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Fullscreen Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 90px:
+PASS: Play Button is visible
+PASS: Fullscreen Button is visible
+PASS: Rewind Button is not visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 120px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 150px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 180px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Caption Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 200px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Caption Button is visible
+PASS: Picture-in-picture Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 350px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: AppleTV Device Picker is visible
+PASS: Caption Button is visible
+PASS: Picture-in-picture Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 400px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Current Time is visible
+PASS: Timeline is visible
+PASS: Thumbnail Track is visible
+PASS: Time Remaining is visible
+PASS: Mute Box is visible
+PASS: AppleTV Device Picker is visible
+PASS: Caption Button is visible
+PASS: Picture-in-picture Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+
+
+Testing finished.
+
diff --git a/LayoutTests/media/controls/inline-elements-dropoff-order.html b/LayoutTests/media/controls/inline-elements-dropoff-order.html
new file mode 100644 (file)
index 0000000..99bc564
--- /dev/null
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <script src="../media-file.js"></script>
+        <script src="controls-test-helpers.js"></script>
+        <script>
+
+            const allButtons = [
+                "Play Button", "Rewind Button", "Status Display", "Mute Box", "AppleTV Device Picker", 
+                "Picture-in-picture Button", "Caption Button", "Fullscreen Button", "Timeline", 
+                "Current Time", "Thumbnail Track", "Time Remaining"
+            ];
+            const tester = new ControlsTest("non-existent-media-file", "error")
+                .whenReady(setup)
+                .start();
+
+            function setup()
+            {
+                internals.settings.setAllowsPictureInPictureMediaPlayback(true);
+                internals.settings.setAllowsAirPlayForMediaPlayback(false);
+
+                tester.test("We are using the Apple idiom")
+                    .value(tester.currentState.idiom)
+                    .isEqualTo("apple");
+                tester.startNewSection("*** Test the controls layout without video ***");
+                runTestsWithoutVideo();
+            }
+
+            function testControls(data, nextTest)
+            {
+                if (!data.length) {
+                    if (typeof nextTest === "function")
+                        nextTest();
+                    else
+                        tester.end();
+                    return;
+                }
+                
+                const test = data.shift();
+                
+                if (typeof tester.media.webkitSupportsPresentationMode !== "function" || !tester.media.webkitSupportsPresentationMode('picture-in-picture'))
+                    test.visible = test.visible.filter(name => name.indexOf("Picture-in-picture Button") === -1);
+                if (!internals.setMockMediaPlaybackTargetPickerState)
+                    test.visible = test.visible.filter(name => name.indexOf("AppleTV Device Picker") === -1);
+
+                tester.media.style.width = test.width + "px";
+                window.setTimeout( () => {
+                    tester.logMessage(`* Width ${tester.media.style.width}:`);
+
+                    const isVisible = (state, name) => { 
+                        if (state === null || typeof state.className !== "string")
+                            return false;
+                        return state.className.indexOf("dropped") === -1 && state.className.indexOf("hidden") === -1;
+                    }
+
+                    test.visible.forEach(name => {
+                        const state = tester.stateForControlsElement(name, true);
+                        tester.test(`${name} is visible`)
+                            .value(isVisible(state))
+                            .isTrue();
+                    });
+
+                    allButtons.filter(name => test.visible.indexOf(name) === -1).forEach(name => {
+                        const state = tester.stateForControlsElement(name, true);
+                        tester.test(`${name} is not visible`)
+                            .value(isVisible(state))
+                            .isFalse();
+                    });
+
+                    tester.logBlankLine();
+                    testControls(data, nextTest);
+                }, 100);
+            }
+
+            function runTestsWithoutVideo()
+            {
+                const setupNextTest = () => {
+                    tester.resetEventTrigger("canplaythrough")
+                        .whenReady(runTestsWithVideo)
+                        .media.src = findMediaFile("video", "../content/test");
+                    tester.startNewSection("*** Test the controls layout with video ***");
+                };
+
+                const data = [
+                    { width: 60, visible : ["Play Button", "Status Display"] },
+                    { width: 90, visible : ["Play Button", "Rewind Button", "Status Display"] },
+                    { width: 200, visible : ["Play Button", "Rewind Button", "Status Display", "Mute Box"] },
+                ];
+                testControls(data, setupNextTest);
+            }
+
+            function runTestsWithVideo()
+            {
+                const setupNextTest = () => {
+                    tester.startNewSection("*** Test the controls layout with video and a caption track ***")
+                    const track = document.createElement("track");
+                    track.kind = "captions";
+                    track.src = `data:text/vtt,${encodeURIComponent("WEBVTT\n\n00:00:00.000 --> 00:00:01.000\nCaption 1\n")}`;
+                    tester.media.appendChild(track);
+                    
+                    runTestsWithTextTrack();
+                };
+
+                const data = [
+                    { width: 60,  visible : ["Play Button"] },
+                    { width: 90,  visible : ["Play Button", "Fullscreen Button"] },
+                    { width: 120, visible : ["Play Button", "Rewind Button", "Fullscreen Button"] },
+                    { width: 150, visible : ["Play Button", "Rewind Button", "Mute Box", "Fullscreen Button"] },
+                    { width: 200, visible : ["Play Button", "Rewind Button", "Mute Box", "Picture-in-picture Button", "Fullscreen Button"] },
+                    { width: 400, visible : ["Play Button", "Rewind Button", "Timeline", "Current Time", "Thumbnail Track", "Time Remaining", "Mute Box", "Picture-in-picture Button", "Fullscreen Button"] },
+                ];
+
+                testControls(data, setupNextTest);
+            }
+
+            function runTestsWithTextTrack()
+            {
+                const setupNextTest = () => {
+                    tester.startNewSection("*** Test the controls layout with video, a caption track, and AppleTV ***");
+                    internals.settings.setAllowsAirPlayForMediaPlayback(true);
+                    internals.setMockMediaPlaybackTargetPickerState("Sleepy TV", "DeviceAvailable");
+                    runTestsWithVideoAndAppleTV();
+                };
+
+                const data = [
+                    { width: 60,  visible : ["Play Button"] },
+                    { width: 90,  visible : ["Play Button", "Fullscreen Button"] },
+                    { width: 120, visible : ["Play Button", "Rewind Button", "Fullscreen Button"] },
+                    { width: 150, visible : ["Play Button", "Rewind Button", "Mute Box", "Fullscreen Button"] },
+                    { width: 180, visible : ["Play Button", "Rewind Button", "Mute Box", "Caption Button", "Fullscreen Button"] },
+                    { width: 200, visible : ["Play Button", "Rewind Button", "Mute Box", "Caption Button", "Picture-in-picture Button", "Fullscreen Button"] },
+                    { width: 400, visible : ["Play Button", "Rewind Button", "Current Time", "Timeline", "Thumbnail Track", "Time Remaining", "Mute Box", "Caption Button", "Picture-in-picture Button", "Fullscreen Button"] },
+                ];
+                
+                testControls(data, internals.setMockMediaPlaybackTargetPickerState ? setupNextTest : null);
+            }
+
+            function runTestsWithVideoAndAppleTV()
+            {
+                const data = [
+                    { width: 60,  visible : ["Play Button"] },
+                    { width: 90,  visible : ["Play Button", "Fullscreen Button"] },
+                    { width: 120, visible : ["Play Button", "Rewind Button", "Fullscreen Button"] },
+                    { width: 150, visible : ["Play Button", "Rewind Button", "Mute Box", "Fullscreen Button"] },
+                    { width: 180, visible : ["Play Button", "Rewind Button", "Mute Box", "Caption Button", "Fullscreen Button"] },
+                    { width: 200, visible : ["Play Button", "Rewind Button", "Mute Box", "Caption Button", "Picture-in-picture Button", "Fullscreen Button"] },
+                    { width: 350, visible : ["Play Button", "Rewind Button", "Mute Box", "AppleTV Device Picker", "Caption Button", "Picture-in-picture Button", "Fullscreen Button"] },
+                    { width: 400, visible : ["Play Button", "Rewind Button", "Current Time", "Timeline", "Thumbnail Track", "Time Remaining", "Mute Box", "AppleTV Device Picker", "Caption Button", "Picture-in-picture Button", "Fullscreen Button"] },
+                ];
+
+                testControls(data);
+            }
+
+
+        </script>
+    </head>
+    <body>
+        <p>Test control element visibility at different element widths.</p>
+        <p>This test only runs in DRT!</p>
+        <video controls></video>
+    </body>
+</html>
diff --git a/LayoutTests/platform/mac-yosemite/media/controls/inline-elements-dropoff-order-expected.txt b/LayoutTests/platform/mac-yosemite/media/controls/inline-elements-dropoff-order-expected.txt
new file mode 100644 (file)
index 0000000..377bd64
--- /dev/null
@@ -0,0 +1,244 @@
+Test control element visibility at different element widths.
+
+This test only runs in DRT!
+
+
+EVENT: error
+PASS: We are using the Apple idiom
+
+*** Test the controls layout without video ***
+
+* Width 60px:
+PASS: Play Button is visible
+PASS: Status Display is visible
+PASS: Rewind Button is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Fullscreen Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 90px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Status Display is visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Fullscreen Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 200px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Status Display is visible
+PASS: Mute Box is visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Fullscreen Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+
+*** Test the controls layout with video ***
+
+EVENT: canplaythrough
+* Width 60px:
+PASS: Play Button is visible
+PASS: Rewind Button is not visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Fullscreen Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 90px:
+PASS: Play Button is visible
+PASS: Fullscreen Button is visible
+PASS: Rewind Button is not visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 120px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 150px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 200px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 400px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Timeline is visible
+PASS: Current Time is visible
+PASS: Thumbnail Track is visible
+PASS: Time Remaining is visible
+PASS: Mute Box is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+
+
+*** Test the controls layout with video and a caption track ***
+
+* Width 60px:
+PASS: Play Button is visible
+PASS: Rewind Button is not visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Fullscreen Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 90px:
+PASS: Play Button is visible
+PASS: Fullscreen Button is visible
+PASS: Rewind Button is not visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 120px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: Mute Box is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 150px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Caption Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 180px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Caption Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 200px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Mute Box is visible
+PASS: Caption Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+PASS: Timeline is not visible
+PASS: Current Time is not visible
+PASS: Thumbnail Track is not visible
+PASS: Time Remaining is not visible
+
+* Width 400px:
+PASS: Play Button is visible
+PASS: Rewind Button is visible
+PASS: Current Time is visible
+PASS: Timeline is visible
+PASS: Thumbnail Track is visible
+PASS: Time Remaining is visible
+PASS: Mute Box is visible
+PASS: Caption Button is visible
+PASS: Fullscreen Button is visible
+PASS: Status Display is not visible
+PASS: AppleTV Device Picker is not visible
+PASS: Picture-in-picture Button is not visible
+
+
+Testing finished.
+
index f97af89..5cfb814 100644 (file)
@@ -1,3 +1,21 @@
+2016-07-11  Eric Carlson  <eric.carlson@apple.com>
+
+        Add a test for media control dropoff
+        https://bugs.webkit.org/show_bug.cgi?id=151287
+        <rdar://problem/23544666>
+
+        Reviewed by Antoine Quint.
+
+        Test: media/controls/inline-elements-dropoff-order.html
+
+        * Modules/mediacontrols/mediaControlsApple.js: Expose more state to testing.
+        * testing/InternalSettings.cpp:
+        (WebCore::InternalSettings::setAllowsAirPlayForMediaPlayback): Renamed from setWirelessPlaybackDisabled.
+        (WebCore::InternalSettings::setWirelessPlaybackDisabled): Deleted.
+        * testing/InternalSettings.h:
+        * testing/InternalSettings.idl:
+
+
 2016-07-11  Philippe Normand  <pnormand@igalia.com>
 
         [GStreamer][GL] crash within triggerRepaint
index 0b794a6..f59073f 100644 (file)
@@ -2288,33 +2288,37 @@ Controller.prototype = {
             {
                 name: "Show Controls",
                 object: this.showControlsButton,
-                extraProperties: ["hidden"]
+                extraProperties: ["hidden"],
             },
             {
                 name: "Status Display",
                 object: this.controls.statusDisplay,
                 styleValues: ["display"],
-                extraProperties: ["textContent"]
+                extraProperties: ["textContent"],
             },
             {
                 name: "Play Button",
-                object: this.controls.playButton
+                object: this.controls.playButton,
+                extraProperties: ["hidden"],
             },
             {
                 name: "Rewind Button",
-                object: this.controls.rewindButton
+                object: this.controls.rewindButton,
+                extraProperties: ["hidden"],
             },
             {
                 name: "Timeline Box",
-                object: this.controls.timelineBox
+                object: this.controls.timelineBox,
             },
             {
                 name: "Mute Box",
-                object: this.controls.muteBox
+                object: this.controls.muteBox,
+                extraProperties: ["hidden"],
             },
             {
                 name: "Fullscreen Button",
-                object: this.controls.fullscreenButton
+                object: this.controls.fullscreenButton,
+                extraProperties: ["hidden"],
             },
             {
                 name: "AppleTV Device Picker",
@@ -2325,11 +2329,36 @@ Controller.prototype = {
             {
                 name: "Picture-in-picture Button",
                 object: this.controls.pictureInPictureButton,
-                extraProperties: ["parentElement"],
+                extraProperties: ["parentElement", "hidden"],
+            },
+            {
+                name: "Caption Button",
+                object: this.controls.captionButton,
+                extraProperties: ["hidden"],
+            },
+            {
+                name: "Timeline",
+                object: this.controls.timeline,
+                extraProperties: ["hidden"],
+            },
+            {
+                name: "Current Time",
+                object: this.controls.currentTime,
+                extraProperties: ["hidden"],
+            },
+            {
+                name: "Thumbnail Track",
+                object: this.controls.thumbnailTrack,
+                extraProperties: ["hidden"],
+            },
+            {
+                name: "Time Remaining",
+                object: this.controls.remainingTime,
+                extraProperties: ["hidden"],
             },
             {
                 name: "Track Menu",
-                object: this.captionMenu
+                object: this.captionMenu,
             },
             {
                 name: "Inline playback placeholder",
index fbd19aa..74f6c7b 100644 (file)
@@ -227,7 +227,7 @@ InternalSettings::InternalSettings(Page* page)
     , m_backup(page->settings())
 {
 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
-    page->settings().setAllowsAirPlayForMediaPlayback(false);
+    setAllowsAirPlayForMediaPlayback(false);
 #endif
 }
 
@@ -238,7 +238,7 @@ void InternalSettings::resetToConsistentState()
     page()->setCanStartMedia(true);
     page()->settings().setForcePendingWebGLPolicy(false);
 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
-    page()->settings().setAllowsAirPlayForMediaPlayback(false);
+    setAllowsAirPlayForMediaPlayback(false);
 #endif
 
     m_backup.restoreTo(*settings());
@@ -381,12 +381,12 @@ void InternalSettings::setCanStartMedia(bool enabled, ExceptionCode& ec)
     m_page->setCanStartMedia(enabled);
 }
 
-void InternalSettings::setWirelessPlaybackDisabled(bool available)
+void InternalSettings::setAllowsAirPlayForMediaPlayback(bool allows)
 {
 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
-    m_page->settings().setAllowsAirPlayForMediaPlayback(available);
+    m_page->settings().setAllowsAirPlayForMediaPlayback(allows);
 #else
-    UNUSED_PARAM(available);
+    UNUSED_PARAM(allows);
 #endif
 }
 
index 3092fae..6067d2e 100644 (file)
@@ -138,7 +138,7 @@ public:
     void setTextAutosizingFontScaleFactor(float fontScaleFactor, ExceptionCode&);
     void setMediaTypeOverride(const String& mediaType, ExceptionCode&);
     void setCanStartMedia(bool, ExceptionCode&);
-    void setWirelessPlaybackDisabled(bool);
+    void setAllowsAirPlayForMediaPlayback(bool);
     void setEditingBehavior(const String&, ExceptionCode&);
     void setPreferMIMETypeForImages(bool, ExceptionCode&);
     void setShouldDisplayTrackKind(const String& kind, bool enabled, ExceptionCode&);
index a30eabd..bfe42ab 100644 (file)
@@ -53,7 +53,7 @@
     [RaisesException] void setDefaultVideoPosterURL(DOMString poster);
     [RaisesException] void setTimeWithoutMouseMovementBeforeHidingControls(unrestricted double time);
     [RaisesException] void setMediaTypeOverride(DOMString mediaTypeOverride);
-    void setWirelessPlaybackDisabled(boolean available);
+    void setAllowsAirPlayForMediaPlayback(boolean available);
 
     [RaisesException] void setForcePendingWebGLPolicy(boolean forced);