--- a/browser/base/content/test/performance/browser_windowopen_reflows.js
+++ b/browser/base/content/test/performance/browser_windowopen_reflows.js
@@ -15,45 +15,132 @@
const EXPECTED_REFLOWS = [
[
"select@chrome://global/content/bindings/textbox.xml",
"focusAndSelectUrlBar@chrome://browser/content/browser.js",
"_delayedStartup@chrome://browser/content/browser.js",
],
];
-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",
"inferFromText@chrome://browser/content/browser.js",
"handleEvent@chrome://browser/content/browser.js",
],
);
}
+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() {
let resizeEvent = BrowserTestUtils.waitForEvent(win, "resize");
let delayedStartup =
TestUtils.topicObserved("browser-delayed-startup-finished",
subject => subject == win);
await resizeEvent;