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

Unified Diff: third_party/WebKit/Source/devtools/front_end/elements/StylesSectionModel.js

Issue 1430123003: DevTools: kill WebInspector.SectionCascade class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@new-rule-out-of-cascade
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/elements/StylesSectionModel.js
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/StylesSectionModel.js b/third_party/WebKit/Source/devtools/front_end/elements/StylesSectionModel.js
deleted file mode 100644
index d4439eaf962d05e440e872100ece6d8bb8db8ed1..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/devtools/front_end/elements/StylesSectionModel.js
+++ /dev/null
@@ -1,206 +0,0 @@
-// Copyright (c) 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @constructor
- * @param {!WebInspector.CSSStyleModel.MatchedStyleResult} matchedStyles
- * @param {!Array<!WebInspector.CSSStyleDeclaration>} styles
- */
-WebInspector.SectionCascade = function(matchedStyles, styles)
-{
- this._matchedStyles = matchedStyles;
- this._styles = styles;
- this.resetActiveProperties();
-}
-
-/**
- * @param {!WebInspector.CSSStyleModel.MatchedStyleResult} matchedStyles
- * @return {!{matched: !WebInspector.SectionCascade, pseudo: !Map.<number, !WebInspector.SectionCascade>}}
- */
-WebInspector.SectionCascade.fromMatchedStyles = function(matchedStyles)
-{
- var matched = new WebInspector.SectionCascade(matchedStyles, matchedStyles.nodeStyles());
- var pseudo = new Map();
-
- var pseudoStyles = matchedStyles.pseudoStyles();
- var pseudoElements = pseudoStyles.keysArray();
- for (var i = 0; i < pseudoElements.length; ++i) {
- var pseudoElement = pseudoElements[i];
- var pseudoCascade = new WebInspector.SectionCascade(matchedStyles, /** @type {!Array<!WebInspector.CSSStyleDeclaration>} */(pseudoStyles.get(pseudoElement)));
- pseudo.set(pseudoElement, pseudoCascade);
- }
-
- return {
- matched: matched,
- pseudo: pseudo
- };
-}
-
-WebInspector.SectionCascade.prototype = {
- /**
- * @param {!WebInspector.CSSStyleDeclaration} style
- * @return {boolean}
- */
- hasMatchingSelectors: function(style)
- {
- return style.parentRule ? style.parentRule.matchingSelectors && style.parentRule.matchingSelectors.length > 0 && this.mediaMatches(style) : true;
- },
-
- /**
- * @param {!WebInspector.CSSStyleDeclaration} style
- * @return {boolean}
- */
- mediaMatches: function(style)
- {
- var media = style.parentRule ? style.parentRule.media : [];
- for (var i = 0; media && i < media.length; ++i) {
- if (!media[i].active())
- return false;
- }
- return true;
- },
-
- /**
- * @param {!WebInspector.CSSStyleDeclaration} style
- * @return {?WebInspector.DOMNode}
- */
- nodeForStyle: function(style)
- {
- return this._matchedStyles.nodeForStyle(style);
- },
-
- /**
- * @param {!WebInspector.CSSStyleDeclaration} style
- * @return {boolean}
- */
- isInherited: function(style)
- {
- return this._matchedStyles.isInherited(style);
- },
-
- /**
- * @return {!Array.<!WebInspector.CSSStyleDeclaration>}
- */
- styles: function()
- {
- return this._styles;
- },
-
- /**
- * @param {!WebInspector.CSSProperty} property
- * @return {?WebInspector.SectionCascade.PropertyState}
- */
- propertyState: function(property)
- {
- if (this._propertiesState.size === 0)
- this._propertiesState = this._computeActiveProperties();
- return this._propertiesState.get(property) || null;
- },
-
- resetActiveProperties: function()
- {
- /** @type {!Map<!WebInspector.CSSProperty, !WebInspector.SectionCascade.PropertyState>} */
- this._propertiesState = new Map();
- },
-
- /**
- * @return {!Map<!WebInspector.CSSProperty, !WebInspector.SectionCascade.PropertyState>}
- */
- _computeActiveProperties: function()
- {
- /** @type {!Set.<string>} */
- var foundImportantProperties = new Set();
- /** @type {!Map.<string, !Map<string, !WebInspector.CSSProperty>>} */
- var propertyToEffectiveRule = new Map();
- /** @type {!Map.<string, !WebInspector.DOMNode>} */
- var inheritedPropertyToNode = new Map();
- /** @type {!Set<string>} */
- var allUsedProperties = new Set();
- var result = new Map();
- for (var i = 0; i < this._styles.length; ++i) {
- var style = this._styles[i];
- if (!this.hasMatchingSelectors(style))
- continue;
-
- /** @type {!Map<string, !WebInspector.CSSProperty>} */
- var styleActiveProperties = new Map();
- var allProperties = style.allProperties;
- for (var j = 0; j < allProperties.length; ++j) {
- var property = allProperties[j];
-
- // Do not pick non-inherited properties from inherited styles.
- var inherited = this._matchedStyles.isInherited(style);
- if (inherited && !WebInspector.CSSMetadata.isPropertyInherited(property.name))
- continue;
-
- if (!property.activeInStyle()) {
- result.set(property, WebInspector.SectionCascade.PropertyState.Overloaded);
- continue;
- }
-
- var canonicalName = WebInspector.CSSMetadata.canonicalPropertyName(property.name);
- if (foundImportantProperties.has(canonicalName)) {
- result.set(property, WebInspector.SectionCascade.PropertyState.Overloaded);
- continue;
- }
-
- if (!property.important && allUsedProperties.has(canonicalName)) {
- result.set(property, WebInspector.SectionCascade.PropertyState.Overloaded);
- continue;
- }
-
- var isKnownProperty = propertyToEffectiveRule.has(canonicalName);
- var inheritedFromNode = inherited ? this._matchedStyles.nodeForStyle(style) : null;
- if (!isKnownProperty && inheritedFromNode && !inheritedPropertyToNode.has(canonicalName))
- inheritedPropertyToNode.set(canonicalName, inheritedFromNode);
-
- if (property.important) {
- if (inherited && isKnownProperty && inheritedFromNode !== inheritedPropertyToNode.get(canonicalName)) {
- result.set(property, WebInspector.SectionCascade.PropertyState.Overloaded);
- continue;
- }
-
- foundImportantProperties.add(canonicalName);
- if (isKnownProperty) {
- var overloaded = propertyToEffectiveRule.get(canonicalName).get(canonicalName);
- result.set(overloaded, WebInspector.SectionCascade.PropertyState.Overloaded);
- propertyToEffectiveRule.get(canonicalName).delete(canonicalName);
- }
- }
-
- styleActiveProperties.set(canonicalName, property);
- allUsedProperties.add(canonicalName);
- propertyToEffectiveRule.set(canonicalName, styleActiveProperties);
- result.set(property, WebInspector.SectionCascade.PropertyState.Active);
- }
-
- // If every longhand of the shorthand is not active, then the shorthand is not active too.
- for (var property of style.leadingProperties()) {
- var canonicalName = WebInspector.CSSMetadata.canonicalPropertyName(property.name);
- if (!styleActiveProperties.has(canonicalName))
- continue;
- var longhands = style.longhandProperties(property.name);
- if (!longhands.length)
- continue;
- var notUsed = true;
- for (var longhand of longhands) {
- var longhandCanonicalName = WebInspector.CSSMetadata.canonicalPropertyName(longhand.name);
- notUsed = notUsed && !styleActiveProperties.has(longhandCanonicalName);
- }
- if (!notUsed)
- continue;
- styleActiveProperties.delete(canonicalName);
- allUsedProperties.delete(canonicalName);
- result.set(property, WebInspector.SectionCascade.PropertyState.Overloaded);
- }
- }
- return result;
- }
-}
-
-/** @enum {string} */
-WebInspector.SectionCascade.PropertyState = {
- Active: "Active",
- Overloaded: "Overloaded"
-}

Powered by Google App Engine
This is Rietveld 408576698