Title: [207024] trunk
Revision
207024
Author
commit-qu...@webkit.org
Date
2016-10-10 14:17:47 -0700 (Mon, 10 Oct 2016)

Log Message

[Modern Media Controls] Placards
https://bugs.webkit.org/show_bug.cgi?id=163110
<rdar://problem/28669342>

Patch by Antoine Quint <grao...@apple.com> on 2016-10-10
Reviewed by Dean Jackson.

Source/WebCore:

Inline media controls need to display placards when the video is no longer playing inline,
such as when the video is playing fullscreen or via AirPlay. To that end, we introduce a
new Placard class and two subclasses for display during fullscreen or AirPlay playback.
Note that localization will be done in a later patch.

Tests: media/modern-media-controls/airplay-placard/airplay-placard.html
       media/modern-media-controls/pip-placard/pip-placard.html
       media/modern-media-controls/placard/placard.html

* Modules/modern-media-controls/controls/airplay-placard.js:
(AirplayPlacard):
* Modules/modern-media-controls/controls/icon-service.js:
* Modules/modern-media-controls/controls/pip-placard.js:
(PiPPlacard):
* Modules/modern-media-controls/controls/placard.css:
(.placard):
(.placard .container):
(.placard .icon):
(.placard .title,):
(.placard .title):
(.placard .description):
* Modules/modern-media-controls/controls/placard.js:
(Placard.):
* Modules/modern-media-controls/images/iOS/airplay-plac...@1x.png: Added.
* Modules/modern-media-controls/images/iOS/airplay-plac...@2x.png: Added.
* Modules/modern-media-controls/images/iOS/airplay-plac...@3x.png: Added.
* Modules/modern-media-controls/images/iOS/pip-plac...@1x.png: Added.
* Modules/modern-media-controls/images/iOS/pip-plac...@2x.png: Added.
* Modules/modern-media-controls/images/iOS/pip-plac...@3x.png: Added.
* Modules/modern-media-controls/images/macOS/airplay-plac...@1x.png: Added.
* Modules/modern-media-controls/images/macOS/airplay-plac...@2x.png: Added.
* Modules/modern-media-controls/images/macOS/pip-plac...@1x.png: Added.
* Modules/modern-media-controls/images/macOS/pip-plac...@2x.png: Added.

LayoutTests:

Testing the properties of the new Placard class and its subclasses.

* media/modern-media-controls/airplay-placard/airplay-placard-expected.txt: Added.
* media/modern-media-controls/airplay-placard/airplay-placard.html: Added.
* media/modern-media-controls/pip-placard/pip-placard-expected.txt: Added.
* media/modern-media-controls/pip-placard/pip-placard.html: Added.
* media/modern-media-controls/placard/placard-expected.txt: Added.
* media/modern-media-controls/placard/placard.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (207023 => 207024)


--- trunk/LayoutTests/ChangeLog	2016-10-10 21:13:26 UTC (rev 207023)
+++ trunk/LayoutTests/ChangeLog	2016-10-10 21:17:47 UTC (rev 207024)
@@ -1,3 +1,20 @@
+2016-10-10  Antoine Quint  <grao...@apple.com>
+
+        [Modern Media Controls] Placards
+        https://bugs.webkit.org/show_bug.cgi?id=163110
+        <rdar://problem/28669342>
+
+        Reviewed by Dean Jackson.
+
+        Testing the properties of the new Placard class and its subclasses.
+
+        * media/modern-media-controls/airplay-placard/airplay-placard-expected.txt: Added.
+        * media/modern-media-controls/airplay-placard/airplay-placard.html: Added.
+        * media/modern-media-controls/pip-placard/pip-placard-expected.txt: Added.
+        * media/modern-media-controls/pip-placard/pip-placard.html: Added.
+        * media/modern-media-controls/placard/placard-expected.txt: Added.
+        * media/modern-media-controls/placard/placard.html: Added.
+
 2016-10-10  Ryan Haddad  <ryanhad...@apple.com>
 
         Marking fast/replaced/preferred-widths.html as flaky on mac.

