Changeset 172412 in webkit
- Timestamp:
- Aug 11, 2014 2:25:34 PM (10 years ago)
- Location:
- trunk/Source/WebInspectorUI
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebInspectorUI/ChangeLog
r172403 r172412 1 2014-08-08 Brian J. Burg <burg@cs.washington.edu> 2 3 Web Inspector: DebuggerManager commands should return promises 4 https://bugs.webkit.org/show_bug.cgi?id=135690 5 6 Reviewed by Timothy Hatcher. 7 8 Convert the existing debugger commands to return promises. This 9 requires separately waiting for protocol command's promise to be 10 fulfilled, as well as waiting for the appropriate DebuggerManager 11 event. If the protocol command promise is rejected, tear down the 12 single-fire event listener. 13 14 * UserInterface/Controllers/DebuggerManager.js: 15 (WebInspector.DebuggerManager.prototype.pause): 16 (WebInspector.DebuggerManager.prototype.resume): 17 (WebInspector.DebuggerManager.prototype.stepOver): 18 (WebInspector.DebuggerManager.prototype.stepInto): 19 (WebInspector.DebuggerManager.prototype.stepOut): 20 * UserInterface/Controllers/ReplayManager.js: Use the promise-based API. 21 (WebInspector.ReplayManager.prototype._suppressBreakpointsAndResumeIfNeeded): 22 1 23 2014-08-11 Timothy Hatcher <timothy@apple.com> 2 24 -
trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js
r172333 r172412 143 143 pause: function() 144 144 { 145 DebuggerAgent.pause(); 145 if (this._paused) 146 return Promise.resolve(); 147 148 var listener = new WebInspector.EventListener(this, true); 149 150 var managerResult = new Promise(function(resolve, reject) { 151 listener.connect(WebInspector.debuggerManager, WebInspector.DebuggerManager.Event.Paused, resolve); 152 }); 153 154 var protocolResult = DebuggerAgent.pause() 155 .catch(function(error) { 156 listener.disconnect(); 157 console.error("DebuggerManager.pause failed: ", error); 158 throw error; 159 }); 160 161 return Promise.all([managerResult, protocolResult]); 146 162 }, 147 163 148 164 resume: function() 149 165 { 150 DebuggerAgent.resume(); 166 if (!this._paused) 167 return Promise.resolve(); 168 169 var listener = new WebInspector.EventListener(this, true); 170 171 var managerResult = new Promise(function(resolve, reject) { 172 listener.connect(WebInspector.debuggerManager, WebInspector.DebuggerManager.Event.Resumed, resolve); 173 }); 174 175 var protocolResult = DebuggerAgent.resume() 176 .catch(function(error) { 177 listener.disconnect(); 178 console.error("DebuggerManager.resume failed: ", error); 179 throw error; 180 }); 181 182 return Promise.all([managerResult, protocolResult]); 151 183 }, 152 184 153 185 stepOver: function() 154 186 { 155 DebuggerAgent.stepOver(); 187 if (!this._paused) 188 return Promise.reject(new Error("Cannot step over because debugger is not paused.")); 189 190 var listener = new WebInspector.EventListener(this, true); 191 192 var managerResult = new Promise(function(resolve, reject) { 193 listener.connect(WebInspector.debuggerManager, WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange, resolve); 194 }); 195 196 var protocolResult = DebuggerAgent.stepOver() 197 .catch(function(error) { 198 listener.disconnect(); 199 console.error("DebuggerManager.stepOver failed: ", error); 200 throw error; 201 }); 202 203 return Promise.all([managerResult, protocolResult]); 156 204 }, 157 205 158 206 stepInto: function() 159 207 { 160 DebuggerAgent.stepInto(); 208 if (!this._paused) 209 return Promise.reject(new Error("Cannot step into because debugger is not paused.")); 210 211 var listener = new WebInspector.EventListener(this, true); 212 213 var managerResult = new Promise(function(resolve, reject) { 214 listener.connect(WebInspector.debuggerManager, WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange, resolve); 215 }); 216 217 var protocolResult = DebuggerAgent.stepInto() 218 .catch(function(error) { 219 listener.disconnect(); 220 console.error("DebuggerManager.stepInto failed: ", error); 221 throw error; 222 }); 223 224 return Promise.all([managerResult, protocolResult]); 161 225 }, 162 226 163 227 stepOut: function() 164 228 { 165 DebuggerAgent.stepOut(); 229 if (!this._paused) 230 return Promise.reject(new Error("Cannot step out because debugger is not paused.")); 231 232 var listener = new WebInspector.EventListener(this, true); 233 234 var managerResult = new Promise(function(resolve, reject) { 235 listener.connect(WebInspector.debuggerManager, WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange, resolve); 236 }); 237 238 var protocolResult = DebuggerAgent.stepOut() 239 .catch(function(error) { 240 listener.disconnect(); 241 console.error("DebuggerManager.stepOut failed: ", error); 242 throw error; 243 }); 244 245 return Promise.all([managerResult, protocolResult]); 166 246 }, 167 247 -
trunk/Source/WebInspectorUI/UserInterface/Controllers/ReplayManager.js
r172203 r172412 676 676 manager._breakpointsWereSuppressed = WebInspector.debuggerManager.breakpointsEnabled; 677 677 WebInspector.debuggerManager.breakpointsEnabled = false; 678 if (!WebInspector.debuggerManager.paused) 679 return resolve(); 680 681 WebInspector.debuggerManager.resume(); 682 WebInspector.debuggerManager.addSingleFireEventListener(WebInspector.DebuggerManager.Event.Resumed, resolve); 678 679 return WebInspector.debuggerManager.resume(); 683 680 }); 684 681 }
Note: See TracChangeset
for help on using the changeset viewer.