mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
216 lines
5.7 KiB
JavaScript
216 lines
5.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/**
|
|
* Tests if the same script is shown after a page is reloaded.
|
|
*/
|
|
|
|
const TAB_URL = EXAMPLE_URL + "browser_dbg_script-switching.html";
|
|
|
|
let gPane = null;
|
|
let gTab = null;
|
|
let gDebuggee = null;
|
|
let gDebugger = null;
|
|
let gView = null;
|
|
|
|
function test()
|
|
{
|
|
let step = 0;
|
|
let expectedScript = "";
|
|
let expectedScriptShown = false;
|
|
let scriptShownUrl = null;
|
|
let resumed = false;
|
|
let testStarted = false;
|
|
|
|
debug_tab_pane(TAB_URL, function(aTab, aDebuggee, aPane) {
|
|
gTab = aTab;
|
|
gDebuggee = aDebuggee;
|
|
gPane = aPane;
|
|
gDebugger = gPane.contentWindow;
|
|
gView = gDebugger.DebuggerView;
|
|
resumed = true;
|
|
|
|
startTest();
|
|
});
|
|
|
|
function onScriptShown(aEvent)
|
|
{
|
|
expectedScriptShown = aEvent.detail.url.indexOf("-01.js") != -1;
|
|
scriptShownUrl = aEvent.detail.url;
|
|
startTest();
|
|
}
|
|
|
|
function onUlteriorScriptShown(aEvent)
|
|
{
|
|
ok(expectedScript,
|
|
"The expected script to show up should have been specified.");
|
|
|
|
info("The expected script for this ScriptShown event is: " + expectedScript);
|
|
info("The current script for this ScriptShown event is: " + aEvent.detail.url);
|
|
|
|
expectedScriptShown = aEvent.detail.url.indexOf(expectedScript) != -1;
|
|
scriptShownUrl = aEvent.detail.url;
|
|
testScriptShown();
|
|
}
|
|
|
|
window.addEventListener("Debugger:SourceShown", onScriptShown);
|
|
|
|
function startTest()
|
|
{
|
|
if (expectedScriptShown && resumed && !testStarted) {
|
|
window.removeEventListener("Debugger:SourceShown", onScriptShown);
|
|
window.addEventListener("Debugger:SourceShown", onUlteriorScriptShown);
|
|
testStarted = true;
|
|
Services.tm.currentThread.dispatch({ run: performTest }, 0);
|
|
}
|
|
}
|
|
|
|
function finishTest()
|
|
{
|
|
if (expectedScriptShown && resumed && testStarted) {
|
|
window.removeEventListener("Debugger:SourceShown", onUlteriorScriptShown);
|
|
closeDebuggerAndFinish();
|
|
}
|
|
}
|
|
|
|
function performTest()
|
|
{
|
|
testCurrentScript("-01.js", step);
|
|
expectedScript = "-01.js";
|
|
performAction(reloadPage);
|
|
}
|
|
|
|
function testScriptShown()
|
|
{
|
|
if (!expectedScriptShown) {
|
|
return;
|
|
}
|
|
step++;
|
|
|
|
if (step === 1) {
|
|
testCurrentScript("-01.js", step, true);
|
|
expectedScript = "-01.js";
|
|
performAction(reloadPage);
|
|
}
|
|
else if (step === 2) {
|
|
testCurrentScript("-01.js", step, true);
|
|
expectedScript = "-02.js";
|
|
performAction(switchScript, 1);
|
|
}
|
|
else if (step === 3) {
|
|
testCurrentScript("-02.js", step);
|
|
expectedScript = "-02.js";
|
|
performAction(reloadPage);
|
|
}
|
|
else if (step === 4) {
|
|
testCurrentScript("-02.js", step, true);
|
|
expectedScript = "-01.js";
|
|
performAction(switchScript, 0);
|
|
}
|
|
else if (step === 5) {
|
|
testCurrentScript("-01.js", step);
|
|
expectedScript = "-01.js";
|
|
performAction(reloadPage);
|
|
}
|
|
else if (step === 6) {
|
|
testCurrentScript("-01.js", step, true);
|
|
expectedScript = "-01.js";
|
|
performAction(reloadPage);
|
|
}
|
|
else if (step === 7) {
|
|
testCurrentScript("-01.js", step, true);
|
|
expectedScript = "-01.js";
|
|
performAction(reloadPage);
|
|
}
|
|
else if (step === 8) {
|
|
testCurrentScript("-01.js", step, true);
|
|
expectedScript = "-02.js";
|
|
performAction(switchScript, 1);
|
|
}
|
|
else if (step === 9) {
|
|
testCurrentScript("-02.js", step);
|
|
expectedScript = "-02.js";
|
|
performAction(reloadPage);
|
|
}
|
|
else if (step === 10) {
|
|
testCurrentScript("-02.js", step, true);
|
|
expectedScript = "-02.js";
|
|
performAction(reloadPage);
|
|
}
|
|
else if (step === 11) {
|
|
testCurrentScript("-02.js", step, true);
|
|
expectedScript = "-02.js";
|
|
performAction(reloadPage);
|
|
}
|
|
else if (step === 12) {
|
|
testCurrentScript("-02.js", step, true);
|
|
expectedScript = "-01.js";
|
|
performAction(switchScript, 0);
|
|
}
|
|
else if (step === 13) {
|
|
testCurrentScript("-01.js", step);
|
|
finishTest();
|
|
}
|
|
}
|
|
|
|
function testCurrentScript(part, step, isAfterReload)
|
|
{
|
|
info("Currently preferred script: " + gView.Sources.preferredValue);
|
|
info("Currently selected script: " + gView.Sources.selectedValue);
|
|
|
|
if (step < 1) {
|
|
is(gView.Sources.preferredValue, null,
|
|
"The preferred script url should be initially null");
|
|
}
|
|
else if (isAfterReload) {
|
|
isnot(gView.Sources.preferredValue.indexOf(part), -1,
|
|
"The preferred script url wasn't set correctly. (" + step + ")");
|
|
}
|
|
|
|
isnot(gView.Sources.selectedValue.indexOf(part), -1,
|
|
"The selected script isn't the correct one. (" + step + ")");
|
|
is(gView.Sources.selectedValue, scriptShownUrl,
|
|
"The shown script is not the the correct one. (" + step + ")");
|
|
}
|
|
|
|
function performAction(callback, data)
|
|
{
|
|
// Poll every few milliseconds until the scripts are retrieved.
|
|
let count = 0;
|
|
let intervalID = window.setInterval(function() {
|
|
dump("count: " + count + " ");
|
|
if (++count > 50) {
|
|
ok(false, "Timed out while polling for the scripts.");
|
|
closeDebuggerAndFinish();
|
|
}
|
|
if (gView.Sources.values.length !== 2) {
|
|
return;
|
|
}
|
|
info("Available scripts: " + gView.Sources.values);
|
|
|
|
// We got all the scripts, it's safe to callback.
|
|
window.clearInterval(intervalID);
|
|
callback(data);
|
|
}, 100);
|
|
}
|
|
|
|
function switchScript(index)
|
|
{
|
|
gView.Sources.selectedValue = gView.Sources.values[index];
|
|
}
|
|
|
|
function reloadPage()
|
|
{
|
|
gDebuggee.location.reload();
|
|
}
|
|
|
|
registerCleanupFunction(function() {
|
|
removeTab(gTab);
|
|
gPane = null;
|
|
gTab = null;
|
|
gDebuggee = null;
|
|
gDebugger = null;
|
|
gView = null;
|
|
});
|
|
}
|