Added: trunk/LayoutTests/media/modern-media-controls/airplay-placard/airplay-placard-expected.txt (0 => 207024)


--- trunk/LayoutTests/media/modern-media-controls/airplay-placard/airplay-placard-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/airplay-placard/airplay-placard-expected.txt	2016-10-10 21:17:47 UTC (rev 207024)
@@ -0,0 +1,13 @@
+Testing the AirplayPlacard class.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Placard with all parameters
+PASS placard.children[0].children[0].iconName is Icons.AirplayPlacard
+PASS placard.children[0].children[1].element.innerText is "AirPlay"
+PASS placard.children[0].children[2].element.innerText is "This video is playing on your Apple TV"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/media/modern-media-controls/airplay-placard/airplay-placard.html (0 => 207024)


--- trunk/LayoutTests/media/modern-media-controls/airplay-placard/airplay-placard.html	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/airplay-placard/airplay-placard.html	2016-10-10 21:17:47 UTC (rev 207024)
@@ -0,0 +1,29 @@
+<link rel="stylesheet" href="" type="text/css" media="screen">
+<link rel="stylesheet" href="" type="text/css" media="screen">
+<link rel="stylesheet" href="" type="text/css" media="screen">
+<script src=""
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<body>
+<script type="text/_javascript_">
+
+description("Testing the <code>AirplayPlacard</code> class.");
+
+iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
+
+debug("Placard with all parameters");
+const placard = new AirplayPlacard({ layoutTraits: LayoutTraits.macOS });
+
+shouldBe("placard.children[0].children[0].iconName", "Icons.AirplayPlacard");
+shouldBeEqualToString("placard.children[0].children[1].element.innerText", "AirPlay");
+shouldBeEqualToString("placard.children[0].children[2].element.innerText", "This video is playing on your Apple TV");
+
+</script>
+<script src=""
+</body>

Added: trunk/LayoutTests/media/modern-media-controls/pip-placard/pip-placard-expected.txt (0 => 207024)


--- trunk/LayoutTests/media/modern-media-controls/pip-placard/pip-placard-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/pip-placard/pip-placard-expected.txt	2016-10-10 21:17:47 UTC (rev 207024)
@@ -0,0 +1,12 @@
+Testing the PiPPlacard class.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Placard with all parameters
+PASS placard.children[0].children[0].iconName is Icons.PiPPlacard
+PASS placard.children[0].children[1].element.innerText is "This video is playing in Picture in Picture"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/media/modern-media-controls/pip-placard/pip-placard.html (0 => 207024)


--- trunk/LayoutTests/media/modern-media-controls/pip-placard/pip-placard.html	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/pip-placard/pip-placard.html	2016-10-10 21:17:47 UTC (rev 207024)
@@ -0,0 +1,28 @@
+<link rel="stylesheet" href="" type="text/css" media="screen">
+<link rel="stylesheet" href="" type="text/css" media="screen">
+<link rel="stylesheet" href="" type="text/css" media="screen">
+<script src=""
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<body>
+<script type="text/_javascript_">
+
+description("Testing the <code>PiPPlacard</code> class.");
+
+iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
+
+debug("Placard with all parameters");
+const placard = new PiPPlacard({ layoutTraits: LayoutTraits.macOS });
+
+shouldBe("placard.children[0].children[0].iconName", "Icons.PiPPlacard");
+shouldBeEqualToString("placard.children[0].children[1].element.innerText", "This video is playing in Picture in Picture");
+
+</script>
+<script src=""
+</body>

Added: trunk/LayoutTests/media/modern-media-controls/placard/placard-expected.txt (0 => 207024)


