diff --git a/browser/base/content/test/performance/browser_windowopen_reflows.js b/browser/base/content/test/performance/browser_windowopen_reflows.js index 9da03f1dfea4..2a8a0e64ca7b 100644 --- a/browser/base/content/test/performance/browser_windowopen_reflows.js +++ b/browser/base/content/test/performance/browser_windowopen_reflows.js @@ -20,21 +20,26 @@ const EXPECTED_REFLOWS = [ ], ]; -if (Services.appinfo.OS == "Darwin") { - // TabsInTitlebar._update causes a reflow on OS X trying to do calculations - // since layout info is already dirty. This doesn't seem to happen before - // MozAfterPaint on Linux. - EXPECTED_REFLOWS.push( - [ - "rect@chrome://browser/content/browser-tabsintitlebar.js", - "_update@chrome://browser/content/browser-tabsintitlebar.js", - "updateAppearance@chrome://browser/content/browser-tabsintitlebar.js", - "handleEvent@chrome://browser/content/tabbrowser.xml", - ], - ); +if (Services.appinfo.OS == "Linux") { + if (gMultiProcessBrowser) { + EXPECTED_REFLOWS.push( + [ + "handleEvent@chrome://browser/content/tabbrowser.xml", + "EventListener.handleEvent*tabbrowser-tabs_XBL_Constructor@chrome://browser/content/tabbrowser.xml", + ], + ); + } else { + EXPECTED_REFLOWS.push( + [ + "handleEvent@chrome://browser/content/tabbrowser.xml", + "inferFromText@chrome://browser/content/browser.js", + "handleEvent@chrome://browser/content/browser.js", + ], + ); + } } -if (Services.appinfo.OS == "WINNT" || Services.appinfo.OS == "Darwin") { +if (Services.appinfo.OS == "Darwin") { EXPECTED_REFLOWS.push( [ "handleEvent@chrome://browser/content/tabbrowser.xml", @@ -44,11 +49,93 @@ if (Services.appinfo.OS == "WINNT" || Services.appinfo.OS == "Darwin") { ); } +if (Services.appinfo.OS == "WINNT") { + EXPECTED_REFLOWS.push( + [ + "verticalMargins@chrome://browser/content/browser-tabsintitlebar.js", + "_update@chrome://browser/content/browser-tabsintitlebar.js", + "updateAppearance@chrome://browser/content/browser-tabsintitlebar.js", + "handleEvent@chrome://browser/content/tabbrowser.xml", + ], + + [ + "verticalMargins@chrome://browser/content/browser-tabsintitlebar.js", + "_update@chrome://browser/content/browser-tabsintitlebar.js", + "updateAppearance@chrome://browser/content/browser-tabsintitlebar.js", + "handleEvent@chrome://browser/content/tabbrowser.xml", + ], + + [ + "handleEvent@chrome://browser/content/tabbrowser.xml", + "inferFromText@chrome://browser/content/browser.js", + "handleEvent@chrome://browser/content/browser.js", + ], + + [ + "handleEvent@chrome://browser/content/tabbrowser.xml", + "EventListener.handleEvent*tabbrowser-tabs_XBL_Constructor@chrome://browser/content/tabbrowser.xml", + ], + ); +} + +if (Services.appinfo.OS == "WINNT" || Services.appinfo.OS == "Darwin") { + EXPECTED_REFLOWS.push( + [ + "rect@chrome://browser/content/browser-tabsintitlebar.js", + "_update@chrome://browser/content/browser-tabsintitlebar.js", + "updateAppearance@chrome://browser/content/browser-tabsintitlebar.js", + "handleEvent@chrome://browser/content/tabbrowser.xml", + ], + + [ + "rect@chrome://browser/content/browser-tabsintitlebar.js", + "_update@chrome://browser/content/browser-tabsintitlebar.js", + "updateAppearance@chrome://browser/content/browser-tabsintitlebar.js", + "handleEvent@chrome://browser/content/tabbrowser.xml", + ], + + [ + "rect@chrome://browser/content/browser-tabsintitlebar.js", + "_update@chrome://browser/content/browser-tabsintitlebar.js", + "updateAppearance@chrome://browser/content/browser-tabsintitlebar.js", + "handleEvent@chrome://browser/content/tabbrowser.xml", + ], + + [ + "rect@chrome://browser/content/browser-tabsintitlebar.js", + "_update@chrome://browser/content/browser-tabsintitlebar.js", + "updateAppearance@chrome://browser/content/browser-tabsintitlebar.js", + "handleEvent@chrome://browser/content/tabbrowser.xml", + ], + + [ + "verticalMargins@chrome://browser/content/browser-tabsintitlebar.js", + "_update@chrome://browser/content/browser-tabsintitlebar.js", + "updateAppearance@chrome://browser/content/browser-tabsintitlebar.js", + "handleEvent@chrome://browser/content/tabbrowser.xml", + ], + + [ + "verticalMargins@chrome://browser/content/browser-tabsintitlebar.js", + "_update@chrome://browser/content/browser-tabsintitlebar.js", + "updateAppearance@chrome://browser/content/browser-tabsintitlebar.js", + "handleEvent@chrome://browser/content/tabbrowser.xml", + ], + ); +} + /* * This test ensures that there are no unexpected * uninterruptible reflows when opening new windows. */ add_task(async function() { + // Flushing all caches helps to ensure that we get consistent + // behaviour when opening a new window, even if windows have been + // opened in previous tests. + Services.obs.notifyObservers(null, "startupcache-invalidate"); + Services.obs.notifyObservers(null, "chrome-flush-skin-caches"); + Services.obs.notifyObservers(null, "chrome-flush-caches"); + let win = OpenBrowserWindow(); await withReflowObserver(async function() {