| 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 | 
|---|