OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 callback(cssFamilyName, fonts); | 162 callback(cssFamilyName, fonts); |
163 } | 163 } |
164 CSSAgent.getPlatformFontsForNode(nodeId, platformFontsCallback); | 164 CSSAgent.getPlatformFontsForNode(nodeId, platformFontsCallback); |
165 }, | 165 }, |
166 | 166 |
167 /** | 167 /** |
168 * @return {!Array.<!WebInspector.CSSStyleSheetHeader>} | 168 * @return {!Array.<!WebInspector.CSSStyleSheetHeader>} |
169 */ | 169 */ |
170 allStyleSheets: function() | 170 allStyleSheets: function() |
171 { | 171 { |
172 var values = Object.values(this._styleSheetIdToHeader); | 172 return Object.values(this._styleSheetIdToHeader); |
173 /** | |
174 * @param {!WebInspector.CSSStyleSheetHeader} a | |
175 * @param {!WebInspector.CSSStyleSheetHeader} b | |
176 * @return {number} | |
177 */ | |
178 function styleSheetComparator(a, b) | |
179 { | |
180 if (a.sourceURL < b.sourceURL) | |
181 return -1; | |
182 else if (a.sourceURL > b.sourceURL) | |
183 return 1; | |
184 return a.startLine - b.startLine || a.startColumn - b.startColumn; | |
185 } | |
186 values.sort(styleSheetComparator); | |
187 | |
188 return values; | |
189 }, | 173 }, |
190 | 174 |
191 /** | 175 /** |
192 * @param {!DOMAgent.NodeId} nodeId | 176 * @param {!DOMAgent.NodeId} nodeId |
193 * @param {function(?WebInspector.CSSStyleDeclaration, ?WebInspector.CSSStyl
eDeclaration)} userCallback | 177 * @param {function(?WebInspector.CSSStyleDeclaration, ?WebInspector.CSSStyl
eDeclaration)} userCallback |
194 */ | 178 */ |
195 getInlineStylesAsync: function(nodeId, userCallback) | 179 getInlineStylesAsync: function(nodeId, userCallback) |
196 { | 180 { |
197 /** | 181 /** |
198 * @param {function(?WebInspector.CSSStyleDeclaration, ?WebInspector.CSS
StyleDeclaration)} userCallback | 182 * @param {function(?WebInspector.CSSStyleDeclaration, ?WebInspector.CSS
StyleDeclaration)} userCallback |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 } | 338 } |
355 | 339 |
356 callback(this._styleSheetIdToHeader[styleSheetId]); | 340 callback(this._styleSheetIdToHeader[styleSheetId]); |
357 } | 341 } |
358 | 342 |
359 CSSAgent.createStyleSheet(frameId, innerCallback.bind(this)); | 343 CSSAgent.createStyleSheet(frameId, innerCallback.bind(this)); |
360 }, | 344 }, |
361 | 345 |
362 mediaQueryResultChanged: function() | 346 mediaQueryResultChanged: function() |
363 { | 347 { |
| 348 this._styleLoader.reset(); |
364 this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.MediaQue
ryResultChanged); | 349 this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.MediaQue
ryResultChanged); |
365 }, | 350 }, |
366 | 351 |
367 /** | 352 /** |
368 * @param {!CSSAgent.StyleSheetId} id | 353 * @param {!CSSAgent.StyleSheetId} id |
369 * @return {!WebInspector.CSSStyleSheetHeader} | 354 * @return {!WebInspector.CSSStyleSheetHeader} |
370 */ | 355 */ |
371 styleSheetHeaderForId: function(id) | 356 styleSheetHeaderForId: function(id) |
372 { | 357 { |
373 return this._styleSheetIdToHeader[id]; | 358 return this._styleSheetIdToHeader[id]; |
(...skipping 17 matching lines...) Expand all Loading... |
391 if (!node) | 376 if (!node) |
392 return null; | 377 return null; |
393 return node.ownerDocument ? node.ownerDocument.id : null; | 378 return node.ownerDocument ? node.ownerDocument.id : null; |
394 }, | 379 }, |
395 | 380 |
396 /** | 381 /** |
397 * @param {!CSSAgent.StyleSheetId} styleSheetId | 382 * @param {!CSSAgent.StyleSheetId} styleSheetId |
398 */ | 383 */ |
399 _fireStyleSheetChanged: function(styleSheetId) | 384 _fireStyleSheetChanged: function(styleSheetId) |
400 { | 385 { |
| 386 this._styleLoader.reset(); |
401 if (!this._pendingCommandsMajorState.length) | 387 if (!this._pendingCommandsMajorState.length) |
402 return; | 388 return; |
403 | 389 |
404 var majorChange = this._pendingCommandsMajorState[this._pendingCommandsM
ajorState.length - 1]; | 390 var majorChange = this._pendingCommandsMajorState[this._pendingCommandsM
ajorState.length - 1]; |
405 | 391 |
406 if (!styleSheetId || !this.hasEventListeners(WebInspector.CSSStyleModel.
Events.StyleSheetChanged)) | 392 if (!styleSheetId || !this.hasEventListeners(WebInspector.CSSStyleModel.
Events.StyleSheetChanged)) |
407 return; | 393 return; |
408 | 394 |
409 this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleShe
etChanged, { styleSheetId: styleSheetId, majorChange: majorChange }); | 395 this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleShe
etChanged, { styleSheetId: styleSheetId, majorChange: majorChange }); |
410 }, | 396 }, |
411 | 397 |
412 /** | 398 /** |
413 * @param {!CSSAgent.CSSStyleSheetHeader} header | 399 * @param {!CSSAgent.CSSStyleSheetHeader} header |
414 */ | 400 */ |
415 _styleSheetAdded: function(header) | 401 _styleSheetAdded: function(header) |
416 { | 402 { |
417 console.assert(!this._styleSheetIdToHeader[header.styleSheetId]); | 403 console.assert(!this._styleSheetIdToHeader[header.styleSheetId]); |
418 var styleSheetHeader = new WebInspector.CSSStyleSheetHeader(header); | 404 var styleSheetHeader = new WebInspector.CSSStyleSheetHeader(header); |
419 this._styleSheetIdToHeader[header.styleSheetId] = styleSheetHeader; | 405 this._styleSheetIdToHeader[header.styleSheetId] = styleSheetHeader; |
420 var url = styleSheetHeader.resourceURL(); | 406 var url = styleSheetHeader.resourceURL(); |
421 if (!this._styleSheetIdsForURL[url]) | 407 if (!this._styleSheetIdsForURL[url]) |
422 this._styleSheetIdsForURL[url] = {}; | 408 this._styleSheetIdsForURL[url] = {}; |
423 var frameIdToStyleSheetIds = this._styleSheetIdsForURL[url]; | 409 var frameIdToStyleSheetIds = this._styleSheetIdsForURL[url]; |
424 var styleSheetIds = frameIdToStyleSheetIds[styleSheetHeader.frameId]; | 410 var styleSheetIds = frameIdToStyleSheetIds[styleSheetHeader.frameId]; |
425 if (!styleSheetIds) { | 411 if (!styleSheetIds) { |
426 styleSheetIds = []; | 412 styleSheetIds = []; |
427 frameIdToStyleSheetIds[styleSheetHeader.frameId] = styleSheetIds; | 413 frameIdToStyleSheetIds[styleSheetHeader.frameId] = styleSheetIds; |
428 } | 414 } |
429 styleSheetIds.push(styleSheetHeader.id); | 415 styleSheetIds.push(styleSheetHeader.id); |
| 416 this._styleLoader.reset(); |
430 this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleShe
etAdded, styleSheetHeader); | 417 this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleShe
etAdded, styleSheetHeader); |
431 }, | 418 }, |
432 | 419 |
433 /** | 420 /** |
434 * @param {!CSSAgent.StyleSheetId} id | 421 * @param {!CSSAgent.StyleSheetId} id |
435 */ | 422 */ |
436 _styleSheetRemoved: function(id) | 423 _styleSheetRemoved: function(id) |
437 { | 424 { |
438 var header = this._styleSheetIdToHeader[id]; | 425 var header = this._styleSheetIdToHeader[id]; |
439 console.assert(header); | 426 console.assert(header); |
440 delete this._styleSheetIdToHeader[id]; | 427 delete this._styleSheetIdToHeader[id]; |
441 var url = header.resourceURL(); | 428 var url = header.resourceURL(); |
442 var frameIdToStyleSheetIds = this._styleSheetIdsForURL[url]; | 429 var frameIdToStyleSheetIds = this._styleSheetIdsForURL[url]; |
443 frameIdToStyleSheetIds[header.frameId].remove(id); | 430 frameIdToStyleSheetIds[header.frameId].remove(id); |
444 if (!frameIdToStyleSheetIds[header.frameId].length) { | 431 if (!frameIdToStyleSheetIds[header.frameId].length) { |
445 delete frameIdToStyleSheetIds[header.frameId]; | 432 delete frameIdToStyleSheetIds[header.frameId]; |
446 if (!Object.keys(this._styleSheetIdsForURL[url]).length) | 433 if (!Object.keys(this._styleSheetIdsForURL[url]).length) |
447 delete this._styleSheetIdsForURL[url]; | 434 delete this._styleSheetIdsForURL[url]; |
448 } | 435 } |
| 436 this._styleLoader.reset(); |
449 this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleShe
etRemoved, header); | 437 this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleShe
etRemoved, header); |
450 }, | 438 }, |
451 | 439 |
452 /** | 440 /** |
453 * @param {string} url | 441 * @param {string} url |
454 * @return {!Array.<!CSSAgent.StyleSheetId>} | 442 * @return {!Array.<!CSSAgent.StyleSheetId>} |
455 */ | 443 */ |
456 styleSheetIdsForURL: function(url) | 444 styleSheetIdsForURL: function(url) |
457 { | 445 { |
458 var frameIdToStyleSheetIds = this._styleSheetIdsForURL[url]; | 446 var frameIdToStyleSheetIds = this._styleSheetIdsForURL[url]; |
(...skipping 1069 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1528 * @param {!WebInspector.CSSStyleModel} cssModel | 1516 * @param {!WebInspector.CSSStyleModel} cssModel |
1529 */ | 1517 */ |
1530 WebInspector.CSSStyleModel.ComputedStyleLoader = function(cssModel) | 1518 WebInspector.CSSStyleModel.ComputedStyleLoader = function(cssModel) |
1531 { | 1519 { |
1532 this._cssModel = cssModel; | 1520 this._cssModel = cssModel; |
1533 /** @type {!Object.<*, !Array.<function(?WebInspector.CSSStyleDeclaration)>>
} */ | 1521 /** @type {!Object.<*, !Array.<function(?WebInspector.CSSStyleDeclaration)>>
} */ |
1534 this._nodeIdToCallbackData = {}; | 1522 this._nodeIdToCallbackData = {}; |
1535 } | 1523 } |
1536 | 1524 |
1537 WebInspector.CSSStyleModel.ComputedStyleLoader.prototype = { | 1525 WebInspector.CSSStyleModel.ComputedStyleLoader.prototype = { |
| 1526 reset: function() |
| 1527 { |
| 1528 for (var nodeId in this._nodeIdToCallbackData) { |
| 1529 var callbacks = this._nodeIdToCallbackData[nodeId]; |
| 1530 for (var i = 0; i < callbacks.length; ++i) |
| 1531 callbacks[i](null); |
| 1532 } |
| 1533 this._nodeIdToCallbackData = {}; |
| 1534 }, |
| 1535 |
1538 /** | 1536 /** |
1539 * @param {!DOMAgent.NodeId} nodeId | 1537 * @param {!DOMAgent.NodeId} nodeId |
1540 * @param {function(?WebInspector.CSSStyleDeclaration)} userCallback | 1538 * @param {function(?WebInspector.CSSStyleDeclaration)} userCallback |
1541 */ | 1539 */ |
1542 getComputedStyle: function(nodeId, userCallback) | 1540 getComputedStyle: function(nodeId, userCallback) |
1543 { | 1541 { |
1544 if (this._nodeIdToCallbackData[nodeId]) { | 1542 if (this._nodeIdToCallbackData[nodeId]) { |
1545 this._nodeIdToCallbackData[nodeId].push(userCallback); | 1543 this._nodeIdToCallbackData[nodeId].push(userCallback); |
1546 return; | 1544 return; |
1547 } | 1545 } |
(...skipping 21 matching lines...) Expand all Loading... |
1569 for (var i = 0; i < callbacks.length; ++i) | 1567 for (var i = 0; i < callbacks.length; ++i) |
1570 callbacks[i](computedStyle); | 1568 callbacks[i](computedStyle); |
1571 } | 1569 } |
1572 } | 1570 } |
1573 } | 1571 } |
1574 | 1572 |
1575 /** | 1573 /** |
1576 * @type {!WebInspector.CSSStyleModel} | 1574 * @type {!WebInspector.CSSStyleModel} |
1577 */ | 1575 */ |
1578 WebInspector.cssModel; | 1576 WebInspector.cssModel; |
OLD | NEW |