browser/devtools/debugger/test/browser_dbg_cmd-dbg.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 /**
     5  * Tests that the debugger commands work as they should.
     6  */
     8 const TEST_URI = EXAMPLE_URL + "doc_cmd-dbg.html";
    10 function test() {
    11   return Task.spawn(function() {
    12     let options = yield helpers.openTab(TEST_URI);
    13     yield helpers.openToolbar(options);
    15     yield helpers.audit(options, [{
    16       setup: "dbg open",
    17       exec: { output: "" }
    18     }]);
    20     let [gTab, gDebuggee, gPanel] = yield initDebugger(gBrowser.selectedTab);
    21     let gDebugger = gPanel.panelWin;
    22     let gThreadClient = gDebugger.gThreadClient;
    24     yield helpers.audit(options, [{
    25       setup: "dbg list",
    26       exec: { output: /doc_cmd-dbg.html/ }
    27     }]);
    29     let button = gDebuggee.document.querySelector("input[type=button]");
    30     let output = gDebuggee.document.querySelector("input[type=text]");
    32     let cmd = function(aTyped, aState) {
    33       return promise.all([
    34         waitForThreadEvents(gPanel, aState),
    35         helpers.audit(options, [{ setup: aTyped, exec: { output: "" } }])
    36       ]);
    37     };
    39     let click = function(aElement, aState) {
    40       return promise.all([
    41         waitForThreadEvents(gPanel, aState),
    42         executeSoon(() => EventUtils.sendMouseEvent({ type: "click" }, aElement, gDebuggee))
    43       ]);
    44     }
    46     yield cmd("dbg interrupt", "paused");
    47     is(gThreadClient.state, "paused", "Debugger is paused.");
    49     yield cmd("dbg continue", "resumed");
    50     isnot(gThreadClient.state, "paused", "Debugger has continued.");
    52     yield click(button, "paused");
    53     is(gThreadClient.state, "paused", "Debugger is paused again.");
    55     yield cmd("dbg step in", "paused");
    56     yield cmd("dbg step in", "paused");
    57     yield cmd("dbg step in", "paused");
    58     is(output.value, "step in", "Debugger stepped in.");
    60     yield cmd("dbg step over", "paused");
    61     is(output.value, "step over", "Debugger stepped over.");
    63     yield cmd("dbg step out", "paused");
    64     is(output.value, "step out", "Debugger stepped out.");
    66     yield cmd("dbg continue", "paused");
    67     is(output.value, "dbg continue", "Debugger continued.");
    69     let closeDebugger = function() {
    70       let deferred = promise.defer();
    72       helpers.audit(options, [{
    73         setup: "dbg close",
    74         exec: { output: "" }
    75       }])
    76       .then(() => {
    77         let toolbox = gDevTools.getToolbox(options.target);
    78         if (!toolbox) {
    79           ok(true, "Debugger is closed.");
    80           deferred.resolve();
    81         } else {
    82           toolbox.on("destroyed", () => {
    83             ok(true, "Debugger just closed.");
    84             deferred.resolve();
    85           });
    86         }
    87       });
    89       return deferred.promise;
    90     };
    92     // We close the debugger twice to ensure 'dbg close' doesn't error when
    93     // toolbox is already closed. See bug 884638 for more info.
    94     yield closeDebugger();
    95     yield closeDebugger();
    96     yield helpers.closeToolbar(options);
    97     yield helpers.closeTab(options);
    99   }).then(finish, helpers.handleError);
   100 }

mercurial