diff options
Diffstat (limited to 'devtools/client/webide/test/test_toolbox.html')
-rw-r--r-- | devtools/client/webide/test/test_toolbox.html | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/devtools/client/webide/test/test_toolbox.html b/devtools/client/webide/test/test_toolbox.html new file mode 100644 index 000000000..71ac2706c --- /dev/null +++ b/devtools/client/webide/test/test_toolbox.html @@ -0,0 +1,93 @@ +<!DOCTYPE html> + +<html> + + <head> + <meta charset="utf8"> + <title></title> + + <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> + <script type="application/javascript" src="chrome://mochikit/content/chrome-harness.js"></script> + <script type="application/javascript;version=1.8" src="head.js"></script> + <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"> + </head> + + <body> + + <script type="application/javascript;version=1.8"> + window.onload = function() { + SimpleTest.waitForExplicitFinish(); + + let win; + + SimpleTest.registerCleanupFunction(() => { + Task.spawn(function*() { + if (win) { + yield closeWebIDE(win); + } + DebuggerServer.destroy(); + yield removeAllProjects(); + }); + }); + + Task.spawn(function*() { + if (!DebuggerServer.initialized) { + DebuggerServer.init(); + DebuggerServer.addBrowserActors(); + } + + win = yield openWebIDE(); + let docRuntime = getRuntimeDocument(win); + let docProject = getProjectDocument(win); + + win.AppManager.update("runtime-list"); + + let deferred = promise.defer(); + win.AppManager.connection.once( + win.Connection.Events.CONNECTED, + () => deferred.resolve()); + + docRuntime.querySelectorAll(".runtime-panel-item-other")[1].click(); + + ok(win.document.querySelector("window").className, "busy", "UI is busy"); + yield win.UI._busyPromise; + + is(Object.keys(DebuggerServer._connections).length, 1, "Connected"); + + yield waitForUpdate(win, "runtime-global-actors"); + + ok(win.AppManager.isMainProcessDebuggable(), "Main process available"); + + // Select main process + SimpleTest.executeSoon(() => { + docProject.querySelectorAll("#project-panel-runtimeapps .panel-item")[0].click(); + }); + + yield waitForUpdate(win, "project"); + + // Toolbox opens automatically for main process / runtime apps + ok(win.UI.toolboxPromise, "Toolbox promise exists"); + let toolbox = yield win.UI.toolboxPromise; + + yield toolbox.destroy(); + + ok(!win.UI.toolboxPromise, "Toolbox promise should be unset once toolbox.destroy()'s promise resolves"); + + // Reopen the toolbox right after to check races and also + // opening a toolbox more than just once against the same target + yield win.Cmds.toggleToolbox(); + + ok(win.UI.toolboxPromise, "Toolbox promise exists"); + + yield win.UI.destroyToolbox(); + + ok(!win.UI.toolboxPromise, "Toolbox promise is also nullified the second times"); + + yield win.Cmds.disconnectRuntime(); + + SimpleTest.finish(); + }); + } + </script> + </body> +</html> |