1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/devtools/debugger/test/browser_dbg_break-on-dom-04.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,97 @@ 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 checking/unchecking an event listener in the view correctly 1.9 + * causes the active thread to get updated with the new event breakpoints. 1.10 + */ 1.11 + 1.12 +const TAB_URL = EXAMPLE_URL + "doc_event-listeners-02.html"; 1.13 + 1.14 +function test() { 1.15 + initDebugger(TAB_URL).then(([aTab, aDebuggee, aPanel]) => { 1.16 + let gDebugger = aPanel.panelWin; 1.17 + let gView = gDebugger.DebuggerView; 1.18 + let gController = gDebugger.DebuggerController 1.19 + let gEvents = gView.EventListeners; 1.20 + let gBreakpoints = gController.Breakpoints; 1.21 + 1.22 + Task.spawn(function() { 1.23 + yield waitForSourceShown(aPanel, ".html"); 1.24 + 1.25 + let fetched = waitForDebuggerEvents(aPanel, gDebugger.EVENTS.EVENT_LISTENERS_FETCHED); 1.26 + gView.toggleInstrumentsPane({ visible: true, animated: false }, 1); 1.27 + yield fetched; 1.28 + 1.29 + testEventItem(0, false); 1.30 + testEventItem(1, false); 1.31 + testEventItem(2, false); 1.32 + testEventItem(3, false); 1.33 + testEventGroup("interactionEvents", false); 1.34 + testEventGroup("keyboardEvents", false); 1.35 + testEventGroup("mouseEvents", false); 1.36 + testEventArrays("keydown,click,change,keyup", ""); 1.37 + 1.38 + let updated = waitForDebuggerEvents(aPanel, gDebugger.EVENTS.EVENT_BREAKPOINTS_UPDATED); 1.39 + EventUtils.sendMouseEvent({ type: "click" }, getItemCheckboxNode(0), gDebugger); 1.40 + yield updated; 1.41 + 1.42 + testEventItem(0, true); 1.43 + testEventItem(1, false); 1.44 + testEventItem(2, false); 1.45 + testEventItem(3, false); 1.46 + testEventGroup("interactionEvents", false); 1.47 + testEventGroup("keyboardEvents", false); 1.48 + testEventGroup("mouseEvents", false); 1.49 + testEventArrays("keydown,click,change,keyup", "keydown"); 1.50 + 1.51 + let updated = waitForDebuggerEvents(aPanel, gDebugger.EVENTS.EVENT_BREAKPOINTS_UPDATED); 1.52 + EventUtils.sendMouseEvent({ type: "click" }, getItemCheckboxNode(0), gDebugger); 1.53 + yield updated; 1.54 + 1.55 + testEventItem(0, false); 1.56 + testEventItem(1, false); 1.57 + testEventItem(2, false); 1.58 + testEventItem(3, false); 1.59 + testEventGroup("interactionEvents", false); 1.60 + testEventGroup("keyboardEvents", false); 1.61 + testEventGroup("mouseEvents", false); 1.62 + testEventArrays("keydown,click,change,keyup", ""); 1.63 + 1.64 + yield ensureThreadClientState(aPanel, "resumed"); 1.65 + yield closeDebuggerAndFinish(aPanel); 1.66 + }); 1.67 + 1.68 + function getItemCheckboxNode(index) { 1.69 + return gEvents.items[index].target.parentNode 1.70 + .querySelector(".side-menu-widget-item-checkbox"); 1.71 + } 1.72 + 1.73 + function getGroupCheckboxNode(string) { 1.74 + return gEvents.widget._parent 1.75 + .querySelector(".side-menu-widget-group[name=" + gDebugger.L10N.getStr(string) + "]") 1.76 + .querySelector(".side-menu-widget-group-checkbox"); 1.77 + } 1.78 + 1.79 + function testEventItem(index, checked) { 1.80 + is(gEvents.attachments[index].checkboxState, checked, 1.81 + "The event at index " + index + " has the correct checkbox state."); 1.82 + is(getItemCheckboxNode(index).checked, checked, 1.83 + "The correct checkbox state is shown for this event."); 1.84 + } 1.85 + 1.86 + function testEventGroup(string, checked) { 1.87 + is(getGroupCheckboxNode(string).checked, checked, 1.88 + "The correct checkbox state is shown for the group " + string + "."); 1.89 + } 1.90 + 1.91 + function testEventArrays(all, checked) { 1.92 + is(gEvents.getAllEvents().toString(), all, 1.93 + "The getAllEvents() method returns the correct stuff."); 1.94 + is(gEvents.getCheckedEvents().toString(), checked, 1.95 + "The getCheckedEvents() method returns the correct stuff."); 1.96 + is(gBreakpoints.DOM.activeEventNames.toString(), checked, 1.97 + "The correct event names are listed as being active breakpoints."); 1.98 + } 1.99 + }); 1.100 +}