summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/performance/browser_startup_hiddenwindow.js
blob: 7ad611be9428de44b0a4560360acf5130c537b23 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

add_task(async function () {
  if (
    !AppConstants.NIGHTLY_BUILD &&
    !AppConstants.MOZ_DEV_EDITION &&
    !AppConstants.DEBUG
  ) {
    ok(
      !("@mozilla.org/test/startuprecorder;1" in Cc),
      "the startup recorder component shouldn't exist in this non-nightly/non-devedition/" +
        "non-debug build."
    );
    return;
  }

  let startupRecorder =
    Cc["@mozilla.org/test/startuprecorder;1"].getService().wrappedJSObject;
  await startupRecorder.done;

  let extras = Cu.cloneInto(startupRecorder.data.extras, {});

  let phasesExpectations = {
    "before profile selection": false,
    "before opening first browser window": false,
    "before first paint": !Services.prefs.getBoolPref(
      "toolkit.lazyHiddenWindow"
    ),

    // Bug 1531854
    "before handling user events": true,
    "before becoming idle": true,
  };

  for (let phase in extras) {
    if (!(phase in phasesExpectations)) {
      ok(false, `Startup phase '${phase}' should be specified.`);
      continue;
    }

    is(
      extras[phase].hiddenWindowLoaded,
      phasesExpectations[phase],
      `Hidden window loaded at '${phase}': ${phasesExpectations[phase]}`
    );
  }
});