Title: [226795] trunk
Revision
226795
Author
grao...@webkit.org
Date
2018-01-11 12:18:35 -0800 (Thu, 11 Jan 2018)

Log Message

[iOS] There should be no controls markup generated in fullscreen
https://bugs.webkit.org/show_bug.cgi?id=181540
<rdar://problem/35060379>

Reviewed by Eric Carlson.

Source/WebCore:

We completely forgo the display of any content when fullscreen on iOS by setting the
"visible" flag to "false" on the MediaControls, which will prevent any DOM content from
being added.

* Modules/modern-media-controls/media/media-controller.js:
(MediaController.prototype.handleEvent):
(MediaController.prototype._updateiOSFullscreenProperties):
(MediaController):
(MediaController.prototype._updateSupportingObjectsEnabledState): Deleted.

LayoutTests:

We update this test to simply check that we're removing all child nodes.

* media/modern-media-controls/media-controller/ios/media-controller-stop-updates-in-fullscreen-expected.txt:
* media/modern-media-controls/media-controller/ios/media-controller-stop-updates-in-fullscreen.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (226794 => 226795)


--- trunk/LayoutTests/ChangeLog	2018-01-11 20:11:13 UTC (rev 226794)
+++ trunk/LayoutTests/ChangeLog	2018-01-11 20:18:35 UTC (rev 226795)
@@ -1,3 +1,16 @@
+2018-01-11  Antoine Quint  <grao...@apple.com>
+
+        [iOS] There should be no controls markup generated in fullscreen
+        https://bugs.webkit.org/show_bug.cgi?id=181540
+        <rdar://problem/35060379>
+
+        Reviewed by Eric Carlson.
+
+        We update this test to simply check that we're removing all child nodes.
+
+        * media/modern-media-controls/media-controller/ios/media-controller-stop-updates-in-fullscreen-expected.txt:
+        * media/modern-media-controls/media-controller/ios/media-controller-stop-updates-in-fullscreen.html:
+
 2018-01-11  Youenn Fablet  <you...@apple.com>
 
         Redirected iframe loading with Request.redirect=follow should fail

Modified: trunk/LayoutTests/media/modern-media-controls/media-controller/ios/media-controller-stop-updates-in-fullscreen-expected.txt (226794 => 226795)


--- trunk/LayoutTests/media/modern-media-controls/media-controller/ios/media-controller-stop-updates-in-fullscreen-expected.txt	2018-01-11 20:11:13 UTC (rev 226794)
+++ trunk/LayoutTests/media/modern-media-controls/media-controller/ios/media-controller-stop-updates-in-fullscreen-expected.txt	2018-01-11 20:18:35 UTC (rev 226795)
@@ -8,17 +8,12 @@
 
 Entering fullscreen.
 
-Obtained a webkitpresentationmodechanged event
-media.webkitDisplayingFullscreen = true.
+Entered fullscreen
 PASS media.paused is false
+PASS window.internals.shadowRoot(media).querySelector('.media-controls').childElementCount became 0
 
-Time progressed.
-PASS elapsedTimeWhenEnteringFullscreen === elapsedTime() is true
+Exited fullscreen
 
-Obtained a webkitpresentationmodechanged event
-media.webkitDisplayingFullscreen = false.
-PASS elapsedTimeWhenEnteringFullscreen === elapsedTime() became false
-
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: trunk/LayoutTests/media/modern-media-controls/media-controller/ios/media-controller-stop-updates-in-fullscreen.html (226794 => 226795)


--- trunk/LayoutTests/media/modern-media-controls/media-controller/ios/media-controller-stop-updates-in-fullscreen.html	2018-01-11 20:11:13 UTC (rev 226794)
+++ trunk/LayoutTests/media/modern-media-controls/media-controller/ios/media-controller-stop-updates-in-fullscreen.html	2018-01-11 20:18:35 UTC (rev 226795)
@@ -14,31 +14,21 @@
 button.textContent = "Enter Fullscreen";
 button.style = "position: absolute; left: 0; top: 0";
 
