Title: [292730] trunk/Source/WebCore
Revision
292730
Author
drou...@apple.com
Date
2022-04-11 15:48:26 -0700 (Mon, 11 Apr 2022)

Log Message

[Modern Media Controls] remove unnecessary `LayoutTraits` methods
https://bugs.webkit.org/show_bug.cgi?id=239018
<rdar://problem/91324687>

Reviewed by Eric Carlson.

* Modules/modern-media-controls/controls/layout-traits.js:
(LayoutTraits.prototype.knobStyleForScrubber): Deleted.
(LayoutTraits.prototype.playPauseButtonScaleFactor): Deleted.
* Modules/modern-media-controls/controls/ios-layout-traits.js:
(IOSLayoutTraits.prototype.knobStyleForScrubber): Deleted.
(IOSLayoutTraits.prototype.playPauseButtonScaleFactor): Deleted.
* Modules/modern-media-controls/controls/macos-layout-traits.js:
(MacOSLayoutTraits.prototype.knobStyleForScrubber): Deleted.
(MacOSLayoutTraits.prototype.playPauseButtonScaleFactor): Deleted.
* Modules/modern-media-controls/controls/watchos-layout-traits.js:
(WatchOSLayoutTraits.prototype.knobStyleForScrubber): Deleted.
(WatchOSLayoutTraits.prototype.playPauseButtonScaleFactor): Deleted.
* Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:
(MacOSFullscreenMediaControls):
* Modules/modern-media-controls/controls/macos-inline-media-controls.js:
(MacOSInlineMediaControls):
* Modules/modern-media-controls/controls/play-pause-button.js:
(PlayPauseButton):
* Modules/modern-media-controls/controls/time-control.js:
(TimeControl):
Remove these functions as they are much more controllable by having the `MediaControls`
subclass set the related property directly. Having them be on `LayoutTraits` also makes it
more difficult to handle situations where the state of the `MediaControls` influences the
value given to the property (e.g. whether to use the video or audio layout).

* Modules/modern-media-controls/controls/buttons-container.js:
(ButtonsContainer):
Expose the default value of `leftMargin`, `rightMargin`, and `buttonMargin` so that if the
`MediaControls` wants to reset one of the above overrides, it doesn't need a magic number.

* Modules/modern-media-controls/controls/slider.js:
(Slider.prototype.get knobStyle): Added.
(Slider.prototype.set knobStyle): Added.
Provide a way to change the `knobStyle` after construction in case the `MediaControls` state
changes.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (292729 => 292730)


