Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1843)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/bindings/CSSWorkspaceBinding.js

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
5 /** 4 /**
6 * @constructor
7 * @implements {WebInspector.TargetManager.Observer} 5 * @implements {WebInspector.TargetManager.Observer}
8 * @param {!WebInspector.TargetManager} targetManager 6 * @unrestricted
9 * @param {!WebInspector.Workspace} workspace
10 * @param {!WebInspector.NetworkMapping} networkMapping
11 */ 7 */
12 WebInspector.CSSWorkspaceBinding = function(targetManager, workspace, networkMap ping) 8 WebInspector.CSSWorkspaceBinding = class {
13 { 9 /**
10 * @param {!WebInspector.TargetManager} targetManager
11 * @param {!WebInspector.Workspace} workspace
12 * @param {!WebInspector.NetworkMapping} networkMapping
13 */
14 constructor(targetManager, workspace, networkMapping) {
14 this._workspace = workspace; 15 this._workspace = workspace;
15 this._networkMapping = networkMapping; 16 this._networkMapping = networkMapping;
16 17
17 /** @type {!Map.<!WebInspector.CSSModel, !WebInspector.CSSWorkspaceBinding.T argetInfo>} */ 18 /** @type {!Map.<!WebInspector.CSSModel, !WebInspector.CSSWorkspaceBinding.T argetInfo>} */
18 this._modelToTargetInfo = new Map(); 19 this._modelToTargetInfo = new Map();
19 targetManager.observeTargets(this); 20 targetManager.observeTargets(this);
21 }
22
23 /**
24 * @override
25 * @param {!WebInspector.Target} target
26 */
27 targetAdded(target) {
28 var cssModel = WebInspector.CSSModel.fromTarget(target);
29 if (cssModel)
30 this._modelToTargetInfo.set(
31 cssModel, new WebInspector.CSSWorkspaceBinding.TargetInfo(cssModel, th is._workspace, this._networkMapping));
32 }
33
34 /**
35 * @override
36 * @param {!WebInspector.Target} target
37 */
38 targetRemoved(target) {
39 var cssModel = WebInspector.CSSModel.fromTarget(target);
40 if (cssModel)
41 this._modelToTargetInfo.remove(cssModel)._dispose();
42 }
43
44 /**
45 * @param {!WebInspector.CSSStyleSheetHeader} header
46 * @return {?WebInspector.CSSWorkspaceBinding.TargetInfo}
47 */
48 _targetInfo(header) {
49 return this._modelToTargetInfo.get(header.cssModel()) || null;
50 }
51
52 /**
53 * @param {!WebInspector.CSSStyleSheetHeader} header
54 * @return {!WebInspector.CSSWorkspaceBinding.TargetInfo}
55 */
56 _ensureTargetInfo(header) {
57 var targetInfo = this._modelToTargetInfo.get(header.cssModel());
58 if (!targetInfo) {
59 targetInfo =
60 new WebInspector.CSSWorkspaceBinding.TargetInfo(header.cssModel(), thi s._workspace, this._networkMapping);
61 this._modelToTargetInfo.set(header.cssModel(), targetInfo);
62 }
63 return targetInfo;
64 }
65
66 /**
67 * @param {!WebInspector.CSSStyleSheetHeader} header
68 */
69 updateLocations(header) {
70 var targetInfo = this._targetInfo(header);
71 if (targetInfo)
72 targetInfo._updateLocations(header);
73 }
74
75 /**
76 * @param {!WebInspector.CSSLocation} rawLocation
77 * @param {function(!WebInspector.LiveLocation)} updateDelegate
78 * @param {!WebInspector.LiveLocationPool} locationPool
79 * @return {!WebInspector.CSSWorkspaceBinding.LiveLocation}
80 */
81 createLiveLocation(rawLocation, updateDelegate, locationPool) {
82 var header =
83 rawLocation.styleSheetId ? rawLocation.cssModel().styleSheetHeaderForId( rawLocation.styleSheetId) : null;
84 return new WebInspector.CSSWorkspaceBinding.LiveLocation(
85 rawLocation.cssModel(), header, rawLocation, this, updateDelegate, locat ionPool);
86 }
87
88 /**
89 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location
90 */
91 _addLiveLocation(location) {
92 this._ensureTargetInfo(location._header)._addLocation(location);
93 }
94
95 /**
96 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location
97 */
98 _removeLiveLocation(location) {
99 var targetInfo = this._targetInfo(location._header);
100 if (targetInfo)
101 targetInfo._removeLocation(location);
102 }
103
104 /**
105 * @param {!WebInspector.CSSProperty} cssProperty
106 * @param {boolean} forName
107 * @return {?WebInspector.UILocation}
108 */
109 propertyUILocation(cssProperty, forName) {
110 var style = cssProperty.ownerStyle;
111 if (!style || style.type !== WebInspector.CSSStyleDeclaration.Type.Regular | | !style.styleSheetId)
112 return null;
113 var header = style.cssModel().styleSheetHeaderForId(style.styleSheetId);
114 if (!header)
115 return null;
116
117 var range = forName ? cssProperty.nameRange() : cssProperty.valueRange();
118 if (!range)
119 return null;
120
121 var lineNumber = range.startLine;
122 var columnNumber = range.startColumn;
123 var rawLocation = new WebInspector.CSSLocation(
124 header, header.lineNumberInSource(lineNumber), header.columnNumberInSour ce(lineNumber, columnNumber));
125 return this.rawLocationToUILocation(rawLocation);
126 }
127
128 /**
129 * @param {?WebInspector.CSSLocation} rawLocation
130 * @return {?WebInspector.UILocation}
131 */
132 rawLocationToUILocation(rawLocation) {
133 if (!rawLocation)
134 return null;
135 var header = rawLocation.cssModel().styleSheetHeaderForId(rawLocation.styleS heetId);
136 if (!header)
137 return null;
138 var targetInfo = this._targetInfo(header);
139 return targetInfo ? targetInfo._rawLocationToUILocation(header, rawLocation. lineNumber, rawLocation.columnNumber) :
140 null;
141 }
20 }; 142 };
21 143
22 WebInspector.CSSWorkspaceBinding.prototype = {
23 /**
24 * @override
25 * @param {!WebInspector.Target} target
26 */
27 targetAdded: function(target)
28 {
29 var cssModel = WebInspector.CSSModel.fromTarget(target);
30 if (cssModel)
31 this._modelToTargetInfo.set(cssModel, new WebInspector.CSSWorkspaceB inding.TargetInfo(cssModel, this._workspace, this._networkMapping));
32 },
33
34 /**
35 * @override
36 * @param {!WebInspector.Target} target
37 */
38 targetRemoved: function(target)
39 {
40 var cssModel = WebInspector.CSSModel.fromTarget(target);
41 if (cssModel)
42 this._modelToTargetInfo.remove(cssModel)._dispose();
43 },
44
45 /**
46 * @param {!WebInspector.CSSStyleSheetHeader} header
47 * @return {?WebInspector.CSSWorkspaceBinding.TargetInfo}
48 */
49 _targetInfo: function(header)
50 {
51 return this._modelToTargetInfo.get(header.cssModel()) || null;
52 },
53
54 /**
55 * @param {!WebInspector.CSSStyleSheetHeader} header
56 * @return {!WebInspector.CSSWorkspaceBinding.TargetInfo}
57 */
58 _ensureTargetInfo: function(header)
59 {
60 var targetInfo = this._modelToTargetInfo.get(header.cssModel());
61 if (!targetInfo) {
62 targetInfo = new WebInspector.CSSWorkspaceBinding.TargetInfo(header. cssModel(), this._workspace, this._networkMapping);
63 this._modelToTargetInfo.set(header.cssModel(), targetInfo);
64 }
65 return targetInfo;
66 },
67
68 /**
69 * @param {!WebInspector.CSSStyleSheetHeader} header
70 */
71 updateLocations: function(header)
72 {
73 var targetInfo = this._targetInfo(header);
74 if (targetInfo)
75 targetInfo._updateLocations(header);
76 },
77
78 /**
79 * @param {!WebInspector.CSSLocation} rawLocation
80 * @param {function(!WebInspector.LiveLocation)} updateDelegate
81 * @param {!WebInspector.LiveLocationPool} locationPool
82 * @return {!WebInspector.CSSWorkspaceBinding.LiveLocation}
83 */
84 createLiveLocation: function(rawLocation, updateDelegate, locationPool)
85 {
86 var header = rawLocation.styleSheetId ? rawLocation.cssModel().styleShee tHeaderForId(rawLocation.styleSheetId) : null;
87 return new WebInspector.CSSWorkspaceBinding.LiveLocation(rawLocation.css Model(), header, rawLocation, this, updateDelegate, locationPool);
88 },
89
90 /**
91 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location
92 */
93 _addLiveLocation: function(location)
94 {
95 this._ensureTargetInfo(location._header)._addLocation(location);
96 },
97
98 /**
99 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location
100 */
101 _removeLiveLocation: function(location)
102 {
103 var targetInfo = this._targetInfo(location._header);
104 if (targetInfo)
105 targetInfo._removeLocation(location);
106 },
107
108 /**
109 * @param {!WebInspector.CSSProperty} cssProperty
110 * @param {boolean} forName
111 * @return {?WebInspector.UILocation}
112 */
113 propertyUILocation: function(cssProperty, forName)
114 {
115 var style = cssProperty.ownerStyle;
116 if (!style || style.type !== WebInspector.CSSStyleDeclaration.Type.Regul ar || !style.styleSheetId)
117 return null;
118 var header = style.cssModel().styleSheetHeaderForId(style.styleSheetId);
119 if (!header)
120 return null;
121
122 var range = forName ? cssProperty.nameRange() : cssProperty.valueRange() ;
123 if (!range)
124 return null;
125
126 var lineNumber = range.startLine;
127 var columnNumber = range.startColumn;
128 var rawLocation = new WebInspector.CSSLocation(header, header.lineNumber InSource(lineNumber), header.columnNumberInSource(lineNumber, columnNumber));
129 return this.rawLocationToUILocation(rawLocation);
130 },
131
132 /**
133 * @param {?WebInspector.CSSLocation} rawLocation
134 * @return {?WebInspector.UILocation}
135 */
136 rawLocationToUILocation: function(rawLocation)
137 {
138 if (!rawLocation)
139 return null;
140 var header = rawLocation.cssModel().styleSheetHeaderForId(rawLocation.st yleSheetId);
141 if (!header)
142 return null;
143 var targetInfo = this._targetInfo(header);
144 return targetInfo ? targetInfo._rawLocationToUILocation(header, rawLocat ion.lineNumber, rawLocation.columnNumber) : null;
145 }
146 };
147
148 /** 144 /**
149 * @constructor 145 * @unrestricted
150 * @param {!WebInspector.CSSModel} cssModel
151 * @param {!WebInspector.Workspace} workspace
152 * @param {!WebInspector.NetworkMapping} networkMapping
153 */ 146 */
154 WebInspector.CSSWorkspaceBinding.TargetInfo = function(cssModel, workspace, netw orkMapping) 147 WebInspector.CSSWorkspaceBinding.TargetInfo = class {
155 { 148 /**
149 * @param {!WebInspector.CSSModel} cssModel
150 * @param {!WebInspector.Workspace} workspace
151 * @param {!WebInspector.NetworkMapping} networkMapping
152 */
153 constructor(cssModel, workspace, networkMapping) {
156 this._cssModel = cssModel; 154 this._cssModel = cssModel;
157 this._stylesSourceMapping = new WebInspector.StylesSourceMapping(cssModel, w orkspace, networkMapping); 155 this._stylesSourceMapping = new WebInspector.StylesSourceMapping(cssModel, w orkspace, networkMapping);
158 this._sassSourceMapping = new WebInspector.SASSSourceMapping(cssModel, netwo rkMapping, WebInspector.NetworkProject.forTarget(cssModel.target())); 156 this._sassSourceMapping = new WebInspector.SASSSourceMapping(
157 cssModel, networkMapping, WebInspector.NetworkProject.forTarget(cssModel .target()));
159 158
160 /** @type {!Multimap<!WebInspector.CSSStyleSheetHeader, !WebInspector.LiveLo cation>} */ 159 /** @type {!Multimap<!WebInspector.CSSStyleSheetHeader, !WebInspector.LiveLo cation>} */
161 this._locations = new Multimap(); 160 this._locations = new Multimap();
161 }
162
163 /**
164 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location
165 */
166 _addLocation(location) {
167 var header = location._header;
168 this._locations.set(header, location);
169 location.update();
170 }
171
172 /**
173 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location
174 */
175 _removeLocation(location) {
176 this._locations.remove(location._header, location);
177 }
178
179 /**
180 * @param {!WebInspector.CSSStyleSheetHeader} header
181 */
182 _updateLocations(header) {
183 for (var location of this._locations.get(header))
184 location.update();
185 }
186
187 /**
188 * @param {!WebInspector.CSSStyleSheetHeader} header
189 * @param {number} lineNumber
190 * @param {number=} columnNumber
191 * @return {?WebInspector.UILocation}
192 */
193 _rawLocationToUILocation(header, lineNumber, columnNumber) {
194 var rawLocation = new WebInspector.CSSLocation(header, lineNumber, columnNum ber);
195 var uiLocation = null;
196 uiLocation = uiLocation || this._sassSourceMapping.rawLocationToUILocation(r awLocation);
197 uiLocation = uiLocation || this._stylesSourceMapping.rawLocationToUILocation (rawLocation);
198 return uiLocation;
199 }
200
201 _dispose() {
202 this._stylesSourceMapping.dispose();
203 this._sassSourceMapping.dispose();
204 }
162 }; 205 };
163 206
164 WebInspector.CSSWorkspaceBinding.TargetInfo.prototype = {
165 /**
166 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location
167 */
168 _addLocation: function(location)
169 {
170 var header = location._header;
171 this._locations.set(header, location);
172 location.update();
173 },
174
175 /**
176 * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location
177 */
178 _removeLocation: function(location)
179 {
180 this._locations.remove(location._header, location);
181 },
182
183 /**
184 * @param {!WebInspector.CSSStyleSheetHeader} header
185 */
186 _updateLocations: function(header)
187 {
188 for (var location of this._locations.get(header))
189 location.update();
190 },
191
192 /**
193 * @param {!WebInspector.CSSStyleSheetHeader} header
194 * @param {number} lineNumber
195 * @param {number=} columnNumber
196 * @return {?WebInspector.UILocation}
197 */
198 _rawLocationToUILocation: function(header, lineNumber, columnNumber)
199 {
200 var rawLocation = new WebInspector.CSSLocation(header, lineNumber, colum nNumber);
201 var uiLocation = null;
202 uiLocation = uiLocation || this._sassSourceMapping.rawLocationToUILocati on(rawLocation);
203 uiLocation = uiLocation || this._stylesSourceMapping.rawLocationToUILoca tion(rawLocation);
204 return uiLocation;
205 },
206
207 _dispose: function()
208 {
209 this._stylesSourceMapping.dispose();
210 this._sassSourceMapping.dispose();
211 }
212 };
213
214 /** 207 /**
215 * @constructor 208 * @unrestricted
216 * @extends {WebInspector.LiveLocationWithPool}
217 * @param {!WebInspector.CSSModel} cssModel
218 * @param {?WebInspector.CSSStyleSheetHeader} header
219 * @param {!WebInspector.CSSLocation} rawLocation
220 * @param {!WebInspector.CSSWorkspaceBinding} binding
221 * @param {function(!WebInspector.LiveLocation)} updateDelegate
222 * @param {!WebInspector.LiveLocationPool} locationPool
223 */ 209 */
224 WebInspector.CSSWorkspaceBinding.LiveLocation = function(cssModel, header, rawLo cation, binding, updateDelegate, locationPool) 210 WebInspector.CSSWorkspaceBinding.LiveLocation = class extends WebInspector.LiveL ocationWithPool {
225 { 211 /**
226 WebInspector.LiveLocationWithPool.call(this, updateDelegate, locationPool); 212 * @param {!WebInspector.CSSModel} cssModel
213 * @param {?WebInspector.CSSStyleSheetHeader} header
214 * @param {!WebInspector.CSSLocation} rawLocation
215 * @param {!WebInspector.CSSWorkspaceBinding} binding
216 * @param {function(!WebInspector.LiveLocation)} updateDelegate
217 * @param {!WebInspector.LiveLocationPool} locationPool
218 */
219 constructor(cssModel, header, rawLocation, binding, updateDelegate, locationPo ol) {
220 super(updateDelegate, locationPool);
227 this._cssModel = cssModel; 221 this._cssModel = cssModel;
228 this._rawLocation = rawLocation; 222 this._rawLocation = rawLocation;
229 this._binding = binding; 223 this._binding = binding;
230 if (!header) 224 if (!header)
231 this._clearStyleSheet(); 225 this._clearStyleSheet();
232 else 226 else
233 this._setStyleSheet(header); 227 this._setStyleSheet(header);
228 }
229
230 /**
231 * @param {!WebInspector.Event} event
232 */
233 _styleSheetAdded(event) {
234 console.assert(!this._header);
235 var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.data);
236 if (header.sourceURL && header.sourceURL === this._rawLocation.url)
237 this._setStyleSheet(header);
238 }
239
240 /**
241 * @param {!WebInspector.Event} event
242 */
243 _styleSheetRemoved(event) {
244 console.assert(this._header);
245 var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.data);
246 if (this._header !== header)
247 return;
248 this._binding._removeLiveLocation(this);
249 this._clearStyleSheet();
250 }
251
252 /**
253 * @param {!WebInspector.CSSStyleSheetHeader} header
254 */
255 _setStyleSheet(header) {
256 this._header = header;
257 this._binding._addLiveLocation(this);
258 this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleSheetAd ded, this._styleSheetAdded, this);
259 this._cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetRemov ed, this._styleSheetRemoved, this);
260 }
261
262 _clearStyleSheet() {
263 delete this._header;
264 this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleSheetRe moved, this._styleSheetRemoved, this);
265 this._cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetAdded , this._styleSheetAdded, this);
266 }
267
268 /**
269 * @override
270 * @return {?WebInspector.UILocation}
271 */
272 uiLocation() {
273 var cssLocation = this._rawLocation;
274 if (this._header) {
275 var targetInfo = this._binding._targetInfo(this._header);
276 return targetInfo._rawLocationToUILocation(this._header, cssLocation.lineN umber, cssLocation.columnNumber);
277 }
278 var uiSourceCode = this._binding._networkMapping.uiSourceCodeForStyleURL(css Location.url, cssLocation.header());
279 if (!uiSourceCode)
280 return null;
281 return uiSourceCode.uiLocation(cssLocation.lineNumber, cssLocation.columnNum ber);
282 }
283
284 /**
285 * @override
286 */
287 dispose() {
288 super.dispose();
289 if (this._header)
290 this._binding._removeLiveLocation(this);
291 this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleSheetAd ded, this._styleSheetAdded, this);
292 this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleSheetRe moved, this._styleSheetRemoved, this);
293 }
294
295 /**
296 * @override
297 * @return {boolean}
298 */
299 isBlackboxed() {
300 return false;
301 }
234 }; 302 };
235 303
236 WebInspector.CSSWorkspaceBinding.LiveLocation.prototype = {
237 /**
238 * @param {!WebInspector.Event} event
239 */
240 _styleSheetAdded: function(event)
241 {
242 console.assert(!this._header);
243 var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.dat a);
244 if (header.sourceURL && header.sourceURL === this._rawLocation.url)
245 this._setStyleSheet(header);
246 },
247
248 /**
249 * @param {!WebInspector.Event} event
250 */
251 _styleSheetRemoved: function(event)
252 {
253 console.assert(this._header);
254 var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.dat a);
255 if (this._header !== header)
256 return;
257 this._binding._removeLiveLocation(this);
258 this._clearStyleSheet();
259 },
260
261 /**
262 * @param {!WebInspector.CSSStyleSheetHeader} header
263 */
264 _setStyleSheet: function(header)
265 {
266 this._header = header;
267 this._binding._addLiveLocation(this);
268 this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleShe etAdded, this._styleSheetAdded, this);
269 this._cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetR emoved, this._styleSheetRemoved, this);
270 },
271
272 _clearStyleSheet: function()
273 {
274 delete this._header;
275 this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleShe etRemoved, this._styleSheetRemoved, this);
276 this._cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetA dded, this._styleSheetAdded, this);
277 },
278
279 /**
280 * @override
281 * @return {?WebInspector.UILocation}
282 */
283 uiLocation: function()
284 {
285 var cssLocation = this._rawLocation;
286 if (this._header) {
287 var targetInfo = this._binding._targetInfo(this._header);
288 return targetInfo._rawLocationToUILocation(this._header, cssLocation .lineNumber, cssLocation.columnNumber);
289 }
290 var uiSourceCode = this._binding._networkMapping.uiSourceCodeForStyleURL (cssLocation.url, cssLocation.header());
291 if (!uiSourceCode)
292 return null;
293 return uiSourceCode.uiLocation(cssLocation.lineNumber, cssLocation.colum nNumber);
294 },
295
296 /**
297 * @override
298 */
299 dispose: function()
300 {
301 WebInspector.LiveLocationWithPool.prototype.dispose.call(this);
302 if (this._header)
303 this._binding._removeLiveLocation(this);
304 this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleShe etAdded, this._styleSheetAdded, this);
305 this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleShe etRemoved, this._styleSheetRemoved, this);
306 },
307
308 /**
309 * @override
310 * @return {boolean}
311 */
312 isBlackboxed: function()
313 {
314 return false;
315 },
316
317 __proto__: WebInspector.LiveLocationWithPool.prototype
318 };
319
320 /** 304 /**
321 * @type {!WebInspector.CSSWorkspaceBinding} 305 * @type {!WebInspector.CSSWorkspaceBinding}
322 */ 306 */
323 WebInspector.cssWorkspaceBinding; 307 WebInspector.cssWorkspaceBinding;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698