OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 {SDK.TargetManager.Observer} | 5 * @implements {SDK.TargetManager.Observer} |
6 * @unrestricted | 6 * @unrestricted |
7 */ | 7 */ |
8 Bindings.BlackboxManager = class { | 8 Bindings.BlackboxManager = class { |
9 /** | 9 /** |
10 * @param {!Bindings.DebuggerWorkspaceBinding} debuggerWorkspaceBinding | 10 * @param {!Bindings.DebuggerWorkspaceBinding} debuggerWorkspaceBinding |
11 */ | 11 */ |
12 constructor(debuggerWorkspaceBinding) { | 12 constructor(debuggerWorkspaceBinding) { |
13 this._debuggerWorkspaceBinding = debuggerWorkspaceBinding; | 13 this._debuggerWorkspaceBinding = debuggerWorkspaceBinding; |
14 | 14 |
15 SDK.targetManager.addModelListener( | 15 SDK.targetManager.addModelListener( |
16 SDK.DebuggerModel, SDK.DebuggerModel.Events.ParsedScriptSource, this._pa
rsedScriptSource, this); | 16 SDK.DebuggerModel, SDK.DebuggerModel.Events.ParsedScriptSource, this._pa
rsedScriptSource, this); |
17 SDK.targetManager.addModelListener( | 17 SDK.targetManager.addModelListener( |
18 SDK.DebuggerModel, SDK.DebuggerModel.Events.GlobalObjectCleared, this._g
lobalObjectCleared, this); | 18 SDK.DebuggerModel, SDK.DebuggerModel.Events.GlobalObjectCleared, this._g
lobalObjectCleared, this); |
19 Common.moduleSetting('skipStackFramesPattern').addChangeListener(this._patte
rnChanged.bind(this)); | 19 Common.moduleSetting('skipStackFramesPattern').addChangeListener(this._patte
rnChanged.bind(this)); |
20 Common.moduleSetting('skipContentScripts').addChangeListener(this._patternCh
anged.bind(this)); | 20 Common.moduleSetting('skipContentScripts').addChangeListener(this._patternCh
anged.bind(this)); |
21 | 21 |
| 22 /** @type {!Set<function()>} */ |
| 23 this._listeners = new Set(); |
| 24 |
22 /** @type {!Map<!SDK.DebuggerModel, !Map<string, !Array<!Protocol.Debugger.S
criptPosition>>>} */ | 25 /** @type {!Map<!SDK.DebuggerModel, !Map<string, !Array<!Protocol.Debugger.S
criptPosition>>>} */ |
23 this._debuggerModelData = new Map(); | 26 this._debuggerModelData = new Map(); |
24 /** @type {!Map<string, boolean>} */ | 27 /** @type {!Map<string, boolean>} */ |
25 this._isBlackboxedURLCache = new Map(); | 28 this._isBlackboxedURLCache = new Map(); |
26 | 29 |
27 SDK.targetManager.observeTargets(this); | 30 SDK.targetManager.observeTargets(this); |
28 } | 31 } |
29 | 32 |
30 /** | 33 /** |
31 * @param {function(!Common.Event)} listener | 34 * @param {function()} listener |
32 * @param {!Object=} thisObject | |
33 */ | 35 */ |
34 addChangeListener(listener, thisObject) { | 36 addChangeListener(listener) { |
35 Common.moduleSetting('skipStackFramesPattern').addChangeListener(listener, t
hisObject); | 37 this._listeners.add(listener); |
36 } | 38 } |
37 | 39 |
38 /** | 40 /** |
39 * @param {function(!Common.Event)} listener | 41 * @param {function()} listener |
40 * @param {!Object=} thisObject | |
41 */ | 42 */ |
42 removeChangeListener(listener, thisObject) { | 43 removeChangeListener(listener) { |
43 Common.moduleSetting('skipStackFramesPattern').removeChangeListener(listener
, thisObject); | 44 this._listeners.delete(listener); |
44 } | 45 } |
45 | 46 |
46 /** | 47 /** |
47 * @override | 48 * @override |
48 * @param {!SDK.Target} target | 49 * @param {!SDK.Target} target |
49 */ | 50 */ |
50 targetAdded(target) { | 51 targetAdded(target) { |
51 var debuggerModel = SDK.DebuggerModel.fromTarget(target); | 52 var debuggerModel = SDK.DebuggerModel.fromTarget(target); |
52 if (debuggerModel) | 53 if (debuggerModel) |
53 this._setBlackboxPatterns(debuggerModel); | 54 this._setBlackboxPatterns(debuggerModel); |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 | 279 |
279 /** @type {!Array<!Promise>} */ | 280 /** @type {!Array<!Promise>} */ |
280 var promises = []; | 281 var promises = []; |
281 for (var debuggerModel of SDK.DebuggerModel.instances()) { | 282 for (var debuggerModel of SDK.DebuggerModel.instances()) { |
282 promises.push(this._setBlackboxPatterns(debuggerModel)); | 283 promises.push(this._setBlackboxPatterns(debuggerModel)); |
283 for (var scriptId in debuggerModel.scripts) { | 284 for (var scriptId in debuggerModel.scripts) { |
284 var script = debuggerModel.scripts[scriptId]; | 285 var script = debuggerModel.scripts[scriptId]; |
285 promises.push(this._addScript(script).then(loadSourceMap.bind(this, scri
pt))); | 286 promises.push(this._addScript(script).then(loadSourceMap.bind(this, scri
pt))); |
286 } | 287 } |
287 } | 288 } |
288 Promise.all(promises).then(this._patternChangeFinishedForTests.bind(this)); | 289 Promise.all(promises).then(() => { |
| 290 var listeners = Array.from(this._listeners); |
| 291 for (var listener of listeners) |
| 292 listener(); |
| 293 this._patternChangeFinishedForTests(); |
| 294 }); |
289 | 295 |
290 /** | 296 /** |
291 * @param {!SDK.Script} script | 297 * @param {!SDK.Script} script |
292 * @return {!Promise<undefined>} | 298 * @return {!Promise<undefined>} |
293 * @this {Bindings.BlackboxManager} | 299 * @this {Bindings.BlackboxManager} |
294 */ | 300 */ |
295 function loadSourceMap(script) { | 301 function loadSourceMap(script) { |
296 return this.sourceMapLoaded(script, this._debuggerWorkspaceBinding.sourceM
apForScript(script)); | 302 return this.sourceMapLoaded(script, this._debuggerWorkspaceBinding.sourceM
apForScript(script)); |
297 } | 303 } |
298 } | 304 } |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 if (scheme === 'chrome-extension') | 432 if (scheme === 'chrome-extension') |
427 prefix += parsedURL.host + '\\b'; | 433 prefix += parsedURL.host + '\\b'; |
428 prefix += '.*'; | 434 prefix += '.*'; |
429 } | 435 } |
430 return prefix + name.escapeForRegExp() + (url.endsWith(name) ? '$' : '\\b'); | 436 return prefix + name.escapeForRegExp() + (url.endsWith(name) ? '$' : '\\b'); |
431 } | 437 } |
432 }; | 438 }; |
433 | 439 |
434 /** @type {!Bindings.BlackboxManager} */ | 440 /** @type {!Bindings.BlackboxManager} */ |
435 Bindings.blackboxManager; | 441 Bindings.blackboxManager; |
OLD | NEW |