1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/devtools/debugger/test/browser_dbg_variables-view-05.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,228 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +/** 1.8 + * Tests that grips are correctly applied to variables and properties. 1.9 + */ 1.10 + 1.11 +const TAB_URL = EXAMPLE_URL + "doc_recursion-stack.html"; 1.12 + 1.13 +function test() { 1.14 + initDebugger(TAB_URL).then(([aTab, aDebuggee, aPanel]) => { 1.15 + let variables = aPanel.panelWin.DebuggerView.Variables; 1.16 + 1.17 + let globalScope = variables.addScope("Test-Global"); 1.18 + let localScope = variables.addScope("Test-Local"); 1.19 + 1.20 + ok(globalScope, "The globalScope hasn't been created correctly."); 1.21 + ok(localScope, "The localScope hasn't been created correctly."); 1.22 + 1.23 + is(globalScope.target.querySelector(".separator"), null, 1.24 + "No separator string should be created for scopes (1)."); 1.25 + is(localScope.target.querySelector(".separator"), null, 1.26 + "No separator string should be created for scopes (2)."); 1.27 + 1.28 + let windowVar = globalScope.addItem("window"); 1.29 + let documentVar = globalScope.addItem("document"); 1.30 + 1.31 + ok(windowVar, "The windowVar hasn't been created correctly."); 1.32 + ok(documentVar, "The documentVar hasn't been created correctly."); 1.33 + 1.34 + ok(windowVar.target.querySelector(".separator").hidden, 1.35 + "No separator string should be shown for variables without a grip (1)."); 1.36 + ok(documentVar.target.querySelector(".separator").hidden, 1.37 + "No separator string should be shown for variables without a grip (2)."); 1.38 + 1.39 + windowVar.setGrip({ type: "object", class: "Window" }); 1.40 + documentVar.setGrip({ type: "object", class: "HTMLDocument" }); 1.41 + 1.42 + is(windowVar.target.querySelector(".separator").hidden, false, 1.43 + "A separator string should now be shown after setting the grip (1)."); 1.44 + is(documentVar.target.querySelector(".separator").hidden, false, 1.45 + "A separator string should now be shown after setting the grip (2)."); 1.46 + 1.47 + is(windowVar.target.querySelector(".separator").getAttribute("value"), ": ", 1.48 + "The separator string label is correct (1)."); 1.49 + is(documentVar.target.querySelector(".separator").getAttribute("value"), ": ", 1.50 + "The separator string label is correct (2)."); 1.51 + 1.52 + let localVar0 = localScope.addItem("localVar0"); 1.53 + let localVar1 = localScope.addItem("localVar1"); 1.54 + let localVar2 = localScope.addItem("localVar2"); 1.55 + let localVar3 = localScope.addItem("localVar3"); 1.56 + let localVar4 = localScope.addItem("localVar4"); 1.57 + let localVar5 = localScope.addItem("localVar5"); 1.58 + 1.59 + let localVar6 = localScope.addItem("localVar6"); 1.60 + let localVar7 = localScope.addItem("localVar7"); 1.61 + let localVar8 = localScope.addItem("localVar8"); 1.62 + let localVar9 = localScope.addItem("localVar9"); 1.63 + 1.64 + ok(localVar0, "The localVar0 hasn't been created correctly."); 1.65 + ok(localVar1, "The localVar1 hasn't been created correctly."); 1.66 + ok(localVar2, "The localVar2 hasn't been created correctly."); 1.67 + ok(localVar3, "The localVar3 hasn't been created correctly."); 1.68 + ok(localVar4, "The localVar4 hasn't been created correctly."); 1.69 + ok(localVar5, "The localVar5 hasn't been created correctly."); 1.70 + ok(localVar6, "The localVar6 hasn't been created correctly."); 1.71 + ok(localVar7, "The localVar7 hasn't been created correctly."); 1.72 + ok(localVar8, "The localVar8 hasn't been created correctly."); 1.73 + ok(localVar9, "The localVar9 hasn't been created correctly."); 1.74 + 1.75 + localVar0.setGrip(42); 1.76 + localVar1.setGrip(true); 1.77 + localVar2.setGrip("nasu"); 1.78 + 1.79 + localVar3.setGrip({ type: "undefined" }); 1.80 + localVar4.setGrip({ type: "null" }); 1.81 + localVar5.setGrip({ type: "object", class: "Object" }); 1.82 + localVar6.setGrip({ type: "Infinity" }); 1.83 + localVar7.setGrip({ type: "-Infinity" }); 1.84 + localVar8.setGrip({ type: "NaN" }); 1.85 + localVar9.setGrip({ type: "-0" }); 1.86 + 1.87 + localVar5.addItems({ 1.88 + someProp0: { value: 42, enumerable: true }, 1.89 + someProp1: { value: true, enumerable: true }, 1.90 + someProp2: { value: "nasu", enumerable: true }, 1.91 + someProp3: { value: { type: "undefined" }, enumerable: true }, 1.92 + someProp4: { value: { type: "null" }, enumerable: true }, 1.93 + someProp5: { value: { type: "object", class: "Object" }, enumerable: true }, 1.94 + someProp6: { value: { type: "Infinity" }, enumerable: true }, 1.95 + someProp7: { value: { type: "-Infinity" }, enumerable: true }, 1.96 + someProp8: { value: { type: "NaN" }, enumerable: true }, 1.97 + someProp9: { value: { type: "-0" }, enumerable: true }, 1.98 + someUndefined: { 1.99 + get: { type: "undefined" }, 1.100 + set: { type: "undefined" }, 1.101 + enumerable: true 1.102 + }, 1.103 + someAccessor: { 1.104 + get: { type: "object", class: "Function" }, 1.105 + set: { type: "undefined" }, 1.106 + enumerable: true 1.107 + } 1.108 + }); 1.109 + 1.110 + localVar5.get("someProp5").addItems({ 1.111 + someProp0: { value: 42, enumerable: true }, 1.112 + someProp1: { value: true, enumerable: true }, 1.113 + someProp2: { value: "nasu", enumerable: true }, 1.114 + someProp3: { value: { type: "undefined" }, enumerable: true }, 1.115 + someProp4: { value: { type: "null" }, enumerable: true }, 1.116 + someProp5: { value: { type: "object", class: "Object" }, enumerable: true }, 1.117 + someProp6: { value: { type: "Infinity" }, enumerable: true }, 1.118 + someProp7: { value: { type: "-Infinity" }, enumerable: true }, 1.119 + someProp8: { value: { type: "NaN" }, enumerable: true }, 1.120 + someProp9: { value: { type: "-0" }, enumerable: true }, 1.121 + someUndefined: { 1.122 + get: { type: "undefined" }, 1.123 + set: { type: "undefined" }, 1.124 + enumerable: true 1.125 + }, 1.126 + someAccessor: { 1.127 + get: { type: "object", class: "Function" }, 1.128 + set: { type: "undefined" }, 1.129 + enumerable: true 1.130 + } 1.131 + }); 1.132 + 1.133 + is(globalScope.target.querySelector(".enum").childNodes.length, 0, 1.134 + "The globalScope doesn't contain all the created enumerable variable elements."); 1.135 + is(globalScope.target.querySelector(".nonenum").childNodes.length, 2, 1.136 + "The globalScope doesn't contain all the created non-enumerable variable elements."); 1.137 + 1.138 + is(localScope.target.querySelector(".enum").childNodes.length, 0, 1.139 + "The localScope doesn't contain all the created enumerable variable elements."); 1.140 + is(localScope.target.querySelector(".nonenum").childNodes.length, 10, 1.141 + "The localScope doesn't contain all the created non-enumerable variable elements."); 1.142 + 1.143 + is(localVar5.target.querySelector(".enum").childNodes.length, 12, 1.144 + "The localVar5 doesn't contain all the created enumerable properties."); 1.145 + is(localVar5.target.querySelector(".nonenum").childNodes.length, 0, 1.146 + "The localVar5 doesn't contain all the created non-enumerable properties."); 1.147 + 1.148 + is(localVar5.get("someProp5").target.querySelector(".enum").childNodes.length, 12, 1.149 + "The localVar5.someProp5 doesn't contain all the created enumerable properties."); 1.150 + is(localVar5.get("someProp5").target.querySelector(".nonenum").childNodes.length, 0, 1.151 + "The localVar5.someProp5 doesn't contain all the created non-enumerable properties."); 1.152 + 1.153 + is(windowVar.target.querySelector(".value").getAttribute("value"), "Window", 1.154 + "The grip information for the windowVar wasn't set correctly."); 1.155 + is(documentVar.target.querySelector(".value").getAttribute("value"), "HTMLDocument", 1.156 + "The grip information for the documentVar wasn't set correctly."); 1.157 + 1.158 + is(localVar0.target.querySelector(".value").getAttribute("value"), "42", 1.159 + "The grip information for the localVar0 wasn't set correctly."); 1.160 + is(localVar1.target.querySelector(".value").getAttribute("value"), "true", 1.161 + "The grip information for the localVar1 wasn't set correctly."); 1.162 + is(localVar2.target.querySelector(".value").getAttribute("value"), "\"nasu\"", 1.163 + "The grip information for the localVar2 wasn't set correctly."); 1.164 + is(localVar3.target.querySelector(".value").getAttribute("value"), "undefined", 1.165 + "The grip information for the localVar3 wasn't set correctly."); 1.166 + is(localVar4.target.querySelector(".value").getAttribute("value"), "null", 1.167 + "The grip information for the localVar4 wasn't set correctly."); 1.168 + is(localVar5.target.querySelector(".value").getAttribute("value"), "Object", 1.169 + "The grip information for the localVar5 wasn't set correctly."); 1.170 + is(localVar6.target.querySelector(".value").getAttribute("value"), "Infinity", 1.171 + "The grip information for the localVar6 wasn't set correctly."); 1.172 + is(localVar7.target.querySelector(".value").getAttribute("value"), "-Infinity", 1.173 + "The grip information for the localVar7 wasn't set correctly."); 1.174 + is(localVar8.target.querySelector(".value").getAttribute("value"), "NaN", 1.175 + "The grip information for the localVar8 wasn't set correctly."); 1.176 + is(localVar9.target.querySelector(".value").getAttribute("value"), "-0", 1.177 + "The grip information for the localVar9 wasn't set correctly."); 1.178 + 1.179 + is(localVar5.get("someProp0").target.querySelector(".value").getAttribute("value"), "42", 1.180 + "The grip information for the someProp0 wasn't set correctly."); 1.181 + is(localVar5.get("someProp1").target.querySelector(".value").getAttribute("value"), "true", 1.182 + "The grip information for the someProp1 wasn't set correctly."); 1.183 + is(localVar5.get("someProp2").target.querySelector(".value").getAttribute("value"), "\"nasu\"", 1.184 + "The grip information for the someProp2 wasn't set correctly."); 1.185 + is(localVar5.get("someProp3").target.querySelector(".value").getAttribute("value"), "undefined", 1.186 + "The grip information for the someProp3 wasn't set correctly."); 1.187 + is(localVar5.get("someProp4").target.querySelector(".value").getAttribute("value"), "null", 1.188 + "The grip information for the someProp4 wasn't set correctly."); 1.189 + is(localVar5.get("someProp5").target.querySelector(".value").getAttribute("value"), "Object", 1.190 + "The grip information for the someProp5 wasn't set correctly."); 1.191 + is(localVar5.get("someProp6").target.querySelector(".value").getAttribute("value"), "Infinity", 1.192 + "The grip information for the someProp6 wasn't set correctly."); 1.193 + is(localVar5.get("someProp7").target.querySelector(".value").getAttribute("value"), "-Infinity", 1.194 + "The grip information for the someProp7 wasn't set correctly."); 1.195 + is(localVar5.get("someProp8").target.querySelector(".value").getAttribute("value"), "NaN", 1.196 + "The grip information for the someProp8 wasn't set correctly."); 1.197 + is(localVar5.get("someProp9").target.querySelector(".value").getAttribute("value"), "-0", 1.198 + "The grip information for the someProp9 wasn't set correctly."); 1.199 + is(localVar5.get("someUndefined").target.querySelector(".value").getAttribute("value"), "", 1.200 + "The grip information for the someUndefined wasn't set correctly."); 1.201 + is(localVar5.get("someAccessor").target.querySelector(".value").getAttribute("value"), "", 1.202 + "The grip information for the someAccessor wasn't set correctly."); 1.203 + 1.204 + is(localVar5.get("someProp5").get("someProp0").target.querySelector(".value").getAttribute("value"), "42", 1.205 + "The grip information for the sub-someProp0 wasn't set correctly."); 1.206 + is(localVar5.get("someProp5").get("someProp1").target.querySelector(".value").getAttribute("value"), "true", 1.207 + "The grip information for the sub-someProp1 wasn't set correctly."); 1.208 + is(localVar5.get("someProp5").get("someProp2").target.querySelector(".value").getAttribute("value"), "\"nasu\"", 1.209 + "The grip information for the sub-someProp2 wasn't set correctly."); 1.210 + is(localVar5.get("someProp5").get("someProp3").target.querySelector(".value").getAttribute("value"), "undefined", 1.211 + "The grip information for the sub-someProp3 wasn't set correctly."); 1.212 + is(localVar5.get("someProp5").get("someProp4").target.querySelector(".value").getAttribute("value"), "null", 1.213 + "The grip information for the sub-someProp4 wasn't set correctly."); 1.214 + is(localVar5.get("someProp5").get("someProp5").target.querySelector(".value").getAttribute("value"), "Object", 1.215 + "The grip information for the sub-someProp5 wasn't set correctly."); 1.216 + is(localVar5.get("someProp5").get("someProp6").target.querySelector(".value").getAttribute("value"), "Infinity", 1.217 + "The grip information for the sub-someProp6 wasn't set correctly."); 1.218 + is(localVar5.get("someProp5").get("someProp7").target.querySelector(".value").getAttribute("value"), "-Infinity", 1.219 + "The grip information for the sub-someProp7 wasn't set correctly."); 1.220 + is(localVar5.get("someProp5").get("someProp8").target.querySelector(".value").getAttribute("value"), "NaN", 1.221 + "The grip information for the sub-someProp8 wasn't set correctly."); 1.222 + is(localVar5.get("someProp5").get("someProp9").target.querySelector(".value").getAttribute("value"), "-0", 1.223 + "The grip information for the sub-someProp9 wasn't set correctly."); 1.224 + is(localVar5.get("someProp5").get("someUndefined").target.querySelector(".value").getAttribute("value"), "", 1.225 + "The grip information for the sub-someUndefined wasn't set correctly."); 1.226 + is(localVar5.get("someProp5").get("someAccessor").target.querySelector(".value").getAttribute("value"), "", 1.227 + "The grip information for the sub-someAccessor wasn't set correctly."); 1.228 + 1.229 + closeDebuggerAndFinish(aPanel); 1.230 + }); 1.231 +}