tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_objectgrips-property-value-03.js (1621B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 Services.prefs.setBoolPref("security.allow_eval_with_system_principal", true);
      7 registerCleanupFunction(() => {
      8  Services.prefs.clearUserPref("security.allow_eval_with_system_principal");
      9 });
     10 
     11 add_task(
     12  threadFrontTest(async ({ threadFront, debuggee }) => {
     13    const packet = await executeOnNextTickAndWaitForPause(
     14      () => evalCode(debuggee),
     15      threadFront
     16    );
     17 
     18    const { frame } = packet;
     19    try {
     20      const grips = frame.arguments;
     21      const objClient = threadFront.pauseGrip(grips[0]);
     22      const classes = [
     23        "Object",
     24        "Object",
     25        "Array",
     26        "Boolean",
     27        "Number",
     28        "String",
     29      ];
     30      for (const [i, grip] of grips.entries()) {
     31        Assert.equal(grip.class, classes[i]);
     32        await check_getter(objClient, grip.actor, i);
     33      }
     34      await check_getter(objClient, null, 0);
     35      await check_getter(objClient, "invalid receiver actorId", 0);
     36    } finally {
     37      await threadFront.resume();
     38    }
     39  })
     40 );
     41 
     42 function evalCode(debuggee) {
     43  debuggee.eval(
     44    function stopMe() {
     45      debugger;
     46    }.toString()
     47  );
     48 
     49  debuggee.eval(`
     50    var obj = {
     51      get getter() {
     52        return objects.indexOf(this);
     53      },
     54    };
     55    var objects = [obj, {}, [], new Boolean(), new Number(), new String()];
     56    stopMe(...objects);
     57  `);
     58 }
     59 
     60 async function check_getter(objClient, receiverId, expected) {
     61  const { value } = await objClient.getPropertyValue("getter", receiverId);
     62  Assert.equal(value.return, expected);
     63 }