OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 this._networkProject = networkProject; | 42 this._networkProject = networkProject; |
43 this._workspace = workspace; | 43 this._workspace = workspace; |
44 this._eventListeners = [ | 44 this._eventListeners = [ |
45 this._sourceMapManager.addEventListener( | 45 this._sourceMapManager.addEventListener( |
46 SDK.SourceMapManager.Events.SourceMapAttached, this._sourceMapAttached
, this), | 46 SDK.SourceMapManager.Events.SourceMapAttached, this._sourceMapAttached
, this), |
47 this._sourceMapManager.addEventListener( | 47 this._sourceMapManager.addEventListener( |
48 SDK.SourceMapManager.Events.SourceMapDetached, this._sourceMapDetached
, this), | 48 SDK.SourceMapManager.Events.SourceMapDetached, this._sourceMapDetached
, this), |
49 this._sourceMapManager.addEventListener( | 49 this._sourceMapManager.addEventListener( |
50 SDK.SourceMapManager.Events.SourceMapChanged, this._sourceMapChanged,
this) | 50 SDK.SourceMapManager.Events.SourceMapChanged, this._sourceMapChanged,
this) |
51 ]; | 51 ]; |
| 52 |
| 53 /** @type {!Multimap<string, !SDK.CSSStyleSheetHeader>} */ |
| 54 this._frameIdToHeaders = new Multimap(); |
52 } | 55 } |
53 | 56 |
54 /** | 57 /** |
55 * @param {?SDK.SourceMap} sourceMap | 58 * @param {?SDK.SourceMap} sourceMap |
56 */ | 59 */ |
57 _sourceMapAttachedForTest(sourceMap) { | 60 _sourceMapAttachedForTest(sourceMap) { |
58 } | 61 } |
59 | 62 |
60 /** | 63 /** |
61 * @param {!Common.Event} event | 64 * @param {!Common.Event} event |
62 */ | 65 */ |
63 _sourceMapAttached(event) { | 66 _sourceMapAttached(event) { |
64 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data); | 67 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data.client); |
65 var sourceMap = this._sourceMapManager.sourceMapForClient(header); | 68 var sourceMap = /** @type {!SDK.SourceMap} */ (event.data.sourceMap); |
| 69 if (this._frameIdToHeaders.has(header.frameId)) { |
| 70 this._frameIdToHeaders.set(header.frameId, header); |
| 71 this._sourceMapAttachedForTest(sourceMap); |
| 72 return; |
| 73 } |
| 74 this._frameIdToHeaders.set(header.frameId, header); |
| 75 |
66 for (var sassURL of sourceMap.sourceURLs()) { | 76 for (var sassURL of sourceMap.sourceURLs()) { |
67 var contentProvider = sourceMap.sourceContentProvider(sassURL, Common.reso
urceTypes.SourceMapStyleSheet); | 77 var contentProvider = sourceMap.sourceContentProvider(sassURL, Common.reso
urceTypes.SourceMapStyleSheet); |
68 var embeddedContent = sourceMap.embeddedContentByURL(sassURL); | 78 var embeddedContent = sourceMap.embeddedContentByURL(sassURL); |
69 var embeddedContentLength = typeof embeddedContent === 'string' ? embedded
Content.length : null; | 79 var embeddedContentLength = typeof embeddedContent === 'string' ? embedded
Content.length : null; |
70 this._networkProject.addSourceMapFile(contentProvider, header.frameId, fal
se, embeddedContentLength); | 80 this._networkProject.addSourceMapFile(contentProvider, header.frameId, fal
se, embeddedContentLength); |
71 } | 81 } |
72 Bindings.cssWorkspaceBinding.updateLocations(header); | 82 Bindings.cssWorkspaceBinding.updateLocations(header); |
73 this._sourceMapAttachedForTest(sourceMap); | 83 this._sourceMapAttachedForTest(sourceMap); |
74 } | 84 } |
75 | 85 |
76 /** | 86 /** |
77 * @param {!Common.Event} event | 87 * @param {!Common.Event} event |
78 */ | 88 */ |
79 _sourceMapDetached(event) { | 89 _sourceMapDetached(event) { |
80 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data); | 90 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data.client); |
| 91 this._frameIdToHeaders.remove(header.frameId, header); |
| 92 if (this._frameIdToHeaders.has(header.frameId)) |
| 93 return; |
| 94 var sourceMap = /** @type {!SDK.SourceMap} */ (event.data.sourceMap); |
| 95 for (var sassURL of sourceMap.sourceURLs()) |
| 96 this._networkProject.removeSourceMapFile(sassURL, header.frameId, false); |
81 Bindings.cssWorkspaceBinding.updateLocations(header); | 97 Bindings.cssWorkspaceBinding.updateLocations(header); |
82 } | 98 } |
83 | 99 |
84 /** | 100 /** |
85 * @param {!Common.Event} event | 101 * @param {!Common.Event} event |
86 */ | 102 */ |
87 _sourceMapChanged(event) { | 103 _sourceMapChanged(event) { |
88 var sourceMap = /** @type {!SDK.SourceMap} */ (event.data.sourceMap); | 104 var sourceMap = /** @type {!SDK.SourceMap} */ (event.data.sourceMap); |
89 var newSources = /** @type {!Map<string, string>} */ (event.data.newSources)
; | 105 var newSources = /** @type {!Map<string, string>} */ (event.data.newSources)
; |
90 var headers = this._sourceMapManager.clientsForSourceMap(sourceMap); | 106 var headers = this._sourceMapManager.clientsForSourceMap(sourceMap); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 var uiSourceCode = Bindings.NetworkProject.uiSourceCodeForStyleURL(this._wor
kspace, entry.sourceURL, header); | 139 var uiSourceCode = Bindings.NetworkProject.uiSourceCodeForStyleURL(this._wor
kspace, entry.sourceURL, header); |
124 if (!uiSourceCode) | 140 if (!uiSourceCode) |
125 return null; | 141 return null; |
126 return uiSourceCode.uiLocation(entry.sourceLineNumber || 0, entry.sourceColu
mnNumber); | 142 return uiSourceCode.uiLocation(entry.sourceLineNumber || 0, entry.sourceColu
mnNumber); |
127 } | 143 } |
128 | 144 |
129 dispose() { | 145 dispose() { |
130 Common.EventTarget.removeEventListeners(this._eventListeners); | 146 Common.EventTarget.removeEventListeners(this._eventListeners); |
131 } | 147 } |
132 }; | 148 }; |
OLD | NEW |