--- trunk/Source/WebCore/ChangeLog	2022-04-11 22:14:09 UTC (rev 292729)
+++ trunk/Source/WebCore/ChangeLog	2022-04-11 22:48:26 UTC (rev 292730)
@@ -1,3 +1,47 @@
+2022-04-11  Devin Rousso  <drou...@apple.com>
+
+        [Modern Media Controls] remove unnecessary `LayoutTraits` methods
+        https://bugs.webkit.org/show_bug.cgi?id=239018
+        <rdar://problem/91324687>
+
+        Reviewed by Eric Carlson.
+
+        * Modules/modern-media-controls/controls/layout-traits.js:
+        (LayoutTraits.prototype.knobStyleForScrubber): Deleted.
+        (LayoutTraits.prototype.playPauseButtonScaleFactor): Deleted.
+        * Modules/modern-media-controls/controls/ios-layout-traits.js:
+        (IOSLayoutTraits.prototype.knobStyleForScrubber): Deleted.
+        (IOSLayoutTraits.prototype.playPauseButtonScaleFactor): Deleted.
+        * Modules/modern-media-controls/controls/macos-layout-traits.js:
+        (MacOSLayoutTraits.prototype.knobStyleForScrubber): Deleted.
+        (MacOSLayoutTraits.prototype.playPauseButtonScaleFactor): Deleted.
+        * Modules/modern-media-controls/controls/watchos-layout-traits.js:
+        (WatchOSLayoutTraits.prototype.knobStyleForScrubber): Deleted.
+        (WatchOSLayoutTraits.prototype.playPauseButtonScaleFactor): Deleted.
+        * Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:
+        (MacOSFullscreenMediaControls):
+        * Modules/modern-media-controls/controls/macos-inline-media-controls.js:
+        (MacOSInlineMediaControls):
+        * Modules/modern-media-controls/controls/play-pause-button.js:
+        (PlayPauseButton):
+        * Modules/modern-media-controls/controls/time-control.js:
+        (TimeControl):
+        Remove these functions as they are much more controllable by having the `MediaControls`
+        subclass set the related property directly. Having them be on `LayoutTraits` also makes it
+        more difficult to handle situations where the state of the `MediaControls` influences the
+        value given to the property (e.g. whether to use the video or audio layout).
+
+        * Modules/modern-media-controls/controls/buttons-container.js:
+        (ButtonsContainer):
+        Expose the default value of `leftMargin`, `rightMargin`, and `buttonMargin` so that if the
+        `MediaControls` wants to reset one of the above overrides, it doesn't need a magic number.
+
+        * Modules/modern-media-controls/controls/slider.js:
+        (Slider.prototype.get knobStyle): Added.
+        (Slider.prototype.set knobStyle): Added.
+        Provide a way to change the `knobStyle` after construction in case the `MediaControls` state
+        changes.
+
 2022-04-11  Matt Woodrow  <mattwood...@apple.com>
 
         Use unaccelerated rendering for ImageBitmapRenderingContext's placeholder image.

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/buttons-container.js (292729 => 292730)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/buttons-container.js	2022-04-11 22:14:09 UTC (rev 292729)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/buttons-container.js	2022-04-11 22:48:26 UTC (rev 292730)
@@ -26,16 +26,24 @@
 class ButtonsContainer extends LayoutNode
 {
 
-    constructor({ children = [], leftMargin = 16, rightMargin = 16, buttonMargin = 16, cssClassName = "" } = {})
+    constructor({ children, leftMargin, rightMargin, buttonMargin, cssClassName } = {})
     {
-        super(`<div class="buttons-container ${cssClassName}"></div>`);
+        super(`<div class="buttons-container ${cssClassName ?? ""}"></div>`);
 
-        this.leftMargin = leftMargin;
-        this.rightMargin = rightMargin;
-        this.buttonMargin = buttonMargin;
-        this.children = children;
+        this.leftMargin = leftMargin ?? ButtonsContainer.Defaults.LeftMargin;
+        this.rightMargin = rightMargin ?? ButtonsContainer.Defaults.RightMargin;
+        this.buttonMargin = buttonMargin ?? ButtonsContainer.Defaults.ButtonMargin;
+        this.children = children ?? [];
     }
 
+    // Static
+
+    static Defaults = {
+        LeftMargin: 16,
+        RightMargin: 16,
+        ButtonMargin: 16,
+    };
+
     // Public
 
     willRemoveChild(child)

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/ios-layout-traits.js (292729 => 292730)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/ios-layout-traits.js	2022-04-11 22:14:09 UTC (rev 292729)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/ios-layout-traits.js	2022-04-11 22:48:26 UTC (rev 292730)
@@ -55,21 +55,11 @@
         return false;
     }
 
-    knobStyleForScrubber()
-    {
-        return Slider.KnobStyle.Circle;
-    }
-
     supportsDurationTimeLabel()
     {
         return false;
     }
 
-    playPauseButtonScaleFactor()
-    {
-        return 1;
-    }
-
     controlsDependOnPageScaleFactor()
     {
         return true;

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/layout-traits.js (292729 => 292730)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/layout-traits.js	2022-04-11 22:14:09 UTC (rev 292729)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/layout-traits.js	2022-04-11 22:48:26 UTC (rev 292730)
@@ -66,21 +66,11 @@
         throw "Derived class must implement this function.";
     }
 
-    knobStyleForScrubber()
-    {
-        throw "Derived class must implement this function.";
-    }
-
     supportsDurationTimeLabel()
     {
         throw "Derived class must implement this function.";
     }
 