--- trunk/LayoutTests/media/modern-media-controls/placard/placard-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/placard/placard-expected.txt	2016-10-10 21:17:47 UTC (rev 207024)
@@ -0,0 +1,43 @@
+Testing the Placard class.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Placard with all parameters
+PASS placard.element.localName is "div"
+PASS placard.element.className is "placard"
+PASS placard.children.length is 1
+PASS placard.children[0].element.localName is "div"
+PASS placard.children[0].element.className is "container"
+PASS placard.children[0].children.length is 3
+PASS placard.children[0].children[0] instanceof IconButton is true
+PASS placard.children[0].children[0].iconName is Icons.AirplayPlacard
+PASS placard.children[0].children[1] instanceof LayoutNode is true
+PASS placard.children[0].children[1].element.localName is "div"
+PASS placard.children[0].children[1].element.className is "title"
+PASS placard.children[0].children[1].element.innerText is "My title"
+PASS placard.children[0].children[2] instanceof LayoutNode is true
+PASS placard.children[0].children[2].element.localName is "div"
+PASS placard.children[0].children[2].element.className is "description"
+PASS placard.children[0].children[2].element.innerText is "My description"
+
+Placard without any parameter
+PASS defaultPlacard.children[0].children.length is 0
+
+Placard with only a description
+PASS onlyDescriptionPlacard.children[0].children.length is 1
+PASS onlyDescriptionPlacard.children[0].children[0] instanceof LayoutNode is true
+PASS onlyDescriptionPlacard.children[0].children[0].element.className is "description"
+
+Placard with only a title
+PASS onlyTitlePlacard.children[0].children.length is 1
+PASS onlyTitlePlacard.children[0].children[0] instanceof LayoutNode is true
+PASS onlyTitlePlacard.children[0].children[0].element.className is "title"
+
+Placard with only an icon
+PASS onlyIconPlacard.children[0].children.length is 1
+PASS onlyIconPlacard.children[0].children[0] instanceof IconButton is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/media/modern-media-controls/placard/placard.html (0 => 207024)


--- trunk/LayoutTests/media/modern-media-controls/placard/placard.html	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/placard/placard.html	2016-10-10 21:17:47 UTC (rev 207024)
@@ -0,0 +1,71 @@
+<link rel="stylesheet" href="" type="text/css" media="screen">
+<link rel="stylesheet" href="" type="text/css" media="screen">
+<link rel="stylesheet" href="" type="text/css" media="screen">
+<script src=""
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<body>
+<script type="text/_javascript_">
+
+description("Testing the <code>Placard</code> class.");
+
+iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
+
+debug("Placard with all parameters");
+const placard = new Placard({
+    iconName: Icons.AirplayPlacard,
+    title: "My title",
+    description: "My description",
+    layoutDelegate: { layoutTraits: LayoutTraits.macOS }
+});
+
+shouldBeEqualToString("placard.element.localName", "div");
+shouldBeEqualToString("placard.element.className", "placard");
+shouldBe("placard.children.length", "1");
+shouldBeEqualToString("placard.children[0].element.localName", "div");
+shouldBeEqualToString("placard.children[0].element.className", "container");
+shouldBe("placard.children[0].children.length", "3");
+shouldBeTrue("placard.children[0].children[0] instanceof IconButton");
+shouldBe("placard.children[0].children[0].iconName", "Icons.AirplayPlacard");
+shouldBeTrue("placard.children[0].children[1] instanceof LayoutNode");
+shouldBeEqualToString("placard.children[0].children[1].element.localName", "div");
+shouldBeEqualToString("placard.children[0].children[1].element.className", "title");
+shouldBeEqualToString("placard.children[0].children[1].element.innerText", "My title");
+shouldBeTrue("placard.children[0].children[2] instanceof LayoutNode");
+shouldBeEqualToString("placard.children[0].children[2].element.localName", "div");
+shouldBeEqualToString("placard.children[0].children[2].element.className", "description");
+shouldBeEqualToString("placard.children[0].children[2].element.innerText", "My description");
+
+debug("");
+debug("Placard without any parameter");
+const defaultPlacard = new Placard;
+shouldBe("defaultPlacard.children[0].children.length", "0");
+
+debug("");
+debug("Placard with only a description");
+const _onlyDescriptionPlacard_ = new Placard({ description: "My description" });
+shouldBe("onlyDescriptionPlacard.children[0].children.length", "1");
+shouldBeTrue("onlyDescriptionPlacard.children[0].children[0] instanceof LayoutNode");
+shouldBeEqualToString("onlyDescriptionPlacard.children[0].children[0].element.className", "description");
+
+debug("");
+debug("Placard with only a title");
+const _onlyTitlePlacard_ = new Placard({ title: "My title" });
+shouldBe("onlyTitlePlacard.children[0].children.length", "1");
+shouldBeTrue("onlyTitlePlacard.children[0].children[0] instanceof LayoutNode");
+shouldBeEqualToString("onlyTitlePlacard.children[0].children[0].element.className", "title");
+
+debug("");
+debug("Placard with only an icon");
+const _onlyIconPlacard_ = new Placard({ iconName: Icons.AirplayPlacard, layoutDelegate: { layoutTraits: LayoutTraits.macOS } });
+shouldBe("onlyIconPlacard.children[0].children.length", "1");
+shouldBeTrue("onlyIconPlacard.children[0].children[0] instanceof IconButton");
+
+</script>
+<script src=""
+</body>

