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