-let elapsedTimeWhenEnteringFullscreen;
-
 media.addEventListener("webkitpresentationmodechanged", () => {
-    debug("");
-    debug("Obtained a webkitpresentationmodechanged event");
-    debug(`media.webkitDisplayingFullscreen = ${media.webkitDisplayingFullscreen}.`);
+    if (media.webkitDisplayingFullscreen) {
+        debug("");
+        debug("Entered fullscreen");
 
-    if (media.webkitDisplayingFullscreen) {
         shouldBeFalse("media.paused");
-        elapsedTimeWhenEnteringFullscreen = elapsedTime();
-
-        // Let time progress and check after a while that we didn't update the tree.
-        let timeupdateEventCount = 0;
-        media.addEventListener("timeupdate", () => {
-            timeupdateEventCount++;
-            if (timeupdateEventCount == 5) {
-                debug("");
-                debug("Time progressed.");
-                shouldBeTrue("elapsedTimeWhenEnteringFullscreen === elapsedTime()");
-                media.pause();
-                media.webkitExitFullscreen();
-            }
+        shouldBecomeEqual("window.internals.shadowRoot(media).querySelector('.media-controls').childElementCount", "0", () => {
+            media.pause();
+            media.webkitExitFullscreen();
         });
-    } else
-        shouldBecomeEqual("elapsedTimeWhenEnteringFullscreen === elapsedTime()", "false", endTest);
+    } else {
+        debug("");
+        debug("Exited fullscreen");
+        endTest();
+    }
 });
 
 media.addEventListener("play", () => {
@@ -63,11 +53,6 @@
     pressOnElement(button);
 }
 
-function elapsedTime()
-{
-    return window.internals.shadowRoot(media).querySelectorAll(".time-label")[0].textContent;
-}
-
 function startTest()
 {
     enterFullscreen();

Modified: trunk/Source/WebCore/ChangeLog (226794 => 226795)


--- trunk/Source/WebCore/ChangeLog	2018-01-11 20:11:13 UTC (rev 226794)
+++ trunk/Source/WebCore/ChangeLog	2018-01-11 20:18:35 UTC (rev 226795)
@@ -1,3 +1,21 @@
+2018-01-11  Antoine Quint  <grao...@apple.com>
+
+        [iOS] There should be no controls markup generated in fullscreen
+        https://bugs.webkit.org/show_bug.cgi?id=181540
+        <rdar://problem/35060379>
+
+        Reviewed by Eric Carlson.
+
+        We completely forgo the display of any content when fullscreen on iOS by setting the
+        "visible" flag to "false" on the MediaControls, which will prevent any DOM content from
+        being added.
+
+        * Modules/modern-media-controls/media/media-controller.js:
+        (MediaController.prototype.handleEvent):
+        (MediaController.prototype._updateiOSFullscreenProperties):
+        (MediaController):
+        (MediaController.prototype._updateSupportingObjectsEnabledState): Deleted.
+
 2018-01-11  Alex Christensen  <achristen...@webkit.org>
 
         Revert changes accidentally committed with r226789.

Modified: trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js (226794 => 226795)


--- trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js	2018-01-11 20:11:13 UTC (rev 226794)
+++ trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js	2018-01-11 20:18:35 UTC (rev 226795)
@@ -158,7 +158,7 @@
             scheduler.flushScheduledLayoutCallbacks();
         } else if (event.currentTarget === this.media) {
             this._updateControlsIfNeeded();
-            this._updateSupportingObjectsEnabledState();
+            this._updateiOSFullscreenProperties();
             if (event.type === "webkitpresentationmodechanged")
                 this._returnMediaLayerToInlineIfNeeded();
         } else if (event.type === "keydown" && this.isFullscreen && event.key === " ") {
@@ -286,7 +286,7 @@
         this.host.textTrackContainer.classList.toggle("visible-controls-bar", !this.controls.faded);
     }
 
-    _updateSupportingObjectsEnabledState()
+    _updateiOSFullscreenProperties()
     {
         // On iOS, we want to make sure not to update controls when we're in fullscreen since the UI
         // will be completely invisible.
@@ -293,10 +293,13 @@
         if (!(this.layoutTraits & LayoutTraits.iOS))
             return;
 
-        if (this.isFullscreen)
+        const isFullscreen = this.isFullscreen;
+        if (isFullscreen)
             this._supportingObjects.forEach(supportingObject => supportingObject.disable());
         else
             this._supportingObjects.forEach(supportingObject => supportingObject.enable());
+
+        this.controls.visible = !isFullscreen;
     }
 
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to