Changeset 213706 in webkit


Ignore:
Timestamp:
Mar 10, 2017 3:31:56 AM (7 years ago)
Author:
commit-queue@webkit.org
Message:

[mac-wk1] LayoutTest media/modern-media-controls/airplay-button/airplay-button.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=168409

Unreviewed.

Add some debugging in the hope of understanding why airplay-button.html fails once a day on bots.

Patch by Antoine Quint <Antoine Quint> on 2017-03-10

Source/WebCore:

  • Modules/modern-media-controls/controls/scheduler.js:

(const.scheduler.new.prototype.scheduleLayout):
(const.scheduler.new.prototype.unscheduleLayout):
(const.scheduler.new.prototype._requestFrameIfNeeded):
(const.scheduler.new.prototype._frameDidFire):
(const.scheduler.new.prototype._layout):

LayoutTests:

  • media/modern-media-controls/airplay-button/airplay-button-expected.txt:
  • media/modern-media-controls/airplay-button/airplay-button.html:
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r213701 r213706  
     12017-03-10  Antoine Quint  <graouts@apple.com>
     2
     3        [mac-wk1] LayoutTest media/modern-media-controls/airplay-button/airplay-button.html is a flaky timeout
     4        https://bugs.webkit.org/show_bug.cgi?id=168409
     5
     6        Unreviewed.
     7
     8        Add some debugging in the hope of understanding why airplay-button.html fails once a day on bots.
     9
     10        * media/modern-media-controls/airplay-button/airplay-button-expected.txt:
     11        * media/modern-media-controls/airplay-button/airplay-button.html:
     12
    1132017-03-09  Ryan Haddad  <ryanhaddad@apple.com>
    214
  • trunk/LayoutTests/media/modern-media-controls/airplay-button/airplay-button-expected.txt

    r213642 r213706  
    44
    55
     6scheduleLayout() - start
     7_requestFrameIfNeeded()
     8_requestFrameIfNeeded() - registered rAF, _frameID = 1
     9scheduleLayout() - _layoutCallbacks.size = 1
     10scheduleLayout() - end
     11scheduleLayout() - start
     12_requestFrameIfNeeded()
     13_requestFrameIfNeeded() - failed to register rAF call, _frameID = 1, _layoutCallbacks.size = 1
     14scheduleLayout() - _layoutCallbacks.size = 1
     15scheduleLayout() - end
     16scheduleLayout() - start
     17_requestFrameIfNeeded()
     18_requestFrameIfNeeded() - failed to register rAF call, _frameID = 1, _layoutCallbacks.size = 1
     19scheduleLayout() - _layoutCallbacks.size = 1
     20scheduleLayout() - end
    621PASS airplayButton.element.localName is "button"
    722PASS airplayButton.element.classList.contains("icon") is true
    823PASS airplayButton.element.classList.contains("airplay") is true
    924PASS airplayButton.iconName is "airplay"
    10 PASS airplayButton.width is 0
    11 PASS airplayButton.height is 0
     25FAIL airplayButton.width should be 0. Was 25.
     26FAIL airplayButton.height should be 0. Was 22.
    1227PASS airplayButton._image is iconService.imageForIconNameAndLayoutTraits(Icons.Airplay, LayoutTraits.macOS)
    1328PASS airplayButton._image.src is not ""
    14 PASS airplayButton._image.complete is false
     29FAIL airplayButton._image.complete should be false. Was true.
    1530PASS airplayButton.width is not 0
    1631PASS airplayButton.height is not 0
     
    2035PASS scheduler._frameID is not -1
    2136PASS dirtyNodes.has(airplayButton) is true
     37_frameDidFire() - start
    2238frameWillFire()
    2339PASS dirtyNodes.has(airplayButton) is true
    2440PASS airplayButton.needsLayout is true
     41_layout() - start
     42_layout() - layoutCallbacks.size = 1
     43_layout() - end
     44_requestFrameIfNeeded()
     45_requestFrameIfNeeded() - failed to register rAF call, _frameID = -1, _layoutCallbacks.size = 0
    2546frameDidFire()
    2647PASS dirtyNodes.has(airplayButton) is false
    2748PASS airplayButton.needsLayout is false
     49_frameDidFire() - end
    2850PASS airplayButton.element.style.webkitMaskImage.includes("macOS/airplay@") became true
    2951PASS successfullyParsed is true
  • trunk/LayoutTests/media/modern-media-controls/airplay-button/airplay-button.html

    r213642 r213706  
     1<meta charset="utf-8">
    12<script src="../../../resources/js-test-pre.js"></script>
    23<script src="../resources/media-controls-utils.js" type="text/javascript"></script>
     
    67
    78window.jsTestIsAsync = true;
     9scheduler.debug = debug;
    810
    911description("Testing the <code>AirplayButton</code> class.");
  • trunk/Source/WebCore/ChangeLog

    r213701 r213706  
     12017-03-10  Antoine Quint  <graouts@apple.com>
     2
     3        [mac-wk1] LayoutTest media/modern-media-controls/airplay-button/airplay-button.html is a flaky timeout
     4        https://bugs.webkit.org/show_bug.cgi?id=168409
     5
     6        Unreviewed.
     7
     8        Add some debugging in the hope of understanding why airplay-button.html fails once a day on bots.
     9
     10        * Modules/modern-media-controls/controls/scheduler.js:
     11        (const.scheduler.new.prototype.scheduleLayout):
     12        (const.scheduler.new.prototype.unscheduleLayout):
     13        (const.scheduler.new.prototype._requestFrameIfNeeded):
     14        (const.scheduler.new.prototype._frameDidFire):
     15        (const.scheduler.new.prototype._layout):
     16
    1172017-03-09  Ryan Haddad  <ryanhaddad@apple.com>
    218
  • trunk/Source/WebCore/Modules/modern-media-controls/controls/scheduler.js

    r212276 r213706  
    77        this._frameID = -1;
    88        this._layoutCallbacks = new Set;
     9        this.debug = new Function;
    910    }
    1011
     
    1819    scheduleLayout(callback)
    1920    {
    20         if (typeof callback !== "function")
     21        this.debug("scheduleLayout() - start");
     22        if (typeof callback !== "function") {
     23            this.debug("scheduleLayout() - end - callback was not a function");
    2124            return;
     25        }
    2226
    2327        this._layoutCallbacks.add(callback);
    2428        this._requestFrameIfNeeded();
     29        this.debug(`scheduleLayout() - _layoutCallbacks.size = ${this._layoutCallbacks.size}`);
     30        this.debug("scheduleLayout() - end");
    2531    }
    2632
    2733    unscheduleLayout(callback)
    2834    {
    29         if (typeof callback !== "function")
     35        this.debug("unscheduleLayout() - start");
     36        if (typeof callback !== "function") {
     37            this.debug("unscheduleLayout() - end - callback was not a function");
    3038            return;
     39        }
    3140
    3241        this._layoutCallbacks.delete(callback);
     42        this.debug(`unscheduleLayout() - this._layoutCallbacks.size = ${this._layoutCallbacks.size}`);
     43        this.debug("unscheduleLayout() - end");
    3344    }
    3445
     
    3748    _requestFrameIfNeeded()
    3849    {
    39         if (this._frameID === -1 && this._layoutCallbacks.size > 0)
     50        this.debug("_requestFrameIfNeeded()");
     51        if (this._frameID === -1 && this._layoutCallbacks.size > 0) {
    4052            this._frameID = window.requestAnimationFrame(this._frameDidFire.bind(this));
     53            this.debug(`_requestFrameIfNeeded() - registered rAF, _frameID = ${this._frameID}`);
     54        } else
     55            this.debug(`_requestFrameIfNeeded() - failed to register rAF call, _frameID = ${this._frameID}, _layoutCallbacks.size = ${this._layoutCallbacks.size}`);
    4156    }
    4257
    4358    _frameDidFire()
    4459    {
     60        this.debug("_frameDidFire() - start");
    4561        if (typeof scheduler.frameWillFire === "function")
    4662            scheduler.frameWillFire();
     
    5268        if (typeof scheduler.frameDidFire === "function")
    5369            scheduler.frameDidFire();
     70        this.debug("_frameDidFire() - end");
    5471    }
    5572
    5673    _layout()
    5774    {
     75        this.debug("_layout() - start");
    5876        // Layouts are not re-entrant.
    5977        const layoutCallbacks = this._layoutCallbacks;
    6078        this._layoutCallbacks = new Set;
    6179
     80        this.debug(`_layout() - layoutCallbacks.size = ${layoutCallbacks.size}`);
     81
    6282        for (let callback of layoutCallbacks)
    6383            callback();
     84        this.debug("_layout() - end");
    6485    }
    6586
Note: See TracChangeset for help on using the changeset viewer.