From d920f99fa1e0947cb517b5d0a2fe26963a9c949c Mon Sep 17 00:00:00 2001 From: Mike Conley Date: Wed, 5 Jul 2017 13:57:57 -0700 Subject: [PATCH] Bug 1363361 - Update expected reflows on window open now that we're using nsIDOMWindowUtils to dirty the frame tree. r=florian MozReview-Commit-ID: 13NQn1618mR --HG-- extra : rebase_source : eb0c73f7cb2aa966ff15a0d41f9f3974ecd278a3 --- .../performance/browser_windowopen_reflows.js | 113 ++++++++++++++++-- 1 file changed, 100 insertions(+), 13 deletions(-) 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() {