|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 /** |
|
5 * Tests that checking/unchecking an event listener in the view correctly |
|
6 * causes the active thread to get updated with the new event breakpoints. |
|
7 */ |
|
8 |
|
9 const TAB_URL = EXAMPLE_URL + "doc_event-listeners-02.html"; |
|
10 |
|
11 function test() { |
|
12 initDebugger(TAB_URL).then(([aTab, aDebuggee, aPanel]) => { |
|
13 let gDebugger = aPanel.panelWin; |
|
14 let gView = gDebugger.DebuggerView; |
|
15 let gController = gDebugger.DebuggerController |
|
16 let gEvents = gView.EventListeners; |
|
17 let gBreakpoints = gController.Breakpoints; |
|
18 |
|
19 Task.spawn(function() { |
|
20 yield waitForSourceShown(aPanel, ".html"); |
|
21 |
|
22 let fetched = waitForDebuggerEvents(aPanel, gDebugger.EVENTS.EVENT_LISTENERS_FETCHED); |
|
23 gView.toggleInstrumentsPane({ visible: true, animated: false }, 1); |
|
24 yield fetched; |
|
25 |
|
26 testEventItem(0, false); |
|
27 testEventItem(1, false); |
|
28 testEventItem(2, false); |
|
29 testEventItem(3, false); |
|
30 testEventGroup("interactionEvents", false); |
|
31 testEventGroup("keyboardEvents", false); |
|
32 testEventGroup("mouseEvents", false); |
|
33 testEventArrays("keydown,click,change,keyup", ""); |
|
34 |
|
35 let updated = waitForDebuggerEvents(aPanel, gDebugger.EVENTS.EVENT_BREAKPOINTS_UPDATED); |
|
36 EventUtils.sendMouseEvent({ type: "click" }, getItemCheckboxNode(0), gDebugger); |
|
37 yield updated; |
|
38 |
|
39 testEventItem(0, true); |
|
40 testEventItem(1, false); |
|
41 testEventItem(2, false); |
|
42 testEventItem(3, false); |
|
43 testEventGroup("interactionEvents", false); |
|
44 testEventGroup("keyboardEvents", false); |
|
45 testEventGroup("mouseEvents", false); |
|
46 testEventArrays("keydown,click,change,keyup", "keydown"); |
|
47 |
|
48 let updated = waitForDebuggerEvents(aPanel, gDebugger.EVENTS.EVENT_BREAKPOINTS_UPDATED); |
|
49 EventUtils.sendMouseEvent({ type: "click" }, getItemCheckboxNode(0), gDebugger); |
|
50 yield updated; |
|
51 |
|
52 testEventItem(0, false); |
|
53 testEventItem(1, false); |
|
54 testEventItem(2, false); |
|
55 testEventItem(3, false); |
|
56 testEventGroup("interactionEvents", false); |
|
57 testEventGroup("keyboardEvents", false); |
|
58 testEventGroup("mouseEvents", false); |
|
59 testEventArrays("keydown,click,change,keyup", ""); |
|
60 |
|
61 yield ensureThreadClientState(aPanel, "resumed"); |
|
62 yield closeDebuggerAndFinish(aPanel); |
|
63 }); |
|
64 |
|
65 function getItemCheckboxNode(index) { |
|
66 return gEvents.items[index].target.parentNode |
|
67 .querySelector(".side-menu-widget-item-checkbox"); |
|
68 } |
|
69 |
|
70 function getGroupCheckboxNode(string) { |
|
71 return gEvents.widget._parent |
|
72 .querySelector(".side-menu-widget-group[name=" + gDebugger.L10N.getStr(string) + "]") |
|
73 .querySelector(".side-menu-widget-group-checkbox"); |
|
74 } |
|
75 |
|
76 function testEventItem(index, checked) { |
|
77 is(gEvents.attachments[index].checkboxState, checked, |
|
78 "The event at index " + index + " has the correct checkbox state."); |
|
79 is(getItemCheckboxNode(index).checked, checked, |
|
80 "The correct checkbox state is shown for this event."); |
|
81 } |
|
82 |
|
83 function testEventGroup(string, checked) { |
|
84 is(getGroupCheckboxNode(string).checked, checked, |
|
85 "The correct checkbox state is shown for the group " + string + "."); |
|
86 } |
|
87 |
|
88 function testEventArrays(all, checked) { |
|
89 is(gEvents.getAllEvents().toString(), all, |
|
90 "The getAllEvents() method returns the correct stuff."); |
|
91 is(gEvents.getCheckedEvents().toString(), checked, |
|
92 "The getCheckedEvents() method returns the correct stuff."); |
|
93 is(gBreakpoints.DOM.activeEventNames.toString(), checked, |
|
94 "The correct event names are listed as being active breakpoints."); |
|
95 } |
|
96 }); |
|
97 } |