toolkit/devtools/server/tests/unit/test_dbgactor.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 Cu.import("resource://gre/modules/devtools/dbg-server.jsm");
     5 Cu.import("resource://gre/modules/devtools/dbg-client.jsm");
     7 var gClient;
     8 var gDebuggee;
    10 const xpcInspector = Cc["@mozilla.org/jsinspector;1"].getService(Ci.nsIJSInspector);
    12 function run_test()
    13 {
    14   initTestDebuggerServer();
    15   gDebuggee = testGlobal("test-1");
    16   DebuggerServer.addTestGlobal(gDebuggee);
    18   let transport = DebuggerServer.connectPipe();
    19   gClient = new DebuggerClient(transport);
    20   gClient.addListener("connected", function(aEvent, aType, aTraits) {
    21     gClient.listTabs((aResponse) => {
    22       do_check_true('tabs' in aResponse);
    23       for (let tab of aResponse.tabs) {
    24         if (tab.title == "test-1") {
    25           test_attach_tab(tab.actor);
    26           return false;
    27         }
    28       }
    29       do_check_true(false); // We should have found our tab in the list.
    30       return undefined;
    31     });
    32   });
    34   gClient.connect();
    36   do_test_pending();
    37 }
    39 // Attach to |aTabActor|, and check the response.
    40 function test_attach_tab(aTabActor)
    41 {
    42   gClient.request({ to: aTabActor, type: "attach" }, function(aResponse) {
    43     do_check_false("error" in aResponse);
    44     do_check_eq(aResponse.from, aTabActor);
    45     do_check_eq(aResponse.type, "tabAttached");
    46     do_check_true(typeof aResponse.threadActor === "string");
    48     test_attach_thread(aResponse.threadActor);
    49   });
    50 }
    52 // Attach to |aThreadActor|, check the response, and resume it.
    53 function test_attach_thread(aThreadActor)
    54 {
    55   gClient.request({ to: aThreadActor, type: "attach" }, function(aResponse) {
    56     do_check_false("error" in aResponse);
    57     do_check_eq(aResponse.from, aThreadActor);
    58     do_check_eq(aResponse.type, "paused");
    59     do_check_true("why" in aResponse);
    60     do_check_eq(aResponse.why.type, "attached");
    62     test_resume_thread(aThreadActor);
    63   });
    64 }
    66 // Resume |aThreadActor|, and see that it stops at the 'debugger'
    67 // statement.
    68 function test_resume_thread(aThreadActor)
    69 {
    70   // Allow the client to resume execution.
    71   gClient.request({ to: aThreadActor, type: "resume" }, function (aResponse) {
    72     do_check_false("error" in aResponse);
    73     do_check_eq(aResponse.from, aThreadActor);
    74     do_check_eq(aResponse.type, "resumed");
    76     do_check_eq(xpcInspector.eventLoopNestLevel, 0);
    78     // Now that we know we're resumed, we can make the debuggee do something.
    79     Cu.evalInSandbox("var a = true; var b = false; debugger; var b = true;", gDebuggee);
    80     // Now make sure that we've run the code after the debugger statement...
    81     do_check_true(gDebuggee.b);
    82   });
    84   gClient.addListener("paused", function(aName, aPacket) {
    85     do_check_eq(aName, "paused");
    86     do_check_false("error" in aPacket);
    87     do_check_eq(aPacket.from, aThreadActor);
    88     do_check_eq(aPacket.type, "paused");
    89     do_check_true("actor" in aPacket);
    90     do_check_true("why" in aPacket)
    91     do_check_eq(aPacket.why.type, "debuggerStatement");
    93     // Reach around the protocol to check that the debuggee is in the state
    94     // we expect.
    95     do_check_true(gDebuggee.a);
    96     do_check_false(gDebuggee.b);
    98     do_check_eq(xpcInspector.eventLoopNestLevel, 1);
   100     // Let the debuggee continue execution.
   101     gClient.request({ to: aThreadActor, type: "resume" }, cleanup);
   102   });
   103 }
   105 function cleanup()
   106 {
   107   gClient.addListener("closed", function(aEvent, aResult) {
   108     do_test_finished();
   109   });
   111   try {
   112     let xpcInspector = Cc["@mozilla.org/jsinspector;1"].getService(Ci.nsIJSInspector);
   113     do_check_eq(xpcInspector.eventLoopNestLevel, 0);
   114   } catch(e) {
   115     dump(e);
   116   }
   118   gClient.close();
   119 }

mercurial