 Chromium Code Reviews
 Chromium Code Reviews Issue 2900843002:
  DevTools: remove BreakpointsSidebarPaneBase and breakpointsList.css  (Closed)
    
  
    Issue 2900843002:
  DevTools: remove BreakpointsSidebarPaneBase and breakpointsList.css  (Closed) 
  | 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('components/breakpointsList.css'); | |
| 13 | |
| 14 this._listElement = createElementWithClass('ol', 'breakpoint-list'); | |
| 
dgozman
2017/05/30 21:53:39
ol -> div
 
luoe
2017/05/31 03:09:24
Done.
 | |
| 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'); | 
| 44 inputElement.id = 'breakpoint-condition-input'; | 50 inputElement.id = 'breakpoint-condition-input'; | 
| 45 this.addListElement(inputElementContainer, /** @type {?Element} */ (this.lis tElement.firstChild)); | 51 this._addListElement(inputElementContainer, /** @type {?Element} */ (this._l istElement.firstChild)); | 
| 46 | 52 | 
| 47 /** | 53 /** | 
| 48 * @param {boolean} accept | 54 * @param {boolean} accept | 
| 49 * @param {!Element} e | 55 * @param {!Element} e | 
| 50 * @param {string} text | 56 * @param {string} text | 
| 51 * @this {Sources.XHRBreakpointsSidebarPane} | 57 * @this {Sources.XHRBreakpointsSidebarPane} | 
| 52 */ | 58 */ | 
| 53 function finishEditing(accept, e, text) { | 59 function finishEditing(accept, e, text) { | 
| 54 this.removeListElement(inputElementContainer); | 60 this._removeListElement(inputElementContainer); | 
| 55 if (accept) { | 61 if (accept) { | 
| 56 SDK.domDebuggerManager.addXHRBreakpoint(text, true); | 62 SDK.domDebuggerManager.addXHRBreakpoint(text, true); | 
| 57 this._setBreakpoint(text, true); | 63 this._setBreakpoint(text, true); | 
| 58 } | 64 } | 
| 59 } | 65 } | 
| 60 | 66 | 
| 61 var config = new UI.InplaceEditor.Config(finishEditing.bind(this, true), fin ishEditing.bind(this, false)); | 67 var config = new UI.InplaceEditor.Config(finishEditing.bind(this, true), fin ishEditing.bind(this, false)); | 
| 62 UI.InplaceEditor.startEditing(inputElement, config); | 68 UI.InplaceEditor.startEditing(inputElement, config); | 
| 63 } | 69 } | 
| 64 | 70 | 
| 65 /** | 71 /** | 
| 66 * @param {string} url | 72 * @param {string} url | 
| 67 * @param {boolean} enabled | 73 * @param {boolean} enabled | 
| 68 */ | 74 */ | 
| 69 _setBreakpoint(url, enabled) { | 75 _setBreakpoint(url, enabled) { | 
| 70 if (this._breakpointElements.has(url)) { | 76 if (this._breakpointElements.has(url)) { | 
| 71 this._breakpointElements.get(url)._checkboxElement.checked = enabled; | 77 this._breakpointElements.get(url)._checkboxElement.checked = enabled; | 
| 72 return; | 78 return; | 
| 73 } | 79 } | 
| 74 | 80 | 
| 75 var element = createElement('li'); | 81 var element = createElement('li'); | 
| 
dgozman
2017/05/30 21:53:39
li -> div
 | |
| 76 element._url = url; | 82 element._url = url; | 
| 77 element.addEventListener('contextmenu', this._contextMenu.bind(this, url), t rue); | 83 element.addEventListener('contextmenu', this._contextMenu.bind(this, url), t rue); | 
| 78 | 84 | 
| 79 var title = url ? Common.UIString('URL contains "%s"', url) : Common.UIStrin g('Any XHR'); | 85 var title = url ? Common.UIString('URL contains "%s"', url) : Common.UIStrin g('Any XHR'); | 
| 80 var label = UI.CheckboxLabel.create(title, enabled); | 86 var label = UI.CheckboxLabel.create(title, enabled); | 
| 81 element.appendChild(label); | 87 element.appendChild(label); | 
| 82 label.checkboxElement.addEventListener('click', this._checkboxClicked.bind(t his, url), false); | 88 label.checkboxElement.addEventListener('click', this._checkboxClicked.bind(t his, url), false); | 
| 83 element._checkboxElement = label.checkboxElement; | 89 element._checkboxElement = label.checkboxElement; | 
| 84 | 90 | 
| 85 label.classList.add('cursor-auto'); | 91 label.classList.add('cursor-auto'); | 
| 86 label.textElement.addEventListener('dblclick', this._labelClicked.bind(this, url), false); | 92 label.textElement.addEventListener('dblclick', this._labelClicked.bind(this, url), false); | 
| 87 | 93 | 
| 88 var currentElement = /** @type {?Element} */ (this.listElement.firstChild); | 94 var currentElement = /** @type {?Element} */ (this._listElement.firstChild); | 
| 89 while (currentElement) { | 95 while (currentElement) { | 
| 90 if (currentElement._url && currentElement._url < element._url) | 96 if (currentElement._url && currentElement._url < element._url) | 
| 91 break; | 97 break; | 
| 92 currentElement = /** @type {?Element} */ (currentElement.nextSibling); | 98 currentElement = /** @type {?Element} */ (currentElement.nextSibling); | 
| 93 } | 99 } | 
| 94 this.addListElement(element, currentElement); | 100 this._addListElement(element, currentElement); | 
| 95 this._breakpointElements.set(url, element); | 101 this._breakpointElements.set(url, element); | 
| 96 } | 102 } | 
| 97 | 103 | 
| 98 /** | 104 /** | 
| 99 * @param {string} url | 105 * @param {string} url | 
| 100 */ | 106 */ | 
| 101 _removeBreakpoint(url) { | 107 _removeBreakpoint(url) { | 
| 102 var element = this._breakpointElements.get(url); | 108 var element = this._breakpointElements.get(url); | 
| 103 if (!element) | 109 if (!element) | 
| 104 return; | 110 return; | 
| 105 | 111 | 
| 106 this.removeListElement(element); | 112 this._removeListElement(element); | 
| 107 this._breakpointElements.delete(url); | 113 this._breakpointElements.delete(url); | 
| 108 } | 114 } | 
| 109 | 115 | 
| 116 /** | |
| 117 * @param {!Element} element | |
| 118 * @param {?Node} beforeNode | |
| 119 */ | |
| 120 _addListElement(element, beforeNode) { | |
| 121 this._listElement.insertBefore(element, beforeNode); | |
| 122 if (this._emptyElement.parentElement === this.contentElement) | |
| 123 this.contentElement.replaceChild(this._listElement, this._emptyElement); | |
| 
dgozman
2017/05/30 21:53:39
Toggle hidden class.
 
luoe
2017/05/31 03:09:24
Done.
 | |
| 124 } | |
| 125 | |
| 126 _removeListElement(element) { | |
| 127 this._listElement.removeChild(element); | |
| 128 if (!this._listElement.firstChild && this._listElement.parentElement === thi s.contentElement) | |
| 129 this.contentElement.replaceChild(this._emptyElement, this._listElement); | |
| 130 } | |
| 131 | |
| 110 _contextMenu(url, event) { | 132 _contextMenu(url, event) { | 
| 111 var contextMenu = new UI.ContextMenu(event); | 133 var contextMenu = new UI.ContextMenu(event); | 
| 112 | 134 | 
| 113 /** | 135 /** | 
| 114 * @this {Sources.XHRBreakpointsSidebarPane} | 136 * @this {Sources.XHRBreakpointsSidebarPane} | 
| 115 */ | 137 */ | 
| 116 function removeBreakpoint() { | 138 function removeBreakpoint() { | 
| 117 SDK.domDebuggerManager.removeXHRBreakpoint(url); | 139 SDK.domDebuggerManager.removeXHRBreakpoint(url); | 
| 118 this._removeBreakpoint(url); | 140 this._removeBreakpoint(url); | 
| 119 } | 141 } | 
| (...skipping 16 matching lines...) Expand all Loading... | |
| 136 } | 158 } | 
| 137 | 159 | 
| 138 _checkboxClicked(url, event) { | 160 _checkboxClicked(url, event) { | 
| 139 SDK.domDebuggerManager.toggleXHRBreakpoint(url, event.target.checked); | 161 SDK.domDebuggerManager.toggleXHRBreakpoint(url, event.target.checked); | 
| 140 } | 162 } | 
| 141 | 163 | 
| 142 _labelClicked(url) { | 164 _labelClicked(url) { | 
| 143 var element = this._breakpointElements.get(url) || null; | 165 var element = this._breakpointElements.get(url) || null; | 
| 144 var inputElement = createElementWithClass('span', 'breakpoint-condition'); | 166 var inputElement = createElementWithClass('span', 'breakpoint-condition'); | 
| 145 inputElement.textContent = url; | 167 inputElement.textContent = url; | 
| 146 this.listElement.insertBefore(inputElement, element); | 168 this._listElement.insertBefore(inputElement, element); | 
| 147 element.classList.add('hidden'); | 169 element.classList.add('hidden'); | 
| 148 | 170 | 
| 149 /** | 171 /** | 
| 150 * @param {boolean} accept | 172 * @param {boolean} accept | 
| 151 * @param {!Element} e | 173 * @param {!Element} e | 
| 152 * @param {string} text | 174 * @param {string} text | 
| 153 * @this {Sources.XHRBreakpointsSidebarPane} | 175 * @this {Sources.XHRBreakpointsSidebarPane} | 
| 154 */ | 176 */ | 
| 155 function finishEditing(accept, e, text) { | 177 function finishEditing(accept, e, text) { | 
| 156 this.removeListElement(inputElement); | 178 this._removeListElement(inputElement); | 
| 157 if (accept) { | 179 if (accept) { | 
| 158 SDK.domDebuggerManager.removeXHRBreakpoint(url); | 180 SDK.domDebuggerManager.removeXHRBreakpoint(url); | 
| 159 this._removeBreakpoint(url); | 181 this._removeBreakpoint(url); | 
| 160 var enabled = element ? element._checkboxElement.checked : true; | 182 var enabled = element ? element._checkboxElement.checked : true; | 
| 161 SDK.domDebuggerManager.addXHRBreakpoint(text, enabled); | 183 SDK.domDebuggerManager.addXHRBreakpoint(text, enabled); | 
| 162 this._setBreakpoint(text, enabled); | 184 this._setBreakpoint(text, enabled); | 
| 163 } else { | 185 } else { | 
| 164 element.classList.remove('hidden'); | 186 element.classList.remove('hidden'); | 
| 165 } | 187 } | 
| 166 } | 188 } | 
| (...skipping 27 matching lines...) Expand all Loading... | |
| 194 element.classList.add('breakpoint-hit'); | 216 element.classList.add('breakpoint-hit'); | 
| 195 this._highlightedElement = element; | 217 this._highlightedElement = element; | 
| 196 } | 218 } | 
| 197 | 219 | 
| 198 _restoreBreakpoints() { | 220 _restoreBreakpoints() { | 
| 199 var breakpoints = SDK.domDebuggerManager.xhrBreakpoints(); | 221 var breakpoints = SDK.domDebuggerManager.xhrBreakpoints(); | 
| 200 for (var url of breakpoints.keys()) | 222 for (var url of breakpoints.keys()) | 
| 201 this._setBreakpoint(url, breakpoints.get(url)); | 223 this._setBreakpoint(url, breakpoints.get(url)); | 
| 202 } | 224 } | 
| 203 }; | 225 }; | 
| OLD | NEW |