|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 /** |
|
5 * Tests that the event listener states are preserved in the view after the |
|
6 * target navigates. |
|
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 EventUtils.sendMouseEvent({ type: "click" }, getItemCheckboxNode(1), gDebugger); |
|
38 EventUtils.sendMouseEvent({ type: "click" }, getItemCheckboxNode(2), gDebugger); |
|
39 yield updated; |
|
40 |
|
41 testEventItem(0, true); |
|
42 testEventItem(1, true); |
|
43 testEventItem(2, true); |
|
44 testEventItem(3, false); |
|
45 testEventGroup("interactionEvents", false); |
|
46 testEventGroup("keyboardEvents", false); |
|
47 testEventGroup("mouseEvents", false); |
|
48 testEventArrays("keydown,click,change,keyup", "keydown,click,change"); |
|
49 |
|
50 yield reloadActiveTab(aPanel, gDebugger.EVENTS.EVENT_LISTENERS_FETCHED); |
|
51 |
|
52 testEventItem(0, true); |
|
53 testEventItem(1, true); |
|
54 testEventItem(2, true); |
|
55 testEventItem(3, false); |
|
56 testEventGroup("interactionEvents", false); |
|
57 testEventGroup("keyboardEvents", false); |
|
58 testEventGroup("mouseEvents", false); |
|
59 testEventArrays("keydown,click,change,keyup", "keydown,click,change"); |
|
60 |
|
61 let updated = waitForDebuggerEvents(aPanel, gDebugger.EVENTS.EVENT_BREAKPOINTS_UPDATED); |
|
62 EventUtils.sendMouseEvent({ type: "click" }, getItemCheckboxNode(0), gDebugger); |
|
63 EventUtils.sendMouseEvent({ type: "click" }, getItemCheckboxNode(1), gDebugger); |
|
64 EventUtils.sendMouseEvent({ type: "click" }, getItemCheckboxNode(2), gDebugger); |
|
65 yield updated; |
|
66 |
|
67 testEventItem(0, false); |
|
68 testEventItem(1, false); |
|
69 testEventItem(2, false); |
|
70 testEventItem(3, false); |
|
71 testEventGroup("interactionEvents", false); |
|
72 testEventGroup("keyboardEvents", false); |
|
73 testEventGroup("mouseEvents", false); |
|
74 testEventArrays("keydown,click,change,keyup", ""); |
|
75 |
|
76 yield reloadActiveTab(aPanel, gDebugger.EVENTS.EVENT_LISTENERS_FETCHED); |
|
77 |
|
78 testEventItem(0, false); |
|
79 testEventItem(1, false); |
|
80 testEventItem(2, false); |
|
81 testEventItem(3, false); |
|
82 testEventGroup("interactionEvents", false); |
|
83 testEventGroup("keyboardEvents", false); |
|
84 testEventGroup("mouseEvents", false); |
|
85 testEventArrays("keydown,click,change,keyup", ""); |
|
86 |
|
87 yield ensureThreadClientState(aPanel, "resumed"); |
|
88 yield closeDebuggerAndFinish(aPanel); |
|
89 }); |
|
90 |
|
91 function getItemCheckboxNode(index) { |
|
92 return gEvents.items[index].target.parentNode |
|
93 .querySelector(".side-menu-widget-item-checkbox"); |
|
94 } |
|
95 |
|
96 function getGroupCheckboxNode(string) { |
|
97 return gEvents.widget._parent |
|
98 .querySelector(".side-menu-widget-group[name=" + gDebugger.L10N.getStr(string) + "]") |
|
99 .querySelector(".side-menu-widget-group-checkbox"); |
|
100 } |
|
101 |
|
102 function testEventItem(index, checked) { |
|
103 is(gEvents.attachments[index].checkboxState, checked, |
|
104 "The event at index " + index + " has the correct checkbox state."); |
|
105 is(getItemCheckboxNode(index).checked, checked, |
|
106 "The correct checkbox state is shown for this event."); |
|
107 } |
|
108 |
|
109 function testEventGroup(string, checked) { |
|
110 is(getGroupCheckboxNode(string).checked, checked, |
|
111 "The correct checkbox state is shown for the group " + string + "."); |
|
112 } |
|
113 |
|
114 function testEventArrays(all, checked) { |
|
115 is(gEvents.getAllEvents().toString(), all, |
|
116 "The getAllEvents() method returns the correct stuff."); |
|
117 is(gEvents.getCheckedEvents().toString(), checked, |
|
118 "The getCheckedEvents() method returns the correct stuff."); |
|
119 is(gBreakpoints.DOM.activeEventNames.toString(), checked, |
|
120 "The correct event names are listed as being active breakpoints."); |
|
121 } |
|
122 }); |
|
123 } |