Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sources/XHRBreakpointsSidebarPane.js

Issue 2914793003: do not commit, just another deletion test
Patch Set: deleted everything Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 /**
5 * @implements {UI.ContextFlavorListener}
6 * @implements {UI.ToolbarItem.ItemsProvider}
7 * @unrestricted
8 */
9 Sources.XHRBreakpointsSidebarPane = class extends Components.BreakpointsSidebarP aneBase {
10 constructor() {
11 super();
12 /** @type {!Map.<string, !Element>} */
13 this._breakpointElements = new Map();
14
15 this._addButton = new UI.ToolbarButton(Common.UIString('Add breakpoint'), 'l argeicon-add');
16 this._addButton.addEventListener(UI.ToolbarButton.Events.Click, this._addBut tonClicked.bind(this));
17
18 this.emptyElement.addEventListener('contextmenu', this._emptyElementContextM enu.bind(this), true);
19 this._restoreBreakpoints();
20 this._update();
21 }
22
23 /**
24 * @override
25 * @return {!Array<!UI.ToolbarItem>}
26 */
27 toolbarItems() {
28 return [this._addButton];
29 }
30
31 _emptyElementContextMenu(event) {
32 var contextMenu = new UI.ContextMenu(event);
33 contextMenu.appendItem(Common.UIString.capitalize('Add ^breakpoint'), this._ addButtonClicked.bind(this));
34 contextMenu.show();
35 }
36
37 _addButtonClicked() {
38 UI.viewManager.showView('sources.xhrBreakpoints');
39
40 var inputElementContainer = createElementWithClass('p', 'breakpoint-conditio n');
41 inputElementContainer.textContent = Common.UIString('Break when URL contains :');
42
43 var inputElement = inputElementContainer.createChild('span');
44 inputElement.id = 'breakpoint-condition-input';
45 this.addListElement(inputElementContainer, /** @type {?Element} */ (this.lis tElement.firstChild));
46
47 /**
48 * @param {boolean} accept
49 * @param {!Element} e
50 * @param {string} text
51 * @this {Sources.XHRBreakpointsSidebarPane}
52 */
53 function finishEditing(accept, e, text) {
54 this.removeListElement(inputElementContainer);
55 if (accept) {
56 SDK.domDebuggerManager.addXHRBreakpoint(text, true);
57 this._setBreakpoint(text, true);
58 }
59 }
60
61 var config = new UI.InplaceEditor.Config(finishEditing.bind(this, true), fin ishEditing.bind(this, false));
62 UI.InplaceEditor.startEditing(inputElement, config);
63 }
64
65 /**
66 * @param {string} url
67 * @param {boolean} enabled
68 */
69 _setBreakpoint(url, enabled) {
70 if (this._breakpointElements.has(url)) {
71 this._breakpointElements.get(url)._checkboxElement.checked = enabled;
72 return;
73 }
74
75 var element = createElement('li');
76 element._url = url;
77 element.addEventListener('contextmenu', this._contextMenu.bind(this, url), t rue);
78
79 var title = url ? Common.UIString('URL contains "%s"', url) : Common.UIStrin g('Any XHR');
80 var label = UI.CheckboxLabel.create(title, enabled);
81 element.appendChild(label);
82 label.checkboxElement.addEventListener('click', this._checkboxClicked.bind(t his, url), false);
83 element._checkboxElement = label.checkboxElement;
84
85 label.classList.add('cursor-auto');
86 label.textElement.addEventListener('dblclick', this._labelClicked.bind(this, url), false);
87
88 var currentElement = /** @type {?Element} */ (this.listElement.firstChild);
89 while (currentElement) {
90 if (currentElement._url && currentElement._url < element._url)
91 break;
92 currentElement = /** @type {?Element} */ (currentElement.nextSibling);
93 }
94 this.addListElement(element, currentElement);
95 this._breakpointElements.set(url, element);
96 }
97
98 /**
99 * @param {string} url
100 */
101 _removeBreakpoint(url) {
102 var element = this._breakpointElements.get(url);
103 if (!element)
104 return;
105
106 this.removeListElement(element);
107 this._breakpointElements.delete(url);
108 }
109
110 _contextMenu(url, event) {
111 var contextMenu = new UI.ContextMenu(event);
112
113 /**
114 * @this {Sources.XHRBreakpointsSidebarPane}
115 */
116 function removeBreakpoint() {
117 SDK.domDebuggerManager.removeXHRBreakpoint(url);
118 this._removeBreakpoint(url);
119 }
120
121 /**
122 * @this {Sources.XHRBreakpointsSidebarPane}
123 */
124 function removeAllBreakpoints() {
125 for (var url of this._breakpointElements.keys()) {
126 SDK.domDebuggerManager.removeXHRBreakpoint(url);
127 this._removeBreakpoint(url);
128 }
129 }
130 var removeAllTitle = Common.UIString.capitalize('Remove ^all ^breakpoints');
131
132 contextMenu.appendItem(Common.UIString.capitalize('Add ^breakpoint'), this._ addButtonClicked.bind(this));
133 contextMenu.appendItem(Common.UIString.capitalize('Remove ^breakpoint'), rem oveBreakpoint.bind(this));
134 contextMenu.appendItem(removeAllTitle, removeAllBreakpoints.bind(this));
135 contextMenu.show();
136 }
137
138 _checkboxClicked(url, event) {
139 SDK.domDebuggerManager.toggleXHRBreakpoint(url, event.target.checked);
140 }
141
142 _labelClicked(url) {
143 var element = this._breakpointElements.get(url) || null;
144 var inputElement = createElementWithClass('span', 'breakpoint-condition');
145 inputElement.textContent = url;
146 this.listElement.insertBefore(inputElement, element);
147 element.classList.add('hidden');
148
149 /**
150 * @param {boolean} accept
151 * @param {!Element} e
152 * @param {string} text
153 * @this {Sources.XHRBreakpointsSidebarPane}
154 */
155 function finishEditing(accept, e, text) {
156 this.removeListElement(inputElement);
157 if (accept) {
158 SDK.domDebuggerManager.removeXHRBreakpoint(url);
159 this._removeBreakpoint(url);
160 var enabled = element ? element._checkboxElement.checked : true;
161 SDK.domDebuggerManager.addXHRBreakpoint(text, enabled);
162 this._setBreakpoint(text, enabled);
163 } else {
164 element.classList.remove('hidden');
165 }
166 }
167
168 UI.InplaceEditor.startEditing(
169 inputElement, new UI.InplaceEditor.Config(finishEditing.bind(this, true) , finishEditing.bind(this, false)));
170 }
171
172 /**
173 * @override
174 * @param {?Object} object
175 */
176 flavorChanged(object) {
177 this._update();
178 }
179
180 _update() {
181 var details = UI.context.flavor(SDK.DebuggerPausedDetails);
182 if (!details || details.reason !== SDK.DebuggerModel.BreakReason.XHR) {
183 if (this._highlightedElement) {
184 this._highlightedElement.classList.remove('breakpoint-hit');
185 delete this._highlightedElement;
186 }
187 return;
188 }
189 var url = details.auxData['breakpointURL'];
190 var element = this._breakpointElements.get(url);
191 if (!element)
192 return;
193 UI.viewManager.showView('sources.xhrBreakpoints');
194 element.classList.add('breakpoint-hit');
195 this._highlightedElement = element;
196 }
197
198 _restoreBreakpoints() {
199 var breakpoints = SDK.domDebuggerManager.xhrBreakpoints();
200 for (var url of breakpoints.keys())
201 this._setBreakpoint(url, breakpoints.get(url));
202 }
203 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698