Modified: trunk/Source/WebCore/ChangeLog (207023 => 207024)


--- trunk/Source/WebCore/ChangeLog	2016-10-10 21:13:26 UTC (rev 207023)
+++ trunk/Source/WebCore/ChangeLog	2016-10-10 21:17:47 UTC (rev 207024)
@@ -1,3 +1,45 @@
+2016-10-10  Antoine Quint  <grao...@apple.com>
+
+        [Modern Media Controls] Placards
+        https://bugs.webkit.org/show_bug.cgi?id=163110
+        <rdar://problem/28669342>
+
+        Reviewed by Dean Jackson.
+
+        Inline media controls need to display placards when the video is no longer playing inline,
+        such as when the video is playing fullscreen or via AirPlay. To that end, we introduce a
+        new Placard class and two subclasses for display during fullscreen or AirPlay playback.
+        Note that localization will be done in a later patch.
+
+        Tests: media/modern-media-controls/airplay-placard/airplay-placard.html
+               media/modern-media-controls/pip-placard/pip-placard.html
+               media/modern-media-controls/placard/placard.html
+
+        * Modules/modern-media-controls/controls/airplay-placard.js:
+        (AirplayPlacard):
+        * Modules/modern-media-controls/controls/icon-service.js:
+        * Modules/modern-media-controls/controls/pip-placard.js:
+        (PiPPlacard):
+        * Modules/modern-media-controls/controls/placard.css:
+        (.placard):
+        (.placard .container):
+        (.placard .icon):
+        (.placard .title,):
+        (.placard .title):
+        (.placard .description):
+        * Modules/modern-media-controls/controls/placard.js:
+        (Placard.):
+        * Modules/modern-media-controls/images/iOS/airplay-plac...@1x.png: Added.
+        * Modules/modern-media-controls/images/iOS/airplay-plac...@2x.png: Added.
+        * Modules/modern-media-controls/images/iOS/airplay-plac...@3x.png: Added.
+        * Modules/modern-media-controls/images/iOS/pip-plac...@1x.png: Added.
+        * Modules/modern-media-controls/images/iOS/pip-plac...@2x.png: Added.
+        * Modules/modern-media-controls/images/iOS/pip-plac...@3x.png: Added.
+        * Modules/modern-media-controls/images/macOS/airplay-plac...@1x.png: Added.
+        * Modules/modern-media-controls/images/macOS/airplay-plac...@2x.png: Added.
+        * Modules/modern-media-controls/images/macOS/pip-plac...@1x.png: Added.
+        * Modules/modern-media-controls/images/macOS/pip-plac...@2x.png: Added.
+
 2016-10-10  Chris Dumez  <cdu...@apple.com>
 
         Add support for Navigator.languages attribute

