mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 20:35:50 +00:00
Bug 917583 - part 2: request definitionSite before adding listeners to the view; r=vporof
This commit is contained in:
parent
9379e40d2e
commit
b02656d66f
@ -1398,13 +1398,37 @@ EventListeners.prototype = {
|
||||
*/
|
||||
scheduleEventListenersFetch: function() {
|
||||
let getListeners = aCallback => gThreadClient.eventListeners(aResponse => {
|
||||
this._onEventListeners(aResponse);
|
||||
if (aResponse.error) {
|
||||
let msg = "Error getting event listeners: " + aResponse.message;
|
||||
DevToolsUtils.reportException("scheduleEventListenersFetch", msg);
|
||||
return;
|
||||
}
|
||||
|
||||
promise.all(aResponse.listeners.map(listener => {
|
||||
const deferred = promise.defer();
|
||||
|
||||
gThreadClient.pauseGrip(listener.function).getDefinitionSite(aResponse => {
|
||||
if (aResponse.error) {
|
||||
const msg = "Error getting function definition site: " + aResponse.message;
|
||||
DevToolsUtils.reportException("scheduleEventListenersFetch", msg);
|
||||
deferred.reject(msg);
|
||||
return;
|
||||
}
|
||||
|
||||
listener.function.url = aResponse.url;
|
||||
deferred.resolve(listener);
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
})).then(listeners => {
|
||||
this._onEventListeners(listeners);
|
||||
|
||||
// Notify that event listeners were fetched and shown in the view,
|
||||
// and callback to resume the active thread if necessary.
|
||||
window.emit(EVENTS.EVENT_LISTENERS_FETCHED);
|
||||
aCallback && aCallback();
|
||||
});
|
||||
});
|
||||
|
||||
// Make sure we're not sending a batch of closely repeated requests.
|
||||
// This can easily happen whenever new sources are fetched.
|
||||
@ -1418,18 +1442,11 @@ EventListeners.prototype = {
|
||||
},
|
||||
|
||||
/**
|
||||
* Callback for the debugger's active thread eventListeners() method.
|
||||
* Callback for a debugger's successful active thread eventListeners() call.
|
||||
*/
|
||||
_onEventListeners: function(aResponse) {
|
||||
if (aResponse.error) {
|
||||
let msg = "Error getting event listeners: " + aResponse.message;
|
||||
Cu.reportError(msg);
|
||||
dumpn(msg);
|
||||
return;
|
||||
}
|
||||
|
||||
_onEventListeners: function(aListeners) {
|
||||
// Add all the listeners in the debugger view event linsteners container.
|
||||
for (let listener of aResponse.listeners) {
|
||||
for (let listener of aListeners) {
|
||||
DebuggerView.EventListeners.addListener(listener, { staged: true });
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user