mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
101 lines
2.4 KiB
JavaScript
101 lines
2.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
var gTab1 = null;
|
|
var gTab1Actor = null;
|
|
|
|
var gTab2 = null;
|
|
var gTab2Actor = null;
|
|
|
|
var gClient = null;
|
|
|
|
function test()
|
|
{
|
|
let transport = DebuggerServer.connectPipe();
|
|
gClient = new DebuggerClient(transport);
|
|
gClient.connect(function(aType, aTraits) {
|
|
is(aType, "browser", "Root actor should identify itself as a browser.");
|
|
test_first_tab();
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Verify that a new tab shows up in a listTabs call.
|
|
*/
|
|
function test_first_tab()
|
|
{
|
|
gTab1 = addTab(TAB1_URL, function() {
|
|
gClient.listTabs(function(aResponse) {
|
|
for each (let tab in aResponse.tabs) {
|
|
if (tab.url == TAB1_URL) {
|
|
gTab1Actor = tab.actor;
|
|
}
|
|
}
|
|
ok(gTab1Actor, "Should find a tab actor for tab1.");
|
|
test_second_tab();
|
|
});
|
|
});
|
|
}
|
|
|
|
function test_second_tab()
|
|
{
|
|
gTab2 = addTab(TAB2_URL, function() {
|
|
gClient.listTabs(function(aResponse) {
|
|
// Verify that tab1 has the same actor it used to.
|
|
let foundTab1 = false;
|
|
for each (let tab in aResponse.tabs) {
|
|
if (tab.url == TAB1_URL) {
|
|
is(tab.actor, gTab1Actor, "Tab1's actor shouldn't have changed.");
|
|
foundTab1 = true;
|
|
}
|
|
if (tab.url == TAB2_URL) {
|
|
gTab2Actor = tab.actor;
|
|
}
|
|
}
|
|
ok(foundTab1, "Should have found an actor for tab 1.");
|
|
ok(gTab2Actor != null, "Should find an actor for tab2.");
|
|
|
|
test_remove_tab();
|
|
});
|
|
});
|
|
}
|
|
|
|
function test_remove_tab()
|
|
{
|
|
removeTab(gTab1);
|
|
gTab1 = null;
|
|
gClient.listTabs(function(aResponse) {
|
|
// Verify that tab1 is no longer included in listTabs.
|
|
let foundTab1 = false;
|
|
for each (let tab in aResponse.tabs) {
|
|
if (tab.url == TAB1_URL) {
|
|
ok(false, "Tab1 should be gone.");
|
|
}
|
|
}
|
|
ok(!foundTab1, "Tab1 should be gone.");
|
|
test_attach_removed_tab();
|
|
});
|
|
}
|
|
|
|
function test_attach_removed_tab()
|
|
{
|
|
removeTab(gTab2);
|
|
gTab2 = null;
|
|
gClient.addListener("paused", function(aEvent, aPacket) {
|
|
ok(false, "Attaching to an exited tab actor shouldn't generate a pause.");
|
|
finish_test();
|
|
});
|
|
|
|
gClient.request({ to: gTab2Actor, type: "attach" }, function(aResponse) {
|
|
is(aResponse.type, "exited", "Tab should consider itself exited.");
|
|
finish_test();
|
|
});
|
|
}
|
|
|
|
function finish_test()
|
|
{
|
|
gClient.close(function() {
|
|
finish();
|
|
});
|
|
}
|