Added: trunk/Source/WebCore/Modules/modern-media-controls/controls/airplay-placard.js (0 => 207024)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/airplay-placard.js	                        (rev 0)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/airplay-placard.js	2016-10-10 21:17:47 UTC (rev 207024)
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+class AirplayPlacard extends Placard
+{
+
+    constructor(layoutDelegate)
+    {
+        super({
+            iconName: Icons.AirplayPlacard,
+            title: "AirPlay",
+            description: "This video is playing on your Apple TV",
+            layoutDelegate
+        });
+    }
+
+}

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-service.js (207023 => 207024)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-service.js	2016-10-10 21:13:26 UTC (rev 207023)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-service.js	2016-10-10 21:17:47 UTC (rev 207024)
@@ -25,11 +25,13 @@
 
 const Icons = {
     Airplay         : "airplay",
+    AirplayPlacard  : "airplay-placard",
     EnterFullscreen : "enter-fullscreen",
     EnterPiP        : "pip-in",
     ExitFullscreen  : "exit-fullscreen",
     Forward         : "forward",
     Pause           : "pause",
+    PiPPlacard      : "pip-placard",
     Play            : "play",
     Rewind          : "rewind",
     ScaleToFill     : "scale-to-fill",

Added: trunk/Source/WebCore/Modules/modern-media-controls/controls/pip-placard.js (0 => 207024)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/pip-placard.js	                        (rev 0)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/pip-placard.js	2016-10-10 21:17:47 UTC (rev 207024)
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+class PiPPlacard extends Placard
+{
+
+    constructor(layoutDelegate)
+    {
+        super({
+            iconName: Icons.PiPPlacard,
+            description: "This video is playing in Picture in Picture",
+            layoutDelegate
+        });
+    }
+
+}

Added: trunk/Source/WebCore/Modules/modern-media-controls/controls/placard.css (0 => 207024)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/placard.css	                        (rev 0)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/placard.css	2016-10-10 21:17:47 UTC (rev 207024)
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+.placard {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+
+    background-color: black;
+    color: rgb(164, 164, 164);
+    
+    font-family: -apple-system;
+}
+
+.placard .container {
+    position: absolute;
+    left: 50%;
+    top: 50%;
+    max-width: 402px;
+
+    transform: translate(-50%, -50%);
+}
+
+.placard .icon {
+    position: relative;
+    left: 50%;
+    -webkit-mask-repeat: no-repeat;
+    background-color: rgb(164, 164, 164) !important;
+
+    margin-bottom: 10px;
+
+    transform: translateX(-50%);
+}
+
+.placard .title,
+.placard .description {
+    text-align: center;
+}
+
+.placard .title {
+    font-size: 20px;
+}
+
+.placard .description {
+    font-size: 13px;
+}

Added: trunk/Source/WebCore/Modules/modern-media-controls/controls/placard.js (0 => 207024)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/placard.js	                        (rev 0)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/placard.js	2016-10-10 21:17:47 UTC (rev 207024)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+class Placard extends LayoutItem
+{
+
+    constructor({ iconName = null, title = "", description = "", layoutDelegate = null } = {})
+    {
+        super({
+            element: `<div class="placard"></div>`,
+            layoutDelegate
+        });
+
+        const container = this.addChild(new LayoutNode(`<div class="container"></div>`));
+        
+        if (iconName)
+            container.addChild(new IconButton(this)).iconName = iconName;
+
+        if (!!title)
+            container.addChild(new LayoutNode(`<div class="title">${title}</div>`));
+
+        if (!!description)
+            container.addChild(new LayoutNode(`<div class="description">${description}</div>`));
+    }
+
+}

Added: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@1x.png


(Binary files differ)
Index: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@1x.png =================================================================== --- trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@1x.png 2016-10-10 21:13:26 UTC (rev 207023) +++ trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@1x.png 2016-10-10 21:17:47 UTC (rev 207024) Property changes on: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@1x.png ___________________________________________________________________

Added: svn:mime-type

+image/png \ No newline at end of property

Added: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@2x.png


(Binary files differ)
Index: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@2x.png =================================================================== --- trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@2x.png 2016-10-10 21:13:26 UTC (rev 207023) +++ trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@2x.png 2016-10-10 21:17:47 UTC (rev 207024) Property changes on: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@2x.png ___________________________________________________________________

Added: svn:mime-type

+image/png \ No newline at end of property

Added: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@3x.png


(Binary files differ)
Index: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@3x.png =================================================================== --- trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@3x.png 2016-10-10 21:13:26 UTC (rev 207023) +++ trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@3x.png 2016-10-10 21:17:47 UTC (rev 207024) Property changes on: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/airplay-plac...@3x.png ___________________________________________________________________

Added: svn:mime-type

+image/png \ No newline at end of property

Added: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@1x.png


(Binary files differ)
Index: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@1x.png =================================================================== --- trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@1x.png 2016-10-10 21:13:26 UTC (rev 207023) +++ trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@1x.png 2016-10-10 21:17:47 UTC (rev 207024) Property changes on: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@1x.png ___________________________________________________________________

Added: svn:mime-type

+image/png \ No newline at end of property

Added: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@2x.png


(Binary files differ)
Index: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@2x.png =================================================================== --- trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@2x.png 2016-10-10 21:13:26 UTC (rev 207023) +++ trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@2x.png 2016-10-10 21:17:47 UTC (rev 207024) Property changes on: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@2x.png ___________________________________________________________________

Added: svn:mime-type

+image/png \ No newline at end of property

Added: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@3x.png


(Binary files differ)
Index: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@3x.png =================================================================== --- trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@3x.png 2016-10-10 21:13:26 UTC (rev 207023) +++ trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@3x.png 2016-10-10 21:17:47 UTC (rev 207024) Property changes on: trunk/Source/WebCore/Modules/modern-media-controls/images/iOS/pip-plac...@3x.png ___________________________________________________________________

Added: svn:mime-type

+image/png \ No newline at end of property

Added: trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/airplay-plac...@1x.png


(Binary files differ)
Index: trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/airplay-plac...@1x.png =================================================================== --- trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/airplay-plac...@1x.png 2016-10-10 21:13:26 UTC (rev 207023) +++ trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/airplay-plac...@1x.png 2016-10-10 21:17:47 UTC (rev 207024) Property changes on: trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/airplay-plac...@1x.png ___________________________________________________________________

Added: svn:mime-type

+image/png \ No newline at end of property

Added: trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/airplay-plac...@2x.png


(Binary files differ)
Index: trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/airplay-plac...@2x.png =================================================================== --- trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/airplay-plac...@2x.png 2016-10-10 21:13:26 UTC (rev 207023) +++ trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/airplay-plac...@2x.png 2016-10-10 21:17:47 UTC (rev 207024) Property changes on: trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/airplay-plac...@2x.png ___________________________________________________________________

Added: svn:mime-type

+image/png \ No newline at end of property

Added: trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/pip-plac...@1x.png


(Binary files differ)
Index: trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/pip-plac...@1x.png =================================================================== --- trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/pip-plac...@1x.png 2016-10-10 21:13:26 UTC (rev 207023) +++ trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/pip-plac...@1x.png 2016-10-10 21:17:47 UTC (rev 207024) Property changes on: trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/pip-plac...@1x.png ___________________________________________________________________

Added: svn:mime-type

+image/png \ No newline at end of property

Added: trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/pip-plac...@2x.png


(Binary files differ)
Index: trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/pip-plac...@2x.png =================================================================== --- trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/pip-plac...@2x.png 2016-10-10 21:13:26 UTC (rev 207023) +++ trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/pip-plac...@2x.png 2016-10-10 21:17:47 UTC (rev 207024) Property changes on: trunk/Source/WebCore/Modules/modern-media-controls/images/macOS/pip-plac...@2x.png ___________________________________________________________________

Added: svn:mime-type

+image/png \ No newline at end of property
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to