|
1 <!DOCTYPE HTML> |
|
2 <html lang="en"> |
|
3 <head> |
|
4 <meta charset="utf8"> |
|
5 <title>Test for Bug 819670 - Web console object inspection does not handle native getters throwing very well</title> |
|
6 <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> |
|
7 <script type="text/javascript;version=1.8" src="common.js"></script> |
|
8 <!-- Any copyright is dedicated to the Public Domain. |
|
9 - http://creativecommons.org/publicdomain/zero/1.0/ --> |
|
10 </head> |
|
11 <body> |
|
12 <p>Test for Bug 819670 - Web console object inspection does not handle native getters throwing very well</p> |
|
13 |
|
14 <script class="testbody" type="text/javascript;version=1.8"> |
|
15 SimpleTest.waitForExplicitFinish(); |
|
16 |
|
17 function startTest() |
|
18 { |
|
19 removeEventListener("load", startTest); |
|
20 attachConsole([], onAttach, true); |
|
21 } |
|
22 |
|
23 function onAttach(aState, aResponse) |
|
24 { |
|
25 onEvaluate = onEvaluate.bind(null, aState); |
|
26 aState.client.evaluateJS("document.__proto__", onEvaluate); |
|
27 } |
|
28 |
|
29 function onEvaluate(aState, aResponse) |
|
30 { |
|
31 checkObject(aResponse, { |
|
32 from: aState.actor, |
|
33 input: "document.__proto__", |
|
34 result: { |
|
35 type: "object", |
|
36 actor: /[a-z]/, |
|
37 }, |
|
38 }); |
|
39 |
|
40 ok(!aResponse.exception, "no eval exception"); |
|
41 ok(!aResponse.helperResult, "no helper result"); |
|
42 |
|
43 onInspect = onInspect.bind(null, aState); |
|
44 let client = new ObjectClient(aState.dbgClient, aResponse.result); |
|
45 client.getPrototypeAndProperties(onInspect); |
|
46 } |
|
47 |
|
48 function onInspect(aState, aResponse) |
|
49 { |
|
50 ok(!aResponse.error, "no response error"); |
|
51 |
|
52 let expectedProps = { |
|
53 "addBroadcastListenerFor": { value: { type: "object" } }, |
|
54 "commandDispatcher": { get: { type: "object" } }, |
|
55 "getBoxObjectFor": { value: { type: "object" } }, |
|
56 "getElementsByAttribute": { value: { type: "object" } }, |
|
57 }; |
|
58 |
|
59 let props = aResponse.ownProperties; |
|
60 ok(props, "response properties available"); |
|
61 |
|
62 if (props) { |
|
63 ok(Object.keys(props).length > Object.keys(expectedProps).length, |
|
64 "number of enumerable properties"); |
|
65 checkObject(props, expectedProps); |
|
66 } |
|
67 |
|
68 closeDebugger(aState, function() { |
|
69 SimpleTest.finish(); |
|
70 }); |
|
71 } |
|
72 |
|
73 addEventListener("load", startTest); |
|
74 </script> |
|
75 </body> |
|
76 </html> |