browser/devtools/debugger/test/browser_dbg_variables-view-frame-parameters-02.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  * Make sure that the variables view displays the right variables and
     6  * properties when debugger is paused.
     7  */
     9 const TAB_URL = EXAMPLE_URL + "doc_frame-parameters.html";
    11 let gTab, gDebuggee, gPanel, gDebugger;
    12 let gVariables;
    14 function test() {
    15   // Debug test slaves are a bit slow at this test.
    16   requestLongerTimeout(2);
    18   initDebugger(TAB_URL).then(([aTab, aDebuggee, aPanel]) => {
    19     gTab = aTab;
    20     gDebuggee = aDebuggee;
    21     gPanel = aPanel;
    22     gDebugger = gPanel.panelWin;
    23     gVariables = gDebugger.DebuggerView.Variables;
    25     waitForSourceAndCaretAndScopes(gPanel, ".html", 24)
    26       .then(testScopeVariables)
    27       .then(testArgumentsProperties)
    28       .then(testSimpleObject)
    29       .then(testComplexObject)
    30       .then(testArgumentObject)
    31       .then(testInnerArgumentObject)
    32       .then(testGetterSetterObject)
    33       .then(() => resumeDebuggerThenCloseAndFinish(gPanel))
    34       .then(null, aError => {
    35         ok(false, "Got an error: " + aError.message + "\n" + aError.stack);
    36       });
    38     EventUtils.sendMouseEvent({ type: "click" },
    39       gDebuggee.document.querySelector("button"),
    40       gDebuggee);
    41   });
    42 }
    44 function testScopeVariables() {
    45   let localScope = gVariables.getScopeAtIndex(0);
    46   is(localScope.expanded, true,
    47     "The local scope should be expanded by default.");
    49   let localEnums = localScope.target.querySelector(".variables-view-element-details.enum").childNodes;
    50   let localNonEnums = localScope.target.querySelector(".variables-view-element-details.nonenum").childNodes;
    52   is(localEnums.length, 12,
    53     "The local scope should contain all the created enumerable elements.");
    54   is(localNonEnums.length, 0,
    55     "The local scope should contain all the created non-enumerable elements.");
    57   is(localEnums[0].querySelector(".name").getAttribute("value"), "this",
    58     "Should have the right property name for 'this'.");
    59   is(localEnums[0].querySelector(".value").getAttribute("value"),
    60     "Window \u2192 doc_frame-parameters.html",
    61     "Should have the right property value for 'this'.");
    62   ok(localEnums[0].querySelector(".value").className.contains("token-other"),
    63     "Should have the right token class for 'this'.");
    65   is(localEnums[1].querySelector(".name").getAttribute("value"), "aArg",
    66     "Should have the right property name for 'aArg'.");
    67   is(localEnums[1].querySelector(".value").getAttribute("value"), "Object",
    68     "Should have the right property value for 'aArg'.");
    69   ok(localEnums[1].querySelector(".value").className.contains("token-other"),
    70     "Should have the right token class for 'aArg'.");
    72   is(localEnums[2].querySelector(".name").getAttribute("value"), "bArg",
    73     "Should have the right property name for 'bArg'.");
    74   is(localEnums[2].querySelector(".value").getAttribute("value"), "\"beta\"",
    75     "Should have the right property value for 'bArg'.");
    76   ok(localEnums[2].querySelector(".value").className.contains("token-string"),
    77     "Should have the right token class for 'bArg'.");
    79   is(localEnums[3].querySelector(".name").getAttribute("value"), "cArg",
    80     "Should have the right property name for 'cArg'.");
    81   is(localEnums[3].querySelector(".value").getAttribute("value"), "3",
    82     "Should have the right property value for 'cArg'.");
    83   ok(localEnums[3].querySelector(".value").className.contains("token-number"),
    84     "Should have the right token class for 'cArg'.");
    86   is(localEnums[4].querySelector(".name").getAttribute("value"), "dArg",
    87     "Should have the right property name for 'dArg'.");
    88   is(localEnums[4].querySelector(".value").getAttribute("value"), "false",
    89     "Should have the right property value for 'dArg'.");
    90   ok(localEnums[4].querySelector(".value").className.contains("token-boolean"),
    91     "Should have the right token class for 'dArg'.");
    93   is(localEnums[5].querySelector(".name").getAttribute("value"), "eArg",
    94     "Should have the right property name for 'eArg'.");
    95   is(localEnums[5].querySelector(".value").getAttribute("value"), "null",
    96     "Should have the right property value for 'eArg'.");
    97   ok(localEnums[5].querySelector(".value").className.contains("token-null"),
    98     "Should have the right token class for 'eArg'.");
   100   is(localEnums[6].querySelector(".name").getAttribute("value"), "fArg",
   101     "Should have the right property name for 'fArg'.");
   102   is(localEnums[6].querySelector(".value").getAttribute("value"), "undefined",
   103     "Should have the right property value for 'fArg'.");
   104   ok(localEnums[6].querySelector(".value").className.contains("token-undefined"),
   105     "Should have the right token class for 'fArg'.");
   107   is(localEnums[7].querySelector(".name").getAttribute("value"), "a",
   108    "Should have the right property name for 'a'.");
   109   is(localEnums[7].querySelector(".value").getAttribute("value"), "1",
   110    "Should have the right property value for 'a'.");
   111   ok(localEnums[7].querySelector(".value").className.contains("token-number"),
   112    "Should have the right token class for 'a'.");
   114   is(localEnums[8].querySelector(".name").getAttribute("value"), "arguments",
   115     "Should have the right property name for 'arguments'.");
   116   is(localEnums[8].querySelector(".value").getAttribute("value"), "Arguments",
   117     "Should have the right property value for 'arguments'.");
   118   ok(localEnums[8].querySelector(".value").className.contains("token-other"),
   119     "Should have the right token class for 'arguments'.");
   121   is(localEnums[9].querySelector(".name").getAttribute("value"), "b",
   122    "Should have the right property name for 'b'.");
   123   is(localEnums[9].querySelector(".value").getAttribute("value"), "Object",
   124    "Should have the right property value for 'b'.");
   125   ok(localEnums[9].querySelector(".value").className.contains("token-other"),
   126    "Should have the right token class for 'b'.");
   128   is(localEnums[10].querySelector(".name").getAttribute("value"), "c",
   129    "Should have the right property name for 'c'.");
   130   is(localEnums[10].querySelector(".value").getAttribute("value"), "Object",
   131    "Should have the right property value for 'c'.");
   132   ok(localEnums[10].querySelector(".value").className.contains("token-other"),
   133    "Should have the right token class for 'c'.");
   135   is(localEnums[11].querySelector(".name").getAttribute("value"), "myVar",
   136    "Should have the right property name for 'myVar'.");
   137   is(localEnums[11].querySelector(".value").getAttribute("value"), "Object",
   138    "Should have the right property value for 'myVar'.");
   139   ok(localEnums[11].querySelector(".value").className.contains("token-other"),
   140    "Should have the right token class for 'myVar'.");
   141 }
   143 function testArgumentsProperties() {
   144   let deferred = promise.defer();
   146   let argsVar = gVariables.getScopeAtIndex(0).get("arguments");
   147   is(argsVar.expanded, false,
   148     "The 'arguments' variable should not be expanded by default.");
   150   let argsEnums = argsVar.target.querySelector(".variables-view-element-details.enum").childNodes;
   151   let argsNonEnums = argsVar.target.querySelector(".variables-view-element-details.nonenum").childNodes;
   153   gDebugger.once(gDebugger.EVENTS.FETCHED_PROPERTIES, () => {
   154     is(argsEnums.length, 5,
   155       "The 'arguments' variable should contain all the created enumerable elements.");
   156     is(argsNonEnums.length, 3,
   157       "The 'arguments' variable should contain all the created non-enumerable elements.");
   159     is(argsEnums[0].querySelector(".name").getAttribute("value"), "0",
   160       "Should have the right property name for '0'.");
   161     is(argsEnums[0].querySelector(".value").getAttribute("value"), "Object",
   162       "Should have the right property value for '0'.");
   163     ok(argsEnums[0].querySelector(".value").className.contains("token-other"),
   164       "Should have the right token class for '0'.");
   166     is(argsEnums[1].querySelector(".name").getAttribute("value"), "1",
   167       "Should have the right property name for '1'.");
   168     is(argsEnums[1].querySelector(".value").getAttribute("value"), "\"beta\"",
   169       "Should have the right property value for '1'.");
   170     ok(argsEnums[1].querySelector(".value").className.contains("token-string"),
   171       "Should have the right token class for '1'.");
   173     is(argsEnums[2].querySelector(".name").getAttribute("value"), "2",
   174       "Should have the right property name for '2'.");
   175     is(argsEnums[2].querySelector(".value").getAttribute("value"), "3",
   176       "Should have the right property name for '2'.");
   177     ok(argsEnums[2].querySelector(".value").className.contains("token-number"),
   178       "Should have the right token class for '2'.");
   180     is(argsEnums[3].querySelector(".name").getAttribute("value"), "3",
   181       "Should have the right property name for '3'.");
   182     is(argsEnums[3].querySelector(".value").getAttribute("value"), "false",
   183       "Should have the right property value for '3'.");
   184     ok(argsEnums[3].querySelector(".value").className.contains("token-boolean"),
   185       "Should have the right token class for '3'.");
   187     is(argsEnums[4].querySelector(".name").getAttribute("value"), "4",
   188       "Should have the right property name for '4'.");
   189     is(argsEnums[4].querySelector(".value").getAttribute("value"), "null",
   190       "Should have the right property name for '4'.");
   191     ok(argsEnums[4].querySelector(".value").className.contains("token-null"),
   192       "Should have the right token class for '4'.");
   194     is(argsNonEnums[0].querySelector(".name").getAttribute("value"), "callee",
   195      "Should have the right property name for 'callee'.");
   196     is(argsNonEnums[0].querySelector(".value").getAttribute("value"),
   197      "test(aArg,bArg,cArg,dArg,eArg,fArg)",
   198      "Should have the right property name for 'callee'.");
   199     ok(argsNonEnums[0].querySelector(".value").className.contains("token-other"),
   200      "Should have the right token class for 'callee'.");
   202     is(argsNonEnums[1].querySelector(".name").getAttribute("value"), "length",
   203       "Should have the right property name for 'length'.");
   204     is(argsNonEnums[1].querySelector(".value").getAttribute("value"), "5",
   205       "Should have the right property value for 'length'.");
   206     ok(argsNonEnums[1].querySelector(".value").className.contains("token-number"),
   207       "Should have the right token class for 'length'.");
   209     is(argsNonEnums[2].querySelector(".name").getAttribute("value"), "__proto__",
   210      "Should have the right property name for '__proto__'.");
   211     is(argsNonEnums[2].querySelector(".value").getAttribute("value"), "Object",
   212      "Should have the right property value for '__proto__'.");
   213     ok(argsNonEnums[2].querySelector(".value").className.contains("token-other"),
   214      "Should have the right token class for '__proto__'.");
   216     deferred.resolve();
   217   });
   219   argsVar.expand();
   220   return deferred.promise;
   221 }
   223 function testSimpleObject() {
   224   let deferred = promise.defer();
   226   let bVar = gVariables.getScopeAtIndex(0).get("b");
   227   is(bVar.expanded, false,
   228     "The 'b' variable should not be expanded by default.");
   230   let bEnums = bVar.target.querySelector(".variables-view-element-details.enum").childNodes;
   231   let bNonEnums = bVar.target.querySelector(".variables-view-element-details.nonenum").childNodes;
   233   gDebugger.once(gDebugger.EVENTS.FETCHED_PROPERTIES, () => {
   234     is(bEnums.length, 1,
   235       "The 'b' variable should contain all the created enumerable elements.");
   236     is(bNonEnums.length, 1,
   237       "The 'b' variable should contain all the created non-enumerable elements.");
   239     is(bEnums[0].querySelector(".name").getAttribute("value"), "a",
   240       "Should have the right property name for 'a'.");
   241     is(bEnums[0].querySelector(".value").getAttribute("value"), "1",
   242       "Should have the right property value for 'a'.");
   243     ok(bEnums[0].querySelector(".value").className.contains("token-number"),
   244       "Should have the right token class for 'a'.");
   246     is(bNonEnums[0].querySelector(".name").getAttribute("value"), "__proto__",
   247      "Should have the right property name for '__proto__'.");
   248     is(bNonEnums[0].querySelector(".value").getAttribute("value"), "Object",
   249      "Should have the right property value for '__proto__'.");
   250     ok(bNonEnums[0].querySelector(".value").className.contains("token-other"),
   251      "Should have the right token class for '__proto__'.");
   253     deferred.resolve();
   254   });
   256   bVar.expand();
   257   return deferred.promise;
   258 }
   260 function testComplexObject() {
   261   let deferred = promise.defer();
   263   let cVar = gVariables.getScopeAtIndex(0).get("c");
   264   is(cVar.expanded, false,
   265     "The 'c' variable should not be expanded by default.");
   267   let cEnums = cVar.target.querySelector(".variables-view-element-details.enum").childNodes;
   268   let cNonEnums = cVar.target.querySelector(".variables-view-element-details.nonenum").childNodes;
   270   gDebugger.once(gDebugger.EVENTS.FETCHED_PROPERTIES, () => {
   271     is(cEnums.length, 6,
   272       "The 'c' variable should contain all the created enumerable elements.");
   273     is(cNonEnums.length, 1,
   274       "The 'c' variable should contain all the created non-enumerable elements.");
   276     is(cEnums[0].querySelector(".name").getAttribute("value"), "a",
   277       "Should have the right property name for 'a'.");
   278     is(cEnums[0].querySelector(".value").getAttribute("value"), "1",
   279       "Should have the right property value for 'a'.");
   280     ok(cEnums[0].querySelector(".value").className.contains("token-number"),
   281       "Should have the right token class for 'a'.");
   283     is(cEnums[1].querySelector(".name").getAttribute("value"), "b",
   284       "Should have the right property name for 'b'.");
   285     is(cEnums[1].querySelector(".value").getAttribute("value"), "\"beta\"",
   286       "Should have the right property value for 'b'.");
   287     ok(cEnums[1].querySelector(".value").className.contains("token-string"),
   288       "Should have the right token class for 'b'.");
   290     is(cEnums[2].querySelector(".name").getAttribute("value"), "c",
   291       "Should have the right property name for 'c'.");
   292     is(cEnums[2].querySelector(".value").getAttribute("value"), "3",
   293       "Should have the right property value for 'c'.");
   294     ok(cEnums[2].querySelector(".value").className.contains("token-number"),
   295       "Should have the right token class for 'c'.");
   297     is(cEnums[3].querySelector(".name").getAttribute("value"), "d",
   298       "Should have the right property name for 'd'.");
   299     is(cEnums[3].querySelector(".value").getAttribute("value"), "false",
   300       "Should have the right property value for 'd'.");
   301     ok(cEnums[3].querySelector(".value").className.contains("token-boolean"),
   302       "Should have the right token class for 'd'.");
   304     is(cEnums[4].querySelector(".name").getAttribute("value"), "e",
   305       "Should have the right property name for 'e'.");
   306     is(cEnums[4].querySelector(".value").getAttribute("value"), "null",
   307       "Should have the right property value for 'e'.");
   308     ok(cEnums[4].querySelector(".value").className.contains("token-null"),
   309       "Should have the right token class for 'e'.");
   311     is(cEnums[5].querySelector(".name").getAttribute("value"), "f",
   312       "Should have the right property name for 'f'.");
   313     is(cEnums[5].querySelector(".value").getAttribute("value"), "undefined",
   314       "Should have the right property value for 'f'.");
   315     ok(cEnums[5].querySelector(".value").className.contains("token-undefined"),
   316       "Should have the right token class for 'f'.");
   318     is(cNonEnums[0].querySelector(".name").getAttribute("value"), "__proto__",
   319      "Should have the right property name for '__proto__'.");
   320     is(cNonEnums[0].querySelector(".value").getAttribute("value"), "Object",
   321      "Should have the right property value for '__proto__'.");
   322     ok(cNonEnums[0].querySelector(".value").className.contains("token-other"),
   323      "Should have the right token class for '__proto__'.");
   325     deferred.resolve();
   326   });
   328   cVar.expand();
   329   return deferred.promise;
   330 }
   332 function testArgumentObject() {
   333   let deferred = promise.defer();
   335   let argVar = gVariables.getScopeAtIndex(0).get("aArg");
   336   is(argVar.expanded, false,
   337     "The 'aArg' variable should not be expanded by default.");
   339   let argEnums = argVar.target.querySelector(".variables-view-element-details.enum").childNodes;
   340   let argNonEnums = argVar.target.querySelector(".variables-view-element-details.nonenum").childNodes;
   342   gDebugger.once(gDebugger.EVENTS.FETCHED_PROPERTIES, () => {
   343     is(argEnums.length, 6,
   344       "The 'aArg' variable should contain all the created enumerable elements.");
   345     is(argNonEnums.length, 1,
   346       "The 'aArg' variable should contain all the created non-enumerable elements.");
   348     is(argEnums[0].querySelector(".name").getAttribute("value"), "a",
   349       "Should have the right property name for 'a'.");
   350     is(argEnums[0].querySelector(".value").getAttribute("value"), "1",
   351       "Should have the right property value for 'a'.");
   352     ok(argEnums[0].querySelector(".value").className.contains("token-number"),
   353       "Should have the right token class for 'a'.");
   355     is(argEnums[1].querySelector(".name").getAttribute("value"), "b",
   356       "Should have the right property name for 'b'.");
   357     is(argEnums[1].querySelector(".value").getAttribute("value"), "\"beta\"",
   358       "Should have the right property value for 'b'.");
   359     ok(argEnums[1].querySelector(".value").className.contains("token-string"),
   360       "Should have the right token class for 'b'.");
   362     is(argEnums[2].querySelector(".name").getAttribute("value"), "c",
   363       "Should have the right property name for 'c'.");
   364     is(argEnums[2].querySelector(".value").getAttribute("value"), "3",
   365       "Should have the right property value for 'c'.");
   366     ok(argEnums[2].querySelector(".value").className.contains("token-number"),
   367       "Should have the right token class for 'c'.");
   369     is(argEnums[3].querySelector(".name").getAttribute("value"), "d",
   370       "Should have the right property name for 'd'.");
   371     is(argEnums[3].querySelector(".value").getAttribute("value"), "false",
   372       "Should have the right property value for 'd'.");
   373     ok(argEnums[3].querySelector(".value").className.contains("token-boolean"),
   374       "Should have the right token class for 'd'.");
   376     is(argEnums[4].querySelector(".name").getAttribute("value"), "e",
   377       "Should have the right property name for 'e'.");
   378     is(argEnums[4].querySelector(".value").getAttribute("value"), "null",
   379       "Should have the right property value for 'e'.");
   380     ok(argEnums[4].querySelector(".value").className.contains("token-null"),
   381       "Should have the right token class for 'e'.");
   383     is(argEnums[5].querySelector(".name").getAttribute("value"), "f",
   384       "Should have the right property name for 'f'.");
   385     is(argEnums[5].querySelector(".value").getAttribute("value"), "undefined",
   386       "Should have the right property value for 'f'.");
   387     ok(argEnums[5].querySelector(".value").className.contains("token-undefined"),
   388       "Should have the right token class for 'f'.");
   390     is(argNonEnums[0].querySelector(".name").getAttribute("value"), "__proto__",
   391      "Should have the right property name for '__proto__'.");
   392     is(argNonEnums[0].querySelector(".value").getAttribute("value"), "Object",
   393      "Should have the right property value for '__proto__'.");
   394     ok(argNonEnums[0].querySelector(".value").className.contains("token-other"),
   395      "Should have the right token class for '__proto__'.");
   397     deferred.resolve();
   398   });
   400   argVar.expand();
   401   return deferred.promise;
   402 }
   404 function testInnerArgumentObject() {
   405   let deferred = promise.defer();
   407   let argProp = gVariables.getScopeAtIndex(0).get("arguments").get("0");
   408   is(argProp.expanded, false,
   409     "The 'arguments[0]' property should not be expanded by default.");
   411   let argEnums = argProp.target.querySelector(".variables-view-element-details.enum").childNodes;
   412   let argNonEnums = argProp.target.querySelector(".variables-view-element-details.nonenum").childNodes;
   414   gDebugger.once(gDebugger.EVENTS.FETCHED_PROPERTIES, () => {
   415     is(argEnums.length, 6,
   416       "The 'arguments[0]' property should contain all the created enumerable elements.");
   417     is(argNonEnums.length, 1,
   418       "The 'arguments[0]' property should contain all the created non-enumerable elements.");
   420     is(argEnums[0].querySelector(".name").getAttribute("value"), "a",
   421       "Should have the right property name for 'a'.");
   422     is(argEnums[0].querySelector(".value").getAttribute("value"), "1",
   423       "Should have the right property value for 'a'.");
   424     ok(argEnums[0].querySelector(".value").className.contains("token-number"),
   425       "Should have the right token class for 'a'.");
   427     is(argEnums[1].querySelector(".name").getAttribute("value"), "b",
   428       "Should have the right property name for 'b'.");
   429     is(argEnums[1].querySelector(".value").getAttribute("value"), "\"beta\"",
   430       "Should have the right property value for 'b'.");
   431     ok(argEnums[1].querySelector(".value").className.contains("token-string"),
   432       "Should have the right token class for 'b'.");
   434     is(argEnums[2].querySelector(".name").getAttribute("value"), "c",
   435       "Should have the right property name for 'c'.");
   436     is(argEnums[2].querySelector(".value").getAttribute("value"), "3",
   437       "Should have the right property value for 'c'.");
   438     ok(argEnums[2].querySelector(".value").className.contains("token-number"),
   439       "Should have the right token class for 'c'.");
   441     is(argEnums[3].querySelector(".name").getAttribute("value"), "d",
   442       "Should have the right property name for 'd'.");
   443     is(argEnums[3].querySelector(".value").getAttribute("value"), "false",
   444       "Should have the right property value for 'd'.");
   445     ok(argEnums[3].querySelector(".value").className.contains("token-boolean"),
   446       "Should have the right token class for 'd'.");
   448     is(argEnums[4].querySelector(".name").getAttribute("value"), "e",
   449       "Should have the right property name for 'e'.");
   450     is(argEnums[4].querySelector(".value").getAttribute("value"), "null",
   451       "Should have the right property value for 'e'.");
   452     ok(argEnums[4].querySelector(".value").className.contains("token-null"),
   453       "Should have the right token class for 'e'.");
   455     is(argEnums[5].querySelector(".name").getAttribute("value"), "f",
   456       "Should have the right property name for 'f'.");
   457     is(argEnums[5].querySelector(".value").getAttribute("value"), "undefined",
   458       "Should have the right property value for 'f'.");
   459     ok(argEnums[5].querySelector(".value").className.contains("token-undefined"),
   460       "Should have the right token class for 'f'.");
   462     is(argNonEnums[0].querySelector(".name").getAttribute("value"), "__proto__",
   463      "Should have the right property name for '__proto__'.");
   464     is(argNonEnums[0].querySelector(".value").getAttribute("value"), "Object",
   465      "Should have the right property value for '__proto__'.");
   466     ok(argNonEnums[0].querySelector(".value").className.contains("token-other"),
   467      "Should have the right token class for '__proto__'.");
   469     deferred.resolve();
   470   });
   472   argProp.expand();
   473   return deferred.promise;
   474 }
   476 function testGetterSetterObject() {
   477   let deferred = promise.defer();
   479   let myVar = gVariables.getScopeAtIndex(0).get("myVar");
   480   is(myVar.expanded, false,
   481     "The myVar variable should not be expanded by default.");
   483   let myVarEnums = myVar.target.querySelector(".variables-view-element-details.enum").childNodes;
   484   let myVarNonEnums = myVar.target.querySelector(".variables-view-element-details.nonenum").childNodes;
   486   gDebugger.once(gDebugger.EVENTS.FETCHED_PROPERTIES, () => {
   487     is(myVarEnums.length, 2,
   488       "The myVar should contain all the created enumerable elements.");
   489     is(myVarNonEnums.length, 1,
   490       "The myVar should contain all the created non-enumerable elements.");
   492     is(myVarEnums[0].querySelector(".name").getAttribute("value"), "_prop",
   493       "Should have the right property name for '_prop'.");
   494     is(myVarEnums[0].querySelector(".value").getAttribute("value"), "42",
   495       "Should have the right property value for '_prop'.");
   496     ok(myVarEnums[0].querySelector(".value").className.contains("token-number"),
   497       "Should have the right token class for '_prop'.");
   499     is(myVarEnums[1].querySelector(".name").getAttribute("value"), "prop",
   500       "Should have the right property name for 'prop'.");
   501     is(myVarEnums[1].querySelector(".value").getAttribute("value"), "",
   502       "Should have the right property value for 'prop'.");
   503     ok(!myVarEnums[1].querySelector(".value").className.contains("token"),
   504       "Should have no token class for 'prop'.");
   506     is(myVarNonEnums[0].querySelector(".name").getAttribute("value"), "__proto__",
   507      "Should have the right property name for '__proto__'.");
   508     is(myVarNonEnums[0].querySelector(".value").getAttribute("value"), "Object",
   509      "Should have the right property value for '__proto__'.");
   510     ok(myVarNonEnums[0].querySelector(".value").className.contains("token-other"),
   511      "Should have the right token class for '__proto__'.");
   513     let propEnums = myVarEnums[1].querySelector(".variables-view-element-details.enum").childNodes;
   514     let propNonEnums = myVarEnums[1].querySelector(".variables-view-element-details.nonenum").childNodes;
   516     is(propEnums.length, 0,
   517       "The propEnums should contain all the created enumerable elements.");
   518     is(propNonEnums.length, 2,
   519       "The propEnums should contain all the created non-enumerable elements.");
   521     is(propNonEnums[0].querySelector(".name").getAttribute("value"), "get",
   522       "Should have the right property name for 'get'.");
   523     is(propNonEnums[0].querySelector(".value").getAttribute("value"),
   524       "test/myVar.prop()",
   525       "Should have the right property value for 'get'.");
   526     ok(propNonEnums[0].querySelector(".value").className.contains("token-other"),
   527       "Should have the right token class for 'get'.");
   529     is(propNonEnums[1].querySelector(".name").getAttribute("value"), "set",
   530       "Should have the right property name for 'set'.");
   531     is(propNonEnums[1].querySelector(".value").getAttribute("value"),
   532       "test/myVar.prop(val)",
   533       "Should have the right property value for 'set'.");
   534     ok(propNonEnums[1].querySelector(".value").className.contains("token-other"),
   535       "Should have the right token class for 'set'.");
   537     deferred.resolve();
   538   });
   540   myVar.expand();
   541   return deferred.promise;
   542 }
   544 registerCleanupFunction(function() {
   545   gTab = null;
   546   gDebuggee = null;
   547   gPanel = null;
   548   gDebugger = null;
   549   gVariables = null;
   550 });

mercurial