12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
- "use strict";
- const { require, loader } = Cu.import("resource://devtools/shared/Loader.jsm", {});
- /* exported loader, either, click, dblclick, mousedown, rightMousedown, key */
- // All tests are asynchronous.
- waitForExplicitFinish();
- // Performance tests are much heavier because of their reliance on the
- // profiler module, memory measurements, frequent canvas operations etc. Many of
- // of them take longer than 30 seconds to finish on try server VMs, even though
- // they superficially do very little.
- requestLongerTimeout(3);
- // Same as `is`, but takes in two possible values.
- const either = (value, a, b, message) => {
- if (value == a) {
- is(value, a, message);
- } else if (value == b) {
- is(value, b, message);
- } else {
- ok(false, message);
- }
- };
- // Shortcut for simulating a click on an element.
- const click = (node, win = window) => {
- EventUtils.sendMouseEvent({ type: "click" }, node, win);
- };
- // Shortcut for simulating a double click on an element.
- const dblclick = (node, win = window) => {
- EventUtils.sendMouseEvent({ type: "dblclick" }, node, win);
- };
- // Shortcut for simulating a mousedown on an element.
- const mousedown = (node, win = window) => {
- EventUtils.sendMouseEvent({ type: "mousedown" }, node, win);
- };
- // Shortcut for simulating a mousedown using the right mouse button on an element.
- const rightMousedown = (node, win = window) => {
- EventUtils.sendMouseEvent({ type: "mousedown", button: 2 }, node, win);
- };
- // Shortcut for firing a key event, like "VK_UP", "VK_DOWN", etc.
- const key = (id, win = window) => {
- EventUtils.synthesizeKey(id, {}, win);
- };
- // Don't pollute global scope.
- (() => {
- const flags = require("devtools/shared/flags");
- const PrefUtils = require("devtools/client/performance/test/helpers/prefs");
- flags.testing = true;
- // Make sure all the prefs are reverted to their defaults once tests finish.
- let stopObservingPrefs = PrefUtils.whenUnknownPrefChanged("devtools.performance",
- pref => {
- ok(false, `Unknown pref changed: ${pref}. Please add it to test/helpers/prefs.js ` +
- "to make sure it's reverted to its default value when the tests finishes, " +
- "and avoid interfering with future tests.\n");
- });
- // By default, enable memory flame graphs for tests for now.
- // TODO: remove when we have flame charts via bug 1148663.
- Services.prefs.setBoolPref(PrefUtils.UI_ENABLE_MEMORY_FLAME_CHART, true);
- registerCleanupFunction(() => {
- info("finish() was called, cleaning up...");
- flags.testing = false;
- PrefUtils.rollbackPrefsToDefault();
- stopObservingPrefs();
- // Manually stop the profiler module at the end of all tests, to hopefully
- // avoid at least some leaks on OSX. Theoretically the module should never
- // be active at this point. We shouldn't have to do this, but rather
- // find and fix the leak in the module itself. Bug 1257439.
- let nsIProfilerModule = Cc["@mozilla.org/tools/profiler;1"]
- .getService(Ci.nsIProfiler);
- nsIProfilerModule.StopProfiler();
- // Forces GC, CC and shrinking GC to get rid of disconnected docshells
- // and windows.
- Cu.forceGC();
- Cu.forceCC();
- Cu.forceShrinkingGC();
- });
- })();
|