browser/devtools/debugger/test/browser_dbg_debugger-statement.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 the behavior of the debugger statement.
     6  */
     8 const TAB_URL = EXAMPLE_URL + "doc_inline-debugger-statement.html";
    10 let gClient;
    12 function test() {
    13   if (!DebuggerServer.initialized) {
    14     DebuggerServer.init(() => true);
    15     DebuggerServer.addBrowserActors();
    16   }
    18   let transport = DebuggerServer.connectPipe();
    19   gClient = new DebuggerClient(transport);
    20   gClient.connect((aType, aTraits) => {
    21     is(aType, "browser",
    22       "Root actor should identify itself as a browser.");
    24     addTab(TAB_URL)
    25       .then(() => attachTabActorForUrl(gClient, TAB_URL))
    26       .then(testEarlyDebuggerStatement)
    27       .then(testDebuggerStatement)
    28       .then(closeConnection)
    29       .then(finish)
    30       .then(null, aError => {
    31         ok(false, "Got an error: " + aError.message + "\n" + aError.stack);
    32       });
    33   });
    34 }
    36 function testEarlyDebuggerStatement([aGrip, aResponse]) {
    37   let deferred = promise.defer();
    39   let onPaused = function(aEvent, aPacket) {
    40     ok(false, "Pause shouldn't be called before we've attached!");
    41     deferred.reject();
    42   };
    44   gClient.addListener("paused", onPaused);
    46   // This should continue without nesting an event loop and calling
    47   // the onPaused hook, because we haven't attached yet.
    48   let debuggee = gBrowser.selectedTab.linkedBrowser.contentWindow.wrappedJSObject;
    49   debuggee.runDebuggerStatement();
    51   gClient.removeListener("paused", onPaused);
    53   // Now attach and resume...
    54   gClient.request({ to: aResponse.threadActor, type: "attach" }, () => {
    55     gClient.request({ to: aResponse.threadActor, type: "resume" }, () => {
    56       ok(true, "Pause wasn't called before we've attached.");
    57       deferred.resolve([aGrip, aResponse]);
    58     });
    59   });
    61   return deferred.promise;
    62 }
    64 function testDebuggerStatement([aGrip, aResponse]) {
    65   let deferred = promise.defer();
    67   gClient.addListener("paused", (aEvent, aPacket) => {
    68     gClient.request({ to: aResponse.threadActor, type: "resume" }, () => {
    69       ok(true, "The pause handler was triggered on a debugger statement.");
    70       deferred.resolve();
    71     });
    72   });
    74   // Reach around the debugging protocol and execute the debugger statement.
    75   let debuggee = gBrowser.selectedTab.linkedBrowser.contentWindow.wrappedJSObject;
    76   debuggee.runDebuggerStatement();
    77 }
    79 function closeConnection() {
    80   let deferred = promise.defer();
    81   gClient.close(deferred.resolve);
    82   return deferred.promise;
    83 }
    85 registerCleanupFunction(function() {
    86   removeTab(gBrowser.selectedTab);
    87   gClient = null;
    88 });

mercurial