Skip to content

Commit e5229be

Browse files
committed
devtools: allow subscribeDebuggerEvents to be called multiple times
This fixes broken handling of reload events in intercom and broken 1.2.19 release. Also subscribeDebuggerEvents should not fail silently but throw instead.
1 parent 105f254 commit e5229be

File tree

3 files changed

+15
-17
lines changed

3 files changed

+15
-17
lines changed

resources/unpacked/devtools/front_end/dirac/dirac.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,8 @@ Object.assign(window.dirac, (function() {
164164
return loadLazyDirac().then(() => window.dirac.subscribeDebuggerEvents(...args));
165165
}
166166

167-
function unsubscribeDebuggerEvents() {
168-
return loadLazyDirac().then(() => window.dirac.unsubscribeDebuggerEvents());
167+
function unsubscribeDebuggerEvents(...args) {
168+
return loadLazyDirac().then(() => window.dirac.unsubscribeDebuggerEvents(...args));
169169
}
170170

171171
function addConsoleMessageToMainTarget(...args) {

resources/unpacked/devtools/front_end/dirac_lazy/dirac_lazy.js

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,14 @@ Object.assign(window.dirac, (function() {
128128
evalInContext(lookupDefaultContext(), code, silent, callback);
129129
}
130130

131-
let debuggerEventsUnsubscriber = null;
131+
let debuggerEventsUnsubscribers = new Map();
132132

133133
/**
134134
* @return {boolean}
135135
*/
136136
function subscribeDebuggerEvents(callback) {
137-
if (debuggerEventsUnsubscriber) {
138-
return false;
137+
if (debuggerEventsUnsubscribers.has(callback)) {
138+
throw new Error("subscribeDebuggerEvents called without prior unsubscribeDebuggerEvents for callback " + callback);
139139
}
140140
const globalObjectClearedHandler = (...args) => {
141141
callback("GlobalObjectCleared", ...args);
@@ -151,30 +151,27 @@ Object.assign(window.dirac, (function() {
151151
SDK.targetManager.addModelListener(SDK.DebuggerModel, SDK.DebuggerModel.Events.DebuggerPaused, debuggerPausedHandler, window.dirac);
152152
SDK.targetManager.addModelListener(SDK.DebuggerModel, SDK.DebuggerModel.Events.DebuggerResumed, debuggerResumedHandler, window.dirac);
153153

154-
/**
155-
* @return {boolean}
156-
*/
157-
debuggerEventsUnsubscriber = () => {
154+
debuggerEventsUnsubscribers.set(callback, () => {
158155
SDK.targetManager.removeModelListener(SDK.DebuggerModel, SDK.DebuggerModel.Events.GlobalObjectCleared, globalObjectClearedHandler, window.dirac);
159156
SDK.targetManager.removeModelListener(SDK.DebuggerModel, SDK.DebuggerModel.Events.DebuggerPaused, debuggerPausedHandler, window.dirac);
160157
SDK.targetManager.removeModelListener(SDK.DebuggerModel, SDK.DebuggerModel.Events.DebuggerResumed, debuggerResumedHandler, window.dirac);
161158
return true;
162-
};
159+
});
163160

164161
return true;
165162
}
166163

167164
/**
168165
* @return {boolean}
169166
*/
170-
function unsubscribeDebuggerEvents() {
171-
if (!debuggerEventsUnsubscriber) {
172-
return false;
167+
function unsubscribeDebuggerEvents(callback) {
168+
if (!debuggerEventsUnsubscribers.has(callback)) {
169+
throw new Error("unsubscribeDebuggerEvents called without prior subscribeDebuggerEvents for callback " + callback);
173170
}
174171

175-
const res = debuggerEventsUnsubscriber();
176-
debuggerEventsUnsubscriber = null;
177-
return res;
172+
const unsubscriber = debuggerEventsUnsubscribers.get(callback);
173+
debuggerEventsUnsubscribers.delete(callback);
174+
return unsubscriber();
178175
}
179176

180177
// --- console ----------------------------------------------------------------------------------------------------------

resources/unpacked/devtools/front_end/externs.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,9 +438,10 @@ var dirac = {
438438
*/
439439
subscribeDebuggerEvents: function(callback) {},
440440
/**
441+
* @param {?} callback
441442
* @return {boolean}
442443
*/
443-
unsubscribeDebuggerEvents: function() {},
444+
unsubscribeDebuggerEvents: function(callback) {},
444445

445446
/**
446447
* @param {?} callFrame

0 commit comments

Comments
 (0)