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 /** | 5 /** |
6 * @constructor | 6 * @constructor |
7 * @implements {WebInspector.TargetManager.Observer} | 7 * @implements {WebInspector.TargetManager.Observer} |
8 * @param {!WebInspector.TargetManager} targetManager | 8 * @param {!WebInspector.TargetManager} targetManager |
9 * @param {!WebInspector.Workspace} workspace | 9 * @param {!WebInspector.Workspace} workspace |
10 * @param {!WebInspector.NetworkMapping} networkMapping | 10 * @param {!WebInspector.NetworkMapping} networkMapping |
11 */ | 11 */ |
12 WebInspector.CSSWorkspaceBinding = function(targetManager, workspace, networkMap
ping) | 12 WebInspector.CSSWorkspaceBinding = function(targetManager, workspace, networkMap
ping) |
13 { | 13 { |
14 this._workspace = workspace; | 14 this._workspace = workspace; |
15 this._networkMapping = networkMapping; | 15 this._networkMapping = networkMapping; |
16 | 16 |
17 /** @type {!Map.<!WebInspector.CSSModel, !WebInspector.CSSWorkspaceBinding.T
argetInfo>} */ | 17 /** @type {!Map.<!WebInspector.CSSModel, !WebInspector.CSSWorkspaceBinding.T
argetInfo>} */ |
18 this._modelToTargetInfo = new Map(); | 18 this._modelToTargetInfo = new Map(); |
19 targetManager.observeTargets(this); | 19 targetManager.observeTargets(this); |
20 | |
21 targetManager.addModelListener(WebInspector.ResourceTreeModel, WebInspector.
ResourceTreeModel.Events.MainFrameNavigated, this._mainFrameCreatedOrNavigated,
this); | |
22 } | 20 } |
23 | 21 |
24 WebInspector.CSSWorkspaceBinding.prototype = { | 22 WebInspector.CSSWorkspaceBinding.prototype = { |
25 /** | 23 /** |
26 * @override | 24 * @override |
27 * @param {!WebInspector.Target} target | 25 * @param {!WebInspector.Target} target |
28 */ | 26 */ |
29 targetAdded: function(target) | 27 targetAdded: function(target) |
30 { | 28 { |
31 var cssModel = WebInspector.CSSModel.fromTarget(target); | 29 var cssModel = WebInspector.CSSModel.fromTarget(target); |
32 if (cssModel) | 30 if (cssModel) |
33 this._modelToTargetInfo.set(cssModel, new WebInspector.CSSWorkspaceB
inding.TargetInfo(cssModel, this._workspace, this._networkMapping)); | 31 this._modelToTargetInfo.set(cssModel, new WebInspector.CSSWorkspaceB
inding.TargetInfo(cssModel, this._workspace, this._networkMapping)); |
34 }, | 32 }, |
35 | 33 |
36 /** | 34 /** |
37 * @override | 35 * @override |
38 * @param {!WebInspector.Target} target | 36 * @param {!WebInspector.Target} target |
39 */ | 37 */ |
40 targetRemoved: function(target) | 38 targetRemoved: function(target) |
41 { | 39 { |
42 var cssModel = WebInspector.CSSModel.fromTarget(target); | 40 var cssModel = WebInspector.CSSModel.fromTarget(target); |
43 if (cssModel) | 41 if (cssModel) |
44 this._modelToTargetInfo.remove(cssModel)._dispose(); | 42 this._modelToTargetInfo.remove(cssModel)._dispose(); |
45 }, | 43 }, |
46 | 44 |
47 /** | 45 /** |
48 * @param {!WebInspector.CSSStyleSheetHeader} header | 46 * @param {!WebInspector.CSSStyleSheetHeader} header |
49 * @param {!WebInspector.CSSSourceMapping} mapping | 47 * @return {?WebInspector.CSSWorkspaceBinding.TargetInfo} |
50 */ | 48 */ |
51 pushSourceMapping: function(header, mapping) | 49 _targetInfo: function(header) |
52 { | 50 { |
53 this._ensureInfoForHeader(header)._pushSourceMapping(mapping); | 51 return this._modelToTargetInfo.get(header.cssModel()) || null; |
54 }, | 52 }, |
55 | 53 |
56 /** | 54 /** |
57 * @param {!WebInspector.CSSStyleSheetHeader} header | 55 * @param {!WebInspector.CSSStyleSheetHeader} header |
58 * @return {?WebInspector.CSSWorkspaceBinding.HeaderInfo} | 56 * @return {!WebInspector.CSSWorkspaceBinding.TargetInfo} |
59 */ | 57 */ |
60 _headerInfo: function(header) | 58 _ensureTargetInfo: function(header) |
61 { | |
62 var map = this._modelToTargetInfo.get(header.cssModel()); | |
63 return map._headerInfo(header.id) || null; | |
64 }, | |
65 | |
66 /** | |
67 * @param {!WebInspector.CSSStyleSheetHeader} header | |
68 * @return {!WebInspector.CSSWorkspaceBinding.HeaderInfo} | |
69 */ | |
70 _ensureInfoForHeader: function(header) | |
71 { | 59 { |
72 var targetInfo = this._modelToTargetInfo.get(header.cssModel()); | 60 var targetInfo = this._modelToTargetInfo.get(header.cssModel()); |
73 if (!targetInfo) { | 61 if (!targetInfo) { |
74 targetInfo = new WebInspector.CSSWorkspaceBinding.TargetInfo(header.
cssModel(), this._workspace, this._networkMapping); | 62 targetInfo = new WebInspector.CSSWorkspaceBinding.TargetInfo(header.
cssModel(), this._workspace, this._networkMapping); |
75 this._modelToTargetInfo.set(header.cssModel(), targetInfo); | 63 this._modelToTargetInfo.set(header.cssModel(), targetInfo); |
76 } | 64 } |
77 return targetInfo._ensureInfoForHeader(header); | 65 return targetInfo; |
78 }, | 66 }, |
79 | 67 |
80 /** | 68 /** |
81 * @param {!WebInspector.Event} event | |
82 */ | |
83 _mainFrameCreatedOrNavigated: function(event) | |
84 { | |
85 var target = /** @type {!WebInspector.ResourceTreeModel} */ (event.targe
t).target(); | |
86 var cssModel = WebInspector.CSSModel.fromTarget(target); | |
87 if (cssModel) | |
88 this._modelToTargetInfo.get(cssModel)._reset(); | |
89 }, | |
90 | |
91 /** | |
92 * @param {!WebInspector.CSSStyleSheetHeader} header | 69 * @param {!WebInspector.CSSStyleSheetHeader} header |
93 */ | 70 */ |
94 updateLocations: function(header) | 71 updateLocations: function(header) |
95 { | 72 { |
96 var info = this._headerInfo(header); | 73 var targetInfo = this._targetInfo(header); |
97 if (info) | 74 if (targetInfo) |
98 info._updateLocations(); | 75 targetInfo._updateLocations(header); |
99 }, | 76 }, |
100 | 77 |
101 /** | 78 /** |
102 * @param {!WebInspector.CSSLocation} rawLocation | 79 * @param {!WebInspector.CSSLocation} rawLocation |
103 * @param {function(!WebInspector.LiveLocation)} updateDelegate | 80 * @param {function(!WebInspector.LiveLocation)} updateDelegate |
104 * @param {!WebInspector.LiveLocationPool} locationPool | 81 * @param {!WebInspector.LiveLocationPool} locationPool |
105 * @return {!WebInspector.CSSWorkspaceBinding.LiveLocation} | 82 * @return {!WebInspector.CSSWorkspaceBinding.LiveLocation} |
106 */ | 83 */ |
107 createLiveLocation: function(rawLocation, updateDelegate, locationPool) | 84 createLiveLocation: function(rawLocation, updateDelegate, locationPool) |
108 { | 85 { |
109 var header = rawLocation.styleSheetId ? rawLocation.cssModel().styleShee
tHeaderForId(rawLocation.styleSheetId) : null; | 86 var header = rawLocation.styleSheetId ? rawLocation.cssModel().styleShee
tHeaderForId(rawLocation.styleSheetId) : null; |
110 return new WebInspector.CSSWorkspaceBinding.LiveLocation(rawLocation.css
Model(), header, rawLocation, this, updateDelegate, locationPool); | 87 return new WebInspector.CSSWorkspaceBinding.LiveLocation(rawLocation.css
Model(), header, rawLocation, this, updateDelegate, locationPool); |
111 }, | 88 }, |
112 | 89 |
113 /** | 90 /** |
114 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location | 91 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location |
115 */ | 92 */ |
116 _addLiveLocation: function(location) | 93 _addLiveLocation: function(location) |
117 { | 94 { |
118 this._ensureInfoForHeader(location._header)._addLocation(location); | 95 this._ensureTargetInfo(location._header)._addLocation(location); |
119 }, | 96 }, |
120 | 97 |
121 /** | 98 /** |
122 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location | 99 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location |
123 */ | 100 */ |
124 _removeLiveLocation: function(location) | 101 _removeLiveLocation: function(location) |
125 { | 102 { |
126 var info = this._headerInfo(location._header); | 103 var targetInfo = this._targetInfo(location._header); |
127 if (info) | 104 if (targetInfo) |
128 info._removeLocation(location); | 105 targetInfo._removeLocation(location); |
129 }, | 106 }, |
130 | 107 |
131 /** | 108 /** |
132 * @param {!WebInspector.CSSProperty} cssProperty | 109 * @param {!WebInspector.CSSProperty} cssProperty |
133 * @param {boolean} forName | 110 * @param {boolean} forName |
134 * @return {?WebInspector.UILocation} | 111 * @return {?WebInspector.UILocation} |
135 */ | 112 */ |
136 propertyUILocation: function(cssProperty, forName) | 113 propertyUILocation: function(cssProperty, forName) |
137 { | 114 { |
138 var style = cssProperty.ownerStyle; | 115 var style = cssProperty.ownerStyle; |
(...skipping 17 matching lines...) Expand all Loading... |
156 * @param {?WebInspector.CSSLocation} rawLocation | 133 * @param {?WebInspector.CSSLocation} rawLocation |
157 * @return {?WebInspector.UILocation} | 134 * @return {?WebInspector.UILocation} |
158 */ | 135 */ |
159 rawLocationToUILocation: function(rawLocation) | 136 rawLocationToUILocation: function(rawLocation) |
160 { | 137 { |
161 if (!rawLocation) | 138 if (!rawLocation) |
162 return null; | 139 return null; |
163 var header = rawLocation.cssModel().styleSheetHeaderForId(rawLocation.st
yleSheetId); | 140 var header = rawLocation.cssModel().styleSheetHeaderForId(rawLocation.st
yleSheetId); |
164 if (!header) | 141 if (!header) |
165 return null; | 142 return null; |
166 var info = this._headerInfo(header); | 143 var targetInfo = this._targetInfo(header); |
167 return info ? info._rawLocationToUILocation(rawLocation.lineNumber, rawL
ocation.columnNumber) : null; | 144 return targetInfo ? targetInfo._rawLocationToUILocation(header, rawLocat
ion.lineNumber, rawLocation.columnNumber) : null; |
168 } | 145 } |
169 } | 146 } |
170 | 147 |
171 /** | 148 /** |
172 * @constructor | 149 * @constructor |
173 * @param {!WebInspector.CSSModel} cssModel | 150 * @param {!WebInspector.CSSModel} cssModel |
174 * @param {!WebInspector.Workspace} workspace | 151 * @param {!WebInspector.Workspace} workspace |
175 * @param {!WebInspector.NetworkMapping} networkMapping | 152 * @param {!WebInspector.NetworkMapping} networkMapping |
176 */ | 153 */ |
177 WebInspector.CSSWorkspaceBinding.TargetInfo = function(cssModel, workspace, netw
orkMapping) | 154 WebInspector.CSSWorkspaceBinding.TargetInfo = function(cssModel, workspace, netw
orkMapping) |
178 { | 155 { |
179 this._cssModel = cssModel; | 156 this._cssModel = cssModel; |
180 this._stylesSourceMapping = new WebInspector.StylesSourceMapping(cssModel, w
orkspace, networkMapping); | 157 this._stylesSourceMapping = new WebInspector.StylesSourceMapping(cssModel, w
orkspace, networkMapping); |
181 this._sassSourceMapping = new WebInspector.SASSSourceMapping(cssModel, netwo
rkMapping, WebInspector.NetworkProject.forTarget(cssModel.target())); | 158 this._sassSourceMapping = new WebInspector.SASSSourceMapping(cssModel, netwo
rkMapping, WebInspector.NetworkProject.forTarget(cssModel.target())); |
182 | 159 |
183 /** @type {!Map.<string, !WebInspector.CSSWorkspaceBinding.HeaderInfo>} */ | 160 /** @type {!Multimap<!WebInspector.CSSStyleSheetHeader, !WebInspector.LiveLo
cation>} */ |
184 this._headerInfoById = new Map(); | 161 this._locations = new Multimap(); |
185 | 162 |
186 cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetAdded, this
._styleSheetAdded, this); | 163 cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetAdded, this
._styleSheetAdded, this); |
187 cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetRemoved, th
is._styleSheetRemoved, this); | 164 cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetRemoved, th
is._styleSheetRemoved, this); |
188 } | 165 } |
189 | 166 |
190 WebInspector.CSSWorkspaceBinding.TargetInfo.prototype = { | 167 WebInspector.CSSWorkspaceBinding.TargetInfo.prototype = { |
191 /** | 168 /** |
192 * @param {!WebInspector.Event} event | 169 * @param {!WebInspector.Event} event |
193 */ | 170 */ |
194 _styleSheetAdded: function(event) | 171 _styleSheetAdded: function(event) |
195 { | 172 { |
196 var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.dat
a); | 173 var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.dat
a); |
197 this._stylesSourceMapping.addHeader(header); | 174 this._stylesSourceMapping.addHeader(header); |
198 this._sassSourceMapping.addHeader(header); | 175 this._sassSourceMapping.addHeader(header); |
199 }, | 176 }, |
200 | 177 |
201 /** | 178 /** |
202 * @param {!WebInspector.Event} event | 179 * @param {!WebInspector.Event} event |
203 */ | 180 */ |
204 _styleSheetRemoved: function(event) | 181 _styleSheetRemoved: function(event) |
205 { | 182 { |
206 var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.dat
a); | 183 var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.dat
a); |
207 this._stylesSourceMapping.removeHeader(header); | 184 this._stylesSourceMapping.removeHeader(header); |
208 this._sassSourceMapping.removeHeader(header); | 185 this._sassSourceMapping.removeHeader(header); |
209 this._headerInfoById.remove(header.id); | |
210 }, | 186 }, |
211 | 187 |
212 /** | 188 /** |
213 * @param {!CSSAgent.StyleSheetId} id | 189 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location |
214 */ | 190 */ |
215 _headerInfo: function(id) | 191 _addLocation: function(location) |
216 { | 192 { |
217 return this._headerInfoById.get(id); | 193 var header = location._header; |
| 194 this._locations.set(header, location); |
| 195 location.update(); |
| 196 }, |
| 197 |
| 198 /** |
| 199 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location |
| 200 */ |
| 201 _removeLocation: function(location) |
| 202 { |
| 203 this._locations.remove(location._header, location); |
218 }, | 204 }, |
219 | 205 |
220 /** | 206 /** |
221 * @param {!WebInspector.CSSStyleSheetHeader} header | 207 * @param {!WebInspector.CSSStyleSheetHeader} header |
222 * @return {!WebInspector.CSSWorkspaceBinding.HeaderInfo} | |
223 */ | 208 */ |
224 _ensureInfoForHeader: function(header) | 209 _updateLocations: function(header) |
225 { | 210 { |
226 var info = this._headerInfoById.get(header.id); | 211 for (var location of this._locations.get(header)) |
227 if (!info) { | 212 location.update(); |
228 info = new WebInspector.CSSWorkspaceBinding.HeaderInfo(header); | 213 }, |
229 this._headerInfoById.set(header.id, info); | 214 |
230 } | 215 /** |
231 return info; | 216 * @param {!WebInspector.CSSStyleSheetHeader} header |
| 217 * @param {number} lineNumber |
| 218 * @param {number=} columnNumber |
| 219 * @return {?WebInspector.UILocation} |
| 220 */ |
| 221 _rawLocationToUILocation: function(header, lineNumber, columnNumber) |
| 222 { |
| 223 var rawLocation = new WebInspector.CSSLocation(header, lineNumber, colum
nNumber); |
| 224 var uiLocation = null; |
| 225 uiLocation = uiLocation || this._sassSourceMapping.rawLocationToUILocati
on(rawLocation); |
| 226 uiLocation = uiLocation || this._stylesSourceMapping.rawLocationToUILoca
tion(rawLocation); |
| 227 return uiLocation; |
232 }, | 228 }, |
233 | 229 |
234 _dispose: function() | 230 _dispose: function() |
235 { | 231 { |
236 this._reset(); | |
237 this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleShe
etAdded, this._styleSheetAdded, this); | 232 this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleShe
etAdded, this._styleSheetAdded, this); |
238 this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleShe
etRemoved, this._styleSheetRemoved, this); | 233 this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleShe
etRemoved, this._styleSheetRemoved, this); |
239 }, | |
240 | |
241 _reset: function() | |
242 { | |
243 this._headerInfoById.clear(); | |
244 } | 234 } |
245 } | 235 } |
246 | 236 |
247 /** | |
248 * @constructor | |
249 * @param {!WebInspector.CSSStyleSheetHeader} header | |
250 */ | |
251 WebInspector.CSSWorkspaceBinding.HeaderInfo = function(header) | |
252 { | |
253 this._header = header; | |
254 | |
255 /** @type {!Array.<!WebInspector.CSSSourceMapping>} */ | |
256 this._sourceMappings = []; | |
257 | |
258 /** @type {!Set.<!WebInspector.LiveLocation>} */ | |
259 this._locations = new Set(); | |
260 } | |
261 | |
262 WebInspector.CSSWorkspaceBinding.HeaderInfo.prototype = { | |
263 /** | |
264 * @param {!WebInspector.LiveLocation} location | |
265 */ | |
266 _addLocation: function(location) | |
267 { | |
268 this._locations.add(location); | |
269 location.update(); | |
270 }, | |
271 | |
272 /** | |
273 * @param {!WebInspector.LiveLocation} location | |
274 */ | |
275 _removeLocation: function(location) | |
276 { | |
277 this._locations.delete(location); | |
278 }, | |
279 | |
280 _updateLocations: function() | |
281 { | |
282 var items = this._locations.valuesArray(); | |
283 for (var i = 0; i < items.length; ++i) | |
284 items[i].update(); | |
285 }, | |
286 | |
287 /** | |
288 * @param {number} lineNumber | |
289 * @param {number=} columnNumber | |
290 * @return {?WebInspector.UILocation} | |
291 */ | |
292 _rawLocationToUILocation: function(lineNumber, columnNumber) | |
293 { | |
294 var uiLocation = null; | |
295 var rawLocation = new WebInspector.CSSLocation(this._header, lineNumber,
columnNumber); | |
296 for (var i = this._sourceMappings.length - 1; !uiLocation && i >= 0; --i
) | |
297 uiLocation = this._sourceMappings[i].rawLocationToUILocation(rawLoca
tion); | |
298 return uiLocation; | |
299 }, | |
300 | |
301 /** | |
302 * @param {!WebInspector.CSSSourceMapping} sourceMapping | |
303 */ | |
304 _pushSourceMapping: function(sourceMapping) | |
305 { | |
306 if (this._sourceMappings.indexOf(sourceMapping) !== -1) | |
307 return; | |
308 this._sourceMappings.push(sourceMapping); | |
309 this._updateLocations(); | |
310 } | |
311 } | |
312 | |
313 /** | 237 /** |
314 * @constructor | 238 * @constructor |
315 * @extends {WebInspector.LiveLocationWithPool} | 239 * @extends {WebInspector.LiveLocationWithPool} |
316 * @param {!WebInspector.CSSModel} cssModel | 240 * @param {!WebInspector.CSSModel} cssModel |
317 * @param {?WebInspector.CSSStyleSheetHeader} header | 241 * @param {?WebInspector.CSSStyleSheetHeader} header |
318 * @param {!WebInspector.CSSLocation} rawLocation | 242 * @param {!WebInspector.CSSLocation} rawLocation |
319 * @param {!WebInspector.CSSWorkspaceBinding} binding | 243 * @param {!WebInspector.CSSWorkspaceBinding} binding |
320 * @param {function(!WebInspector.LiveLocation)} updateDelegate | 244 * @param {function(!WebInspector.LiveLocation)} updateDelegate |
321 * @param {!WebInspector.LiveLocationPool} locationPool | 245 * @param {!WebInspector.LiveLocationPool} locationPool |
322 */ | 246 */ |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
376 }, | 300 }, |
377 | 301 |
378 /** | 302 /** |
379 * @override | 303 * @override |
380 * @return {?WebInspector.UILocation} | 304 * @return {?WebInspector.UILocation} |
381 */ | 305 */ |
382 uiLocation: function() | 306 uiLocation: function() |
383 { | 307 { |
384 var cssLocation = this._rawLocation; | 308 var cssLocation = this._rawLocation; |
385 if (this._header) { | 309 if (this._header) { |
386 var headerInfo = this._binding._headerInfo(this._header); | 310 var targetInfo = this._binding._targetInfo(this._header); |
387 return headerInfo._rawLocationToUILocation(cssLocation.lineNumber, c
ssLocation.columnNumber); | 311 return targetInfo._rawLocationToUILocation(this._header, cssLocation
.lineNumber, cssLocation.columnNumber); |
388 } | 312 } |
389 var uiSourceCode = this._binding._networkMapping.uiSourceCodeForStyleURL
(cssLocation.url, cssLocation.header()); | 313 var uiSourceCode = this._binding._networkMapping.uiSourceCodeForStyleURL
(cssLocation.url, cssLocation.header()); |
390 if (!uiSourceCode) | 314 if (!uiSourceCode) |
391 return null; | 315 return null; |
392 return uiSourceCode.uiLocation(cssLocation.lineNumber, cssLocation.colum
nNumber); | 316 return uiSourceCode.uiLocation(cssLocation.lineNumber, cssLocation.colum
nNumber); |
393 }, | 317 }, |
394 | 318 |
395 /** | 319 /** |
396 * @override | 320 * @override |
397 */ | 321 */ |
(...skipping 12 matching lines...) Expand all Loading... |
410 */ | 334 */ |
411 isBlackboxed: function() | 335 isBlackboxed: function() |
412 { | 336 { |
413 return false; | 337 return false; |
414 }, | 338 }, |
415 | 339 |
416 __proto__: WebInspector.LiveLocationWithPool.prototype | 340 __proto__: WebInspector.LiveLocationWithPool.prototype |
417 } | 341 } |
418 | 342 |
419 /** | 343 /** |
420 * @interface | |
421 */ | |
422 WebInspector.CSSSourceMapping = function() | |
423 { | |
424 } | |
425 | |
426 WebInspector.CSSSourceMapping.prototype = { | |
427 /** | |
428 * @param {!WebInspector.CSSLocation} rawLocation | |
429 * @return {?WebInspector.UILocation} | |
430 */ | |
431 rawLocationToUILocation: function(rawLocation) { }, | |
432 | |
433 /** | |
434 * @param {!WebInspector.UISourceCode} uiSourceCode | |
435 * @param {number} lineNumber | |
436 * @param {number} columnNumber | |
437 * @return {?WebInspector.CSSLocation} | |
438 */ | |
439 uiLocationToRawLocation: function(uiSourceCode, lineNumber, columnNumber) {
}, | |
440 | |
441 /** | |
442 * @return {boolean} | |
443 */ | |
444 isIdentity: function() { }, | |
445 | |
446 /** | |
447 * @param {!WebInspector.UISourceCode} uiSourceCode | |
448 * @param {number} lineNumber | |
449 * @return {boolean} | |
450 */ | |
451 uiLineHasMapping: function(uiSourceCode, lineNumber) { } | |
452 } | |
453 | |
454 /** | |
455 * @type {!WebInspector.CSSWorkspaceBinding} | 344 * @type {!WebInspector.CSSWorkspaceBinding} |
456 */ | 345 */ |
457 WebInspector.cssWorkspaceBinding; | 346 WebInspector.cssWorkspaceBinding; |
OLD | NEW |