mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
67 lines
2.0 KiB
JavaScript
67 lines
2.0 KiB
JavaScript
|
/* Any copyright is dedicated to the Public Domain.
|
||
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||
|
|
||
|
"use strict";
|
||
|
|
||
|
const Profiler = Cc["@mozilla.org/tools/profiler;1"].getService(Ci.nsIProfiler);
|
||
|
|
||
|
function connectClient(callback) {
|
||
|
let client = new DebuggerClient(DebuggerServer.connectPipe());
|
||
|
client.connect(function () {
|
||
|
client.listTabs(function(response) {
|
||
|
callback(client, response.profilerActor);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function run_test()
|
||
|
{
|
||
|
// Ensure the profiler is not running when the test starts (it could
|
||
|
// happen if the MOZ_PROFILER_STARTUP environment variable is set)
|
||
|
Profiler.StopProfiler();
|
||
|
|
||
|
DebuggerServer.init(function () { return true; });
|
||
|
DebuggerServer.addBrowserActors();
|
||
|
|
||
|
connectClient((client1, actor1) => {
|
||
|
connectClient((client2, actor2) => {
|
||
|
activate_first(client1, actor1, client2, actor2);
|
||
|
});
|
||
|
})
|
||
|
|
||
|
do_test_pending();
|
||
|
}
|
||
|
|
||
|
function activate_first(client1, actor1, client2, actor2) {
|
||
|
// Start the profiler on the first connection....
|
||
|
client1.request({ to: actor1, type: "startProfiler", features: ['js']}, startResponse => {
|
||
|
// Profiler should be active now.
|
||
|
do_check_true(Profiler.IsActive());
|
||
|
|
||
|
// But on the next connection just make sure the actor has been
|
||
|
// instantiated.
|
||
|
client2.request({ to: actor2, type: "getFeatures" }, featureResponse => {
|
||
|
|
||
|
let connectionClosed = DebuggerServer._connectionClosed;
|
||
|
DebuggerServer._connectionClosed = function(conn) {
|
||
|
connectionClosed.call(this, conn);
|
||
|
|
||
|
// Client1 is the only actor that started the profiler,
|
||
|
// it shouldn't be active anymore.
|
||
|
do_check_false(Profiler.IsActive());
|
||
|
|
||
|
DebuggerServer._connectionClosed = function(conn) {
|
||
|
connectionClosed.call(this, conn);
|
||
|
|
||
|
// Now there are no open clients at all, it should *definitely*
|
||
|
// be deactivated by now.
|
||
|
do_check_false(Profiler.IsActive());
|
||
|
do_test_finished();
|
||
|
}
|
||
|
client2.close();
|
||
|
};
|
||
|
client1.close();
|
||
|
});
|
||
|
});
|
||
|
}
|