browser_dbg_variables-view-05.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
  2. /* Any copyright is dedicated to the Public Domain.
  3. * http://creativecommons.org/publicdomain/zero/1.0/ */
  4. /**
  5. * Tests that grips are correctly applied to variables and properties.
  6. */
  7. const TAB_URL = EXAMPLE_URL + "doc_recursion-stack.html";
  8. function test() {
  9. let options = {
  10. source: TAB_URL,
  11. line: 1
  12. };
  13. initDebugger(TAB_URL, options).then(([aTab,, aPanel]) => {
  14. let variables = aPanel.panelWin.DebuggerView.Variables;
  15. let globalScope = variables.addScope("Test-Global");
  16. let localScope = variables.addScope("Test-Local");
  17. ok(globalScope, "The globalScope hasn't been created correctly.");
  18. ok(localScope, "The localScope hasn't been created correctly.");
  19. is(globalScope.target.querySelector(".separator"), null,
  20. "No separator string should be created for scopes (1).");
  21. is(localScope.target.querySelector(".separator"), null,
  22. "No separator string should be created for scopes (2).");
  23. let windowVar = globalScope.addItem("window");
  24. let documentVar = globalScope.addItem("document");
  25. ok(windowVar, "The windowVar hasn't been created correctly.");
  26. ok(documentVar, "The documentVar hasn't been created correctly.");
  27. ok(windowVar.target.querySelector(".separator").hidden,
  28. "No separator string should be shown for variables without a grip (1).");
  29. ok(documentVar.target.querySelector(".separator").hidden,
  30. "No separator string should be shown for variables without a grip (2).");
  31. windowVar.setGrip({ type: "object", class: "Window" });
  32. documentVar.setGrip({ type: "object", class: "HTMLDocument" });
  33. is(windowVar.target.querySelector(".separator").hidden, false,
  34. "A separator string should now be shown after setting the grip (1).");
  35. is(documentVar.target.querySelector(".separator").hidden, false,
  36. "A separator string should now be shown after setting the grip (2).");
  37. is(windowVar.target.querySelector(".separator").getAttribute("value"), ": ",
  38. "The separator string label is correct (1).");
  39. is(documentVar.target.querySelector(".separator").getAttribute("value"), ": ",
  40. "The separator string label is correct (2).");
  41. let localVar0 = localScope.addItem("localVar0");
  42. let localVar1 = localScope.addItem("localVar1");
  43. let localVar2 = localScope.addItem("localVar2");
  44. let localVar3 = localScope.addItem("localVar3");
  45. let localVar4 = localScope.addItem("localVar4");
  46. let localVar5 = localScope.addItem("localVar5");
  47. let localVar6 = localScope.addItem("localVar6");
  48. let localVar7 = localScope.addItem("localVar7");
  49. let localVar8 = localScope.addItem("localVar8");
  50. let localVar9 = localScope.addItem("localVar9");
  51. ok(localVar0, "The localVar0 hasn't been created correctly.");
  52. ok(localVar1, "The localVar1 hasn't been created correctly.");
  53. ok(localVar2, "The localVar2 hasn't been created correctly.");
  54. ok(localVar3, "The localVar3 hasn't been created correctly.");
  55. ok(localVar4, "The localVar4 hasn't been created correctly.");
  56. ok(localVar5, "The localVar5 hasn't been created correctly.");
  57. ok(localVar6, "The localVar6 hasn't been created correctly.");
  58. ok(localVar7, "The localVar7 hasn't been created correctly.");
  59. ok(localVar8, "The localVar8 hasn't been created correctly.");
  60. ok(localVar9, "The localVar9 hasn't been created correctly.");
  61. localVar0.setGrip(42);
  62. localVar1.setGrip(true);
  63. localVar2.setGrip("nasu");
  64. localVar3.setGrip({ type: "undefined" });
  65. localVar4.setGrip({ type: "null" });
  66. localVar5.setGrip({ type: "object", class: "Object" });
  67. localVar6.setGrip({ type: "Infinity" });
  68. localVar7.setGrip({ type: "-Infinity" });
  69. localVar8.setGrip({ type: "NaN" });
  70. localVar9.setGrip({ type: "-0" });
  71. localVar5.addItems({
  72. someProp0: { value: 42, enumerable: true },
  73. someProp1: { value: true, enumerable: true },
  74. someProp2: { value: "nasu", enumerable: true },
  75. someProp3: { value: { type: "undefined" }, enumerable: true },
  76. someProp4: { value: { type: "null" }, enumerable: true },
  77. someProp5: { value: { type: "object", class: "Object" }, enumerable: true },
  78. someProp6: { value: { type: "Infinity" }, enumerable: true },
  79. someProp7: { value: { type: "-Infinity" }, enumerable: true },
  80. someProp8: { value: { type: "NaN" }, enumerable: true },
  81. someProp9: { value: { type: "-0" }, enumerable: true },
  82. someUndefined: {
  83. get: { type: "undefined" },
  84. set: { type: "undefined" },
  85. enumerable: true
  86. },
  87. someAccessor: {
  88. get: { type: "object", class: "Function" },
  89. set: { type: "undefined" },
  90. enumerable: true
  91. }
  92. });
  93. localVar5.get("someProp5").addItems({
  94. someProp0: { value: 42, enumerable: true },
  95. someProp1: { value: true, enumerable: true },
  96. someProp2: { value: "nasu", enumerable: true },
  97. someProp3: { value: { type: "undefined" }, enumerable: true },
  98. someProp4: { value: { type: "null" }, enumerable: true },
  99. someProp5: { value: { type: "object", class: "Object" }, enumerable: true },
  100. someProp6: { value: { type: "Infinity" }, enumerable: true },
  101. someProp7: { value: { type: "-Infinity" }, enumerable: true },
  102. someProp8: { value: { type: "NaN" }, enumerable: true },
  103. someProp9: { value: { type: "-0" }, enumerable: true },
  104. someUndefined: {
  105. get: { type: "undefined" },
  106. set: { type: "undefined" },
  107. enumerable: true
  108. },
  109. someAccessor: {
  110. get: { type: "object", class: "Function" },
  111. set: { type: "undefined" },
  112. enumerable: true
  113. }
  114. });
  115. is(globalScope.target.querySelector(".enum").childNodes.length, 0,
  116. "The globalScope doesn't contain all the created enumerable variable elements.");
  117. is(globalScope.target.querySelector(".nonenum").childNodes.length, 2,
  118. "The globalScope doesn't contain all the created non-enumerable variable elements.");
  119. is(localScope.target.querySelector(".enum").childNodes.length, 0,
  120. "The localScope doesn't contain all the created enumerable variable elements.");
  121. is(localScope.target.querySelector(".nonenum").childNodes.length, 10,
  122. "The localScope doesn't contain all the created non-enumerable variable elements.");
  123. is(localVar5.target.querySelector(".enum").childNodes.length, 12,
  124. "The localVar5 doesn't contain all the created enumerable properties.");
  125. is(localVar5.target.querySelector(".nonenum").childNodes.length, 0,
  126. "The localVar5 doesn't contain all the created non-enumerable properties.");
  127. is(localVar5.get("someProp5").target.querySelector(".enum").childNodes.length, 12,
  128. "The localVar5.someProp5 doesn't contain all the created enumerable properties.");
  129. is(localVar5.get("someProp5").target.querySelector(".nonenum").childNodes.length, 0,
  130. "The localVar5.someProp5 doesn't contain all the created non-enumerable properties.");
  131. is(windowVar.target.querySelector(".value").getAttribute("value"), "Window",
  132. "The grip information for the windowVar wasn't set correctly.");
  133. is(documentVar.target.querySelector(".value").getAttribute("value"), "HTMLDocument",
  134. "The grip information for the documentVar wasn't set correctly.");
  135. is(localVar0.target.querySelector(".value").getAttribute("value"), "42",
  136. "The grip information for the localVar0 wasn't set correctly.");
  137. is(localVar1.target.querySelector(".value").getAttribute("value"), "true",
  138. "The grip information for the localVar1 wasn't set correctly.");
  139. is(localVar2.target.querySelector(".value").getAttribute("value"), "\"nasu\"",
  140. "The grip information for the localVar2 wasn't set correctly.");
  141. is(localVar3.target.querySelector(".value").getAttribute("value"), "undefined",
  142. "The grip information for the localVar3 wasn't set correctly.");
  143. is(localVar4.target.querySelector(".value").getAttribute("value"), "null",
  144. "The grip information for the localVar4 wasn't set correctly.");
  145. is(localVar5.target.querySelector(".value").getAttribute("value"), "Object",
  146. "The grip information for the localVar5 wasn't set correctly.");
  147. is(localVar6.target.querySelector(".value").getAttribute("value"), "Infinity",
  148. "The grip information for the localVar6 wasn't set correctly.");
  149. is(localVar7.target.querySelector(".value").getAttribute("value"), "-Infinity",
  150. "The grip information for the localVar7 wasn't set correctly.");
  151. is(localVar8.target.querySelector(".value").getAttribute("value"), "NaN",
  152. "The grip information for the localVar8 wasn't set correctly.");
  153. is(localVar9.target.querySelector(".value").getAttribute("value"), "-0",
  154. "The grip information for the localVar9 wasn't set correctly.");
  155. is(localVar5.get("someProp0").target.querySelector(".value").getAttribute("value"), "42",
  156. "The grip information for the someProp0 wasn't set correctly.");
  157. is(localVar5.get("someProp1").target.querySelector(".value").getAttribute("value"), "true",
  158. "The grip information for the someProp1 wasn't set correctly.");
  159. is(localVar5.get("someProp2").target.querySelector(".value").getAttribute("value"), "\"nasu\"",
  160. "The grip information for the someProp2 wasn't set correctly.");
  161. is(localVar5.get("someProp3").target.querySelector(".value").getAttribute("value"), "undefined",
  162. "The grip information for the someProp3 wasn't set correctly.");
  163. is(localVar5.get("someProp4").target.querySelector(".value").getAttribute("value"), "null",
  164. "The grip information for the someProp4 wasn't set correctly.");
  165. is(localVar5.get("someProp5").target.querySelector(".value").getAttribute("value"), "Object",
  166. "The grip information for the someProp5 wasn't set correctly.");
  167. is(localVar5.get("someProp6").target.querySelector(".value").getAttribute("value"), "Infinity",
  168. "The grip information for the someProp6 wasn't set correctly.");
  169. is(localVar5.get("someProp7").target.querySelector(".value").getAttribute("value"), "-Infinity",
  170. "The grip information for the someProp7 wasn't set correctly.");
  171. is(localVar5.get("someProp8").target.querySelector(".value").getAttribute("value"), "NaN",
  172. "The grip information for the someProp8 wasn't set correctly.");
  173. is(localVar5.get("someProp9").target.querySelector(".value").getAttribute("value"), "-0",
  174. "The grip information for the someProp9 wasn't set correctly.");
  175. is(localVar5.get("someUndefined").target.querySelector(".value").getAttribute("value"), "",
  176. "The grip information for the someUndefined wasn't set correctly.");
  177. is(localVar5.get("someAccessor").target.querySelector(".value").getAttribute("value"), "",
  178. "The grip information for the someAccessor wasn't set correctly.");
  179. is(localVar5.get("someProp5").get("someProp0").target.querySelector(".value").getAttribute("value"), "42",
  180. "The grip information for the sub-someProp0 wasn't set correctly.");
  181. is(localVar5.get("someProp5").get("someProp1").target.querySelector(".value").getAttribute("value"), "true",
  182. "The grip information for the sub-someProp1 wasn't set correctly.");
  183. is(localVar5.get("someProp5").get("someProp2").target.querySelector(".value").getAttribute("value"), "\"nasu\"",
  184. "The grip information for the sub-someProp2 wasn't set correctly.");
  185. is(localVar5.get("someProp5").get("someProp3").target.querySelector(".value").getAttribute("value"), "undefined",
  186. "The grip information for the sub-someProp3 wasn't set correctly.");
  187. is(localVar5.get("someProp5").get("someProp4").target.querySelector(".value").getAttribute("value"), "null",
  188. "The grip information for the sub-someProp4 wasn't set correctly.");
  189. is(localVar5.get("someProp5").get("someProp5").target.querySelector(".value").getAttribute("value"), "Object",
  190. "The grip information for the sub-someProp5 wasn't set correctly.");
  191. is(localVar5.get("someProp5").get("someProp6").target.querySelector(".value").getAttribute("value"), "Infinity",
  192. "The grip information for the sub-someProp6 wasn't set correctly.");
  193. is(localVar5.get("someProp5").get("someProp7").target.querySelector(".value").getAttribute("value"), "-Infinity",
  194. "The grip information for the sub-someProp7 wasn't set correctly.");
  195. is(localVar5.get("someProp5").get("someProp8").target.querySelector(".value").getAttribute("value"), "NaN",
  196. "The grip information for the sub-someProp8 wasn't set correctly.");
  197. is(localVar5.get("someProp5").get("someProp9").target.querySelector(".value").getAttribute("value"), "-0",
  198. "The grip information for the sub-someProp9 wasn't set correctly.");
  199. is(localVar5.get("someProp5").get("someUndefined").target.querySelector(".value").getAttribute("value"), "",
  200. "The grip information for the sub-someUndefined wasn't set correctly.");
  201. is(localVar5.get("someProp5").get("someAccessor").target.querySelector(".value").getAttribute("value"), "",
  202. "The grip information for the sub-someAccessor wasn't set correctly.");
  203. closeDebuggerAndFinish(aPanel);
  204. });
  205. }