-    playPauseButtonScaleFactor()
-    {
-        throw "Derived class must implement this function.";
-    }
-
     controlsDependOnPageScaleFactor()
     {
         throw "Derived class must implement this function.";

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js (292729 => 292730)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js	2022-04-11 22:14:09 UTC (rev 292729)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js	2022-04-11 22:48:26 UTC (rev 292730)
@@ -37,6 +37,10 @@
         this.element.classList.add("mac");
         this.element.classList.add("fullscreen");
 
+        this.timeControl.scrubber.knobStyle = Slider.KnobStyle.Bar;
+
+        this.playPauseButton.scaleFactor = 2;
+
         // Set up fullscreen-specific buttons.
         this.rewindButton = new RewindButton(this);
         this.forwardButton = new ForwardButton(this);

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js (292729 => 292730)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js	2022-04-11 22:14:09 UTC (rev 292729)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js	2022-04-11 22:48:26 UTC (rev 292730)
@@ -36,6 +36,8 @@
 
         this.element.classList.add("mac");
 
+        this.timeControl.scrubber.knobStyle = Slider.KnobStyle.Bar;
+
         this._backgroundClickDelegateNotifier = new BackgroundClickDelegateNotifier(this);
 
         this.volumeSlider = new Slider("volume");

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-layout-traits.js (292729 => 292730)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-layout-traits.js	2022-04-11 22:14:09 UTC (rev 292729)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-layout-traits.js	2022-04-11 22:48:26 UTC (rev 292730)
@@ -57,21 +57,11 @@
         return this.isFullscreen;
     }
 
-    knobStyleForScrubber()
-    {
-        return Slider.KnobStyle.Bar;
-    }
-
     supportsDurationTimeLabel()
     {
         return true;
     }
 
-    playPauseButtonScaleFactor()
-    {
-        return this.isFullscreen ? 2 : 1;
-    }
-
     controlsDependOnPageScaleFactor()
     {
         return false;

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/play-pause-button.js (292729 => 292730)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/play-pause-button.js	2022-04-11 22:14:09 UTC (rev 292729)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/play-pause-button.js	2022-04-11 22:48:26 UTC (rev 292730)
@@ -33,8 +33,6 @@
             iconName: Icons.Play,
             layoutDelegate
         });
-
-        this.scaleFactor = this.layoutTraits.playPauseButtonScaleFactor();
     }
 
     // Public

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/slider.js (292729 => 292730)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/slider.js	2022-04-11 22:14:09 UTC (rev 292729)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/slider.js	2022-04-11 22:48:26 UTC (rev 292730)
@@ -105,6 +105,25 @@
         this.needsLayout = true;
     }
 
+    get knobStyle()
+    {
+        return this._knobStyle;
+    }
+
+    set knobStyle(knobStyle)
+    {
+        if (this._knobStyle === knobStyle)
+            return;
+
+        this._knob.element.classList.remove(this._knobStyle);
+
+        this._knobStyle = knobStyle;
+
+        this._knob.element.classList.add(this._knobStyle);
+
+        this.needsLayout = true;
+    }
+
     // Protected
 
     handleEvent(event)

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/time-control.js (292729 => 292730)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/time-control.js	2022-04-11 22:14:09 UTC (rev 292729)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/time-control.js	2022-04-11 22:48:26 UTC (rev 292730)
@@ -42,7 +42,7 @@
         this._shouldShowDurationTimeLabel = this.layoutTraits.supportsDurationTimeLabel();
 
         this.elapsedTimeLabel = new TimeLabel(TimeLabel.Type.Elapsed);
-        this.scrubber = new Slider("scrubber", this.layoutTraits.knobStyleForScrubber());
+        this.scrubber = new Slider("scrubber");
         if (this._shouldShowDurationTimeLabel)
             this.durationTimeLabel = new TimeLabel(TimeLabel.Type.Duration);
         this.remainingTimeLabel = new TimeLabel(TimeLabel.Type.Remaining);

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/watchos-layout-traits.js (292729 => 292730)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/watchos-layout-traits.js	2022-04-11 22:14:09 UTC (rev 292729)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/watchos-layout-traits.js	2022-04-11 22:48:26 UTC (rev 292730)
@@ -55,21 +55,11 @@
         return false;
     }
 
-    knobStyleForScrubber()
-    {
-        return Slider.KnobStyle.Circle;
-    }
-
     supportsDurationTimeLabel()
     {
         return false;
     }
 
-    playPauseButtonScaleFactor()
-    {
-        return 1;
-    }
-
     controlsDependOnPageScaleFactor()
     {
         return false;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to