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

Side by Side Diff: Source/devtools/front_end/CSSStyleModel.js

Issue 153233002: *** DO NOT LAND *** Remove regions support, keeping a bare minimum to support "region-based"... (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 10 months 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 /* 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 23 matching lines...) Expand all
34 * @param {!WebInspector.Workspace} workspace 34 * @param {!WebInspector.Workspace} workspace
35 */ 35 */
36 WebInspector.CSSStyleModel = function(workspace) 36 WebInspector.CSSStyleModel = function(workspace)
37 { 37 {
38 this._workspace = workspace; 38 this._workspace = workspace;
39 this._pendingCommandsMajorState = []; 39 this._pendingCommandsMajorState = [];
40 this._styleLoader = new WebInspector.CSSStyleModel.ComputedStyleLoader(this) ; 40 this._styleLoader = new WebInspector.CSSStyleModel.ComputedStyleLoader(this) ;
41 WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.UndoRedo Requested, this._undoRedoRequested, this); 41 WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.UndoRedo Requested, this._undoRedoRequested, this);
42 WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.UndoRedo Completed, this._undoRedoCompleted, this); 42 WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.UndoRedo Completed, this._undoRedoCompleted, this);
43 WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeMod el.EventTypes.MainFrameCreatedOrNavigated, this._mainFrameCreatedOrNavigated, th is); 43 WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeMod el.EventTypes.MainFrameCreatedOrNavigated, this._mainFrameCreatedOrNavigated, th is);
44 this._namedFlowCollections = {};
45 WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.Document Updated, this._resetNamedFlowCollections, this);
46 InspectorBackend.registerCSSDispatcher(new WebInspector.CSSDispatcher(this)) ; 44 InspectorBackend.registerCSSDispatcher(new WebInspector.CSSDispatcher(this)) ;
47 CSSAgent.enable(this._wasEnabled.bind(this)); 45 CSSAgent.enable(this._wasEnabled.bind(this));
48 this._resetStyleSheets(); 46 this._resetStyleSheets();
49 } 47 }
50 48
51 /** 49 /**
52 * @param {!Array.<!CSSAgent.RuleMatch>|undefined} matchArray 50 * @param {!Array.<!CSSAgent.RuleMatch>|undefined} matchArray
53 */ 51 */
54 WebInspector.CSSStyleModel.parseRuleMatchArrayPayload = function(matchArray) 52 WebInspector.CSSStyleModel.parseRuleMatchArrayPayload = function(matchArray)
55 { 53 {
56 if (!matchArray) 54 if (!matchArray)
57 return []; 55 return [];
58 56
59 var result = []; 57 var result = [];
60 for (var i = 0; i < matchArray.length; ++i) 58 for (var i = 0; i < matchArray.length; ++i)
61 result.push(WebInspector.CSSRule.parsePayload(matchArray[i].rule, matchA rray[i].matchingSelectors)); 59 result.push(WebInspector.CSSRule.parsePayload(matchArray[i].rule, matchA rray[i].matchingSelectors));
62 return result; 60 return result;
63 } 61 }
64 62
65 WebInspector.CSSStyleModel.Events = { 63 WebInspector.CSSStyleModel.Events = {
66 ModelWasEnabled: "ModelWasEnabled", 64 ModelWasEnabled: "ModelWasEnabled",
67 StyleSheetAdded: "StyleSheetAdded", 65 StyleSheetAdded: "StyleSheetAdded",
68 StyleSheetChanged: "StyleSheetChanged", 66 StyleSheetChanged: "StyleSheetChanged",
69 StyleSheetRemoved: "StyleSheetRemoved", 67 StyleSheetRemoved: "StyleSheetRemoved",
70 MediaQueryResultChanged: "MediaQueryResultChanged", 68 MediaQueryResultChanged: "MediaQueryResultChanged",
71 NamedFlowCreated: "NamedFlowCreated",
72 NamedFlowRemoved: "NamedFlowRemoved",
73 RegionLayoutUpdated: "RegionLayoutUpdated",
74 RegionOversetChanged: "RegionOversetChanged"
75 } 69 }
76 70
77 WebInspector.CSSStyleModel.MediaTypes = ["all", "braille", "embossed", "handheld ", "print", "projection", "screen", "speech", "tty", "tv"]; 71 WebInspector.CSSStyleModel.MediaTypes = ["all", "braille", "embossed", "handheld ", "print", "projection", "screen", "speech", "tty", "tv"];
78 72
79 WebInspector.CSSStyleModel.prototype = { 73 WebInspector.CSSStyleModel.prototype = {
80 /** 74 /**
81 * @return {boolean} 75 * @return {boolean}
82 */ 76 */
83 isEnabled: function() 77 isEnabled: function()
84 { 78 {
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 * @param {!DOMAgent.NodeId} nodeId 191 * @param {!DOMAgent.NodeId} nodeId
198 * @param {?Array.<string>|undefined} forcedPseudoClasses 192 * @param {?Array.<string>|undefined} forcedPseudoClasses
199 * @param {function()=} userCallback 193 * @param {function()=} userCallback
200 */ 194 */
201 forcePseudoState: function(nodeId, forcedPseudoClasses, userCallback) 195 forcePseudoState: function(nodeId, forcedPseudoClasses, userCallback)
202 { 196 {
203 CSSAgent.forcePseudoState(nodeId, forcedPseudoClasses || [], userCallbac k); 197 CSSAgent.forcePseudoState(nodeId, forcedPseudoClasses || [], userCallbac k);
204 }, 198 },
205 199
206 /** 200 /**
207 * @param {!DOMAgent.NodeId} documentNodeId
208 * @param {function(?WebInspector.NamedFlowCollection)} userCallback
209 */
210 getNamedFlowCollectionAsync: function(documentNodeId, userCallback)
211 {
212 var namedFlowCollection = this._namedFlowCollections[documentNodeId];
213 if (namedFlowCollection) {
214 userCallback(namedFlowCollection);
215 return;
216 }
217
218 /**
219 * @param {function(?WebInspector.NamedFlowCollection)} userCallback
220 * @param {?Protocol.Error} error
221 * @param {?Array.<!CSSAgent.NamedFlow>} namedFlowPayload
222 * @this {WebInspector.CSSStyleModel}
223 */
224 function callback(userCallback, error, namedFlowPayload)
225 {
226 if (error || !namedFlowPayload)
227 userCallback(null);
228 else {
229 var namedFlowCollection = new WebInspector.NamedFlowCollection(n amedFlowPayload);
230 this._namedFlowCollections[documentNodeId] = namedFlowCollection ;
231 userCallback(namedFlowCollection);
232 }
233 }
234
235 CSSAgent.getNamedFlowCollection(documentNodeId, callback.bind(this, user Callback));
236 },
237
238 /**
239 * @param {!DOMAgent.NodeId} documentNodeId
240 * @param {string} flowName
241 * @param {function(?WebInspector.NamedFlow)} userCallback
242 */
243 getFlowByNameAsync: function(documentNodeId, flowName, userCallback)
244 {
245 var namedFlowCollection = this._namedFlowCollections[documentNodeId];
246 if (namedFlowCollection) {
247 userCallback(namedFlowCollection.flowByName(flowName));
248 return;
249 }
250
251 /**
252 * @param {function(?WebInspector.NamedFlow)} userCallback
253 * @param {?WebInspector.NamedFlowCollection} namedFlowCollection
254 */
255 function callback(userCallback, namedFlowCollection)
256 {
257 if (!namedFlowCollection)
258 userCallback(null);
259 else
260 userCallback(namedFlowCollection.flowByName(flowName));
261 }
262
263 this.getNamedFlowCollectionAsync(documentNodeId, callback.bind(this, use rCallback));
264 },
265
266 /**
267 * @param {!CSSAgent.CSSRuleId} ruleId 201 * @param {!CSSAgent.CSSRuleId} ruleId
268 * @param {!DOMAgent.NodeId} nodeId 202 * @param {!DOMAgent.NodeId} nodeId
269 * @param {string} newSelector 203 * @param {string} newSelector
270 * @param {function(!WebInspector.CSSRule)} successCallback 204 * @param {function(!WebInspector.CSSRule)} successCallback
271 * @param {function()} failureCallback 205 * @param {function()} failureCallback
272 */ 206 */
273 setRuleSelector: function(ruleId, nodeId, newSelector, successCallback, fail ureCallback) 207 setRuleSelector: function(ruleId, nodeId, newSelector, successCallback, fail ureCallback)
274 { 208 {
275 /** 209 /**
276 * @param {!DOMAgent.NodeId} nodeId 210 * @param {!DOMAgent.NodeId} nodeId
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 */ 417 */
484 styleSheetIdsByFrameIdForURL: function(url) 418 styleSheetIdsByFrameIdForURL: function(url)
485 { 419 {
486 var styleSheetIdsForFrame = this._styleSheetIdsForURL[url]; 420 var styleSheetIdsForFrame = this._styleSheetIdsForURL[url];
487 if (!styleSheetIdsForFrame) 421 if (!styleSheetIdsForFrame)
488 return {}; 422 return {};
489 return styleSheetIdsForFrame; 423 return styleSheetIdsForFrame;
490 }, 424 },
491 425
492 /** 426 /**
493 * @param {!CSSAgent.NamedFlow} namedFlowPayload
494 */
495 _namedFlowCreated: function(namedFlowPayload)
496 {
497 var namedFlow = WebInspector.NamedFlow.parsePayload(namedFlowPayload);
498 var namedFlowCollection = this._namedFlowCollections[namedFlow.documentN odeId];
499
500 if (!namedFlowCollection)
501 return;
502
503 namedFlowCollection._appendNamedFlow(namedFlow);
504 this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.NamedFlo wCreated, namedFlow);
505 },
506
507 /**
508 * @param {!DOMAgent.NodeId} documentNodeId
509 * @param {string} flowName
510 */
511 _namedFlowRemoved: function(documentNodeId, flowName)
512 {
513 var namedFlowCollection = this._namedFlowCollections[documentNodeId];
514
515 if (!namedFlowCollection)
516 return;
517
518 namedFlowCollection._removeNamedFlow(flowName);
519 this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.NamedFlo wRemoved, { documentNodeId: documentNodeId, flowName: flowName });
520 },
521
522 /**
523 * @param {!CSSAgent.NamedFlow} namedFlowPayload
524 */
525 _regionLayoutUpdated: function(namedFlowPayload)
526 {
527 var namedFlow = WebInspector.NamedFlow.parsePayload(namedFlowPayload);
528 var namedFlowCollection = this._namedFlowCollections[namedFlow.documentN odeId];
529
530 if (!namedFlowCollection)
531 return;
532
533 namedFlowCollection._appendNamedFlow(namedFlow);
534 this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.RegionLa youtUpdated, namedFlow);
535 },
536
537 /**
538 * @param {!CSSAgent.NamedFlow} namedFlowPayload
539 */
540 _regionOversetChanged: function(namedFlowPayload)
541 {
542 var namedFlow = WebInspector.NamedFlow.parsePayload(namedFlowPayload);
543 var namedFlowCollection = this._namedFlowCollections[namedFlow.documentN odeId];
544
545 if (!namedFlowCollection)
546 return;
547
548 namedFlowCollection._appendNamedFlow(namedFlow);
549 this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.RegionOv ersetChanged, namedFlow);
550 },
551
552 /**
553 * @param {!CSSAgent.StyleSheetId} styleSheetId 427 * @param {!CSSAgent.StyleSheetId} styleSheetId
554 * @param {string} newText 428 * @param {string} newText
555 * @param {boolean} majorChange 429 * @param {boolean} majorChange
556 * @param {function(?Protocol.Error)} userCallback 430 * @param {function(?Protocol.Error)} userCallback
557 */ 431 */
558 setStyleSheetText: function(styleSheetId, newText, majorChange, userCallback ) 432 setStyleSheetText: function(styleSheetId, newText, majorChange, userCallback )
559 { 433 {
560 var header = this._styleSheetIdToHeader[styleSheetId]; 434 var header = this._styleSheetIdToHeader[styleSheetId];
561 console.assert(header); 435 console.assert(header);
562 this._pendingCommandsMajorState.push(majorChange); 436 this._pendingCommandsMajorState.push(majorChange);
(...skipping 30 matching lines...) Expand all
593 }, 467 },
594 468
595 _resetStyleSheets: function() 469 _resetStyleSheets: function()
596 { 470 {
597 /** @type {!Object.<string, !Object.<!PageAgent.FrameId, !Array.<!CSSAge nt.StyleSheetId>>>} */ 471 /** @type {!Object.<string, !Object.<!PageAgent.FrameId, !Array.<!CSSAge nt.StyleSheetId>>>} */
598 this._styleSheetIdsForURL = {}; 472 this._styleSheetIdsForURL = {};
599 /** @type {!Object.<!CSSAgent.StyleSheetId, !WebInspector.CSSStyleSheetH eader>} */ 473 /** @type {!Object.<!CSSAgent.StyleSheetId, !WebInspector.CSSStyleSheetH eader>} */
600 this._styleSheetIdToHeader = {}; 474 this._styleSheetIdToHeader = {};
601 }, 475 },
602 476
603 _resetNamedFlowCollections: function()
604 {
605 this._namedFlowCollections = {};
606 },
607
608 updateLocations: function() 477 updateLocations: function()
609 { 478 {
610 var headers = Object.values(this._styleSheetIdToHeader); 479 var headers = Object.values(this._styleSheetIdToHeader);
611 for (var i = 0; i < headers.length; ++i) 480 for (var i = 0; i < headers.length; ++i)
612 headers[i].updateLocations(); 481 headers[i].updateLocations();
613 }, 482 },
614 483
615 /** 484 /**
616 * @param {?CSSAgent.StyleSheetId} styleSheetId 485 * @param {?CSSAgent.StyleSheetId} styleSheetId
617 * @param {!WebInspector.CSSLocation} rawLocation 486 * @param {!WebInspector.CSSLocation} rawLocation
(...skipping 1044 matching lines...) Expand 10 before | Expand all | Expand 10 after
1662 { 1531 {
1663 this._cssModel._styleSheetAdded(header); 1532 this._cssModel._styleSheetAdded(header);
1664 }, 1533 },
1665 1534
1666 /** 1535 /**
1667 * @param {!CSSAgent.StyleSheetId} id 1536 * @param {!CSSAgent.StyleSheetId} id
1668 */ 1537 */
1669 styleSheetRemoved: function(id) 1538 styleSheetRemoved: function(id)
1670 { 1539 {
1671 this._cssModel._styleSheetRemoved(id); 1540 this._cssModel._styleSheetRemoved(id);
1672 },
1673
1674 /**
1675 * @param {!CSSAgent.NamedFlow} namedFlowPayload
1676 */
1677 namedFlowCreated: function(namedFlowPayload)
1678 {
1679 this._cssModel._namedFlowCreated(namedFlowPayload);
1680 },
1681
1682 /**
1683 * @param {!DOMAgent.NodeId} documentNodeId
1684 * @param {string} flowName
1685 */
1686 namedFlowRemoved: function(documentNodeId, flowName)
1687 {
1688 this._cssModel._namedFlowRemoved(documentNodeId, flowName);
1689 },
1690
1691 /**
1692 * @param {!CSSAgent.NamedFlow} namedFlowPayload
1693 */
1694 regionLayoutUpdated: function(namedFlowPayload)
1695 {
1696 this._cssModel._regionLayoutUpdated(namedFlowPayload);
1697 },
1698
1699 /**
1700 * @param {!CSSAgent.NamedFlow} namedFlowPayload
1701 */
1702 regionOversetChanged: function(namedFlowPayload)
1703 {
1704 this._cssModel._regionOversetChanged(namedFlowPayload);
1705 } 1541 }
1706 } 1542 }
1707 1543
1708 /**
1709 * @constructor
1710 * @param {!CSSAgent.NamedFlow} payload
1711 */
1712 WebInspector.NamedFlow = function(payload)
1713 {
1714 this.documentNodeId = payload.documentNodeId;
1715 this.name = payload.name;
1716 this.overset = payload.overset;
1717 this.content = payload.content;
1718 this.regions = payload.regions;
1719 }
1720
1721 /**
1722 * @param {!CSSAgent.NamedFlow} payload
1723 * @return {!WebInspector.NamedFlow}
1724 */
1725 WebInspector.NamedFlow.parsePayload = function(payload)
1726 {
1727 return new WebInspector.NamedFlow(payload);
1728 }
1729
1730 /**
1731 * @constructor
1732 * @param {!Array.<!CSSAgent.NamedFlow>} payload
1733 */
1734 WebInspector.NamedFlowCollection = function(payload)
1735 {
1736 /** @type {!Object.<string, !WebInspector.NamedFlow>} */
1737 this.namedFlowMap = {};
1738
1739 for (var i = 0; i < payload.length; ++i) {
1740 var namedFlow = WebInspector.NamedFlow.parsePayload(payload[i]);
1741 this.namedFlowMap[namedFlow.name] = namedFlow;
1742 }
1743 }
1744
1745 WebInspector.NamedFlowCollection.prototype = {
1746 /**
1747 * @param {!WebInspector.NamedFlow} namedFlow
1748 */
1749 _appendNamedFlow: function(namedFlow)
1750 {
1751 this.namedFlowMap[namedFlow.name] = namedFlow;
1752 },
1753
1754 /**
1755 * @param {string} flowName
1756 */
1757 _removeNamedFlow: function(flowName)
1758 {
1759 delete this.namedFlowMap[flowName];
1760 },
1761
1762 /**
1763 * @param {string} flowName
1764 * @return {?WebInspector.NamedFlow}
1765 */
1766 flowByName: function(flowName)
1767 {
1768 var namedFlow = this.namedFlowMap[flowName];
1769
1770 if (!namedFlow)
1771 return null;
1772 return namedFlow;
1773 }
1774 }
1775
1776 /** 1544 /**
1777 * @constructor 1545 * @constructor
1778 * @param {!WebInspector.CSSStyleModel} cssModel 1546 * @param {!WebInspector.CSSStyleModel} cssModel
1779 */ 1547 */
1780 WebInspector.CSSStyleModel.ComputedStyleLoader = function(cssModel) 1548 WebInspector.CSSStyleModel.ComputedStyleLoader = function(cssModel)
1781 { 1549 {
1782 this._cssModel = cssModel; 1550 this._cssModel = cssModel;
1783 /** @type {!Object.<*, !Array.<function(?WebInspector.CSSStyleDeclaration)>> } */ 1551 /** @type {!Object.<*, !Array.<function(?WebInspector.CSSStyleDeclaration)>> } */
1784 this._nodeIdToCallbackData = {}; 1552 this._nodeIdToCallbackData = {};
1785 } 1553 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1829 for (var i = 0; i < callbacks.length; ++i) 1597 for (var i = 0; i < callbacks.length; ++i)
1830 callbacks[i](computedStyle); 1598 callbacks[i](computedStyle);
1831 } 1599 }
1832 } 1600 }
1833 } 1601 }
1834 1602
1835 /** 1603 /**
1836 * @type {!WebInspector.CSSStyleModel} 1604 * @type {!WebInspector.CSSStyleModel}
1837 */ 1605 */
1838 WebInspector.cssModel; 1606 WebInspector.cssModel;
OLDNEW
« no previous file with comments | « Source/devtools/front_end/CSSNamedFlowView.js ('k') | Source/devtools/front_end/ElementsPanel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698