Diff
Modified: trunk/LayoutTests/ChangeLog (131186 => 131187)
--- trunk/LayoutTests/ChangeLog 2012-10-12 15:12:10 UTC (rev 131186)
+++ trunk/LayoutTests/ChangeLog 2012-10-12 15:18:23 UTC (rev 131187)
@@ -1,3 +1,14 @@
+2012-10-12 Alexander Pavlov <[email protected]>
+
+ Web Inspector: [Styles] !important priority not honored inside the same declaration
+ https://bugs.webkit.org/show_bug.cgi?id=99170
+
+ Reviewed by Yury Semikhatsky.
+
+ * inspector/elements/elements-panel-styles-expected.txt:
+ * inspector/elements/resources/elements-panel-styles.css:
+ (.foo):
+
2012-10-12 Sudarsana Nagineni <[email protected]>
[EFL] Gardening to make the bots green
Modified: trunk/LayoutTests/inspector/elements/elements-panel-styles-expected.txt (131186 => 131187)
--- trunk/LayoutTests/inspector/elements/elements-panel-styles-expected.txt 2012-10-12 15:12:10 UTC (rev 131186)
+++ trunk/LayoutTests/inspector/elements/elements-panel-styles-expected.txt 2012-10-12 15:18:23 UTC (rev 131187)
@@ -13,11 +13,11 @@
border-top-right-radius: 5px;
.foo - 5px elements-panel-styles.css:14
color: rgb(0, 0, 255);
- .foo, .foo::before - blue elements-panel-styles.css:22
+ .foo, .foo::before - blue elements-panel-styles.css:24
/-- overloaded --/ .foo - black elements-panel-styles.css:14
display: block;
/-- overloaded --/ element.style - none
- .foo, .foo::before - block !important elements-panel-styles.css:22
+ .foo, .foo::before - block !important elements-panel-styles.css:24
/-- overloaded --/ div - block user agent stylesheet
font-family: serif;
#container - serif elements-panel-styles.css:5
@@ -27,6 +27,9 @@
font-style: italic;
#container .foo - italic !important elements-panel-styles.css:10
/-- overloaded --/ .foo - normal !important elements-panel-styles.css:14
+font-weight: normal;
+ .foo - normal !important elements-panel-styles.css:14
+ /-- overloaded --/ .foo - bold elements-panel-styles.css:14
margin-bottom: 2px;
.foo - 2px elements-panel-styles.css:14
margin-left: 0px;
@@ -49,10 +52,10 @@
font-style: italic !important;
[expanded]
-.foo { (elements-panel-styles.css:41)
+.foo { (elements-panel-styles.css:43)
[expanded]
-.foo, .foo::before { (elements-panel-styles.css:22)
+.foo, .foo::before { (elements-panel-styles.css:24)
content: "[before Foo]";
color: blue;
display: block !important;
@@ -72,6 +75,8 @@
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
/-- overloaded --/ font-style: normal !important;
+font-weight: normal !important;
+/-- overloaded --/ font-weight: bold;
[expanded]
div[Attributes Style] { ()
@@ -95,14 +100,14 @@
======== Pseudo ::before element ========
[expanded]
-.foo::before { (elements-panel-styles.css:45)
+.foo::before { (elements-panel-styles.css:47)
[expanded]
-.foo::before { (elements-panel-styles.css:28)
+.foo::before { (elements-panel-styles.css:30)
color: red;
[expanded]
-.foo, .foo::before { (elements-panel-styles.css:22)
+.foo, .foo::before { (elements-panel-styles.css:24)
content: "[before Foo]";
/-- overloaded --/ color: blue;
display: block !important;
@@ -110,12 +115,12 @@
======== Pseudo ::after element ========
[expanded]
-.foo::after { (elements-panel-styles.css:36)
+.foo::after { (elements-panel-styles.css:38)
font-family: courier;
content: "[after Foo 2]";
[expanded]
-.foo::after { (elements-panel-styles.css:32)
+.foo::after { (elements-panel-styles.css:34)
/-- overloaded --/ content: "[after Foo]";
color: green;
Modified: trunk/LayoutTests/inspector/elements/resources/elements-panel-styles.css (131186 => 131187)
--- trunk/LayoutTests/inspector/elements/resources/elements-panel-styles.css 2012-10-12 15:12:10 UTC (rev 131186)
+++ trunk/LayoutTests/inspector/elements/resources/elements-panel-styles.css 2012-10-12 15:18:23 UTC (rev 131187)
@@ -17,6 +17,8 @@
margin: 10px 0 2px;
border-radius: 5px;
font-style: normal !important;
+ font-weight: normal !important;
+ font-weight: bold;
}
.foo, .foo::before {
Modified: trunk/Source/WebCore/ChangeLog (131186 => 131187)
--- trunk/Source/WebCore/ChangeLog 2012-10-12 15:12:10 UTC (rev 131186)
+++ trunk/Source/WebCore/ChangeLog 2012-10-12 15:18:23 UTC (rev 131187)
@@ -1,3 +1,19 @@
+2012-10-12 Alexander Pavlov <[email protected]>
+
+ Web Inspector: [Styles] !important priority not honored inside the same declaration
+ https://bugs.webkit.org/show_bug.cgi?id=99170
+
+ Reviewed by Yury Semikhatsky.
+
+ Property priorities were not considered inside the same CSS rule. !important properties should stay active
+ even if followed by non-!important properties with the same name.
+
+ * inspector/InspectorStyleSheet.cpp:
+ (WebCore::InspectorStyle::styleWithProperties):
+ * inspector/front-end/StylesSidebarPane.js:
+ (WebInspector.StylePropertiesSection.prototype.onpopulate):
+ (WebInspector.ComputedStylePropertiesSection.prototype.rebuildComputedTrace):
+
2012-10-12 Pavel Feldman <[email protected]>
Web Inspector: use hard-coded zoom factors instead of 1.2 powers.
Modified: trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp (131186 => 131187)
--- trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp 2012-10-12 15:12:10 UTC (rev 131186)
+++ trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp 2012-10-12 15:18:23 UTC (rev 131187)
@@ -497,6 +497,8 @@
RefPtr<Array<TypeBuilder::CSS::ShorthandEntry> > shorthandEntries = Array<TypeBuilder::CSS::ShorthandEntry>::create();
HashMap<String, RefPtr<TypeBuilder::CSS::CSSProperty> > propertyNameToPreviousActiveProperty;
HashSet<String> foundShorthands;
+ String previousPriority;
+ String previousStatus;
for (Vector<InspectorStyleProperty>::iterator it = properties.begin(), itEnd = properties.end(); it != itEnd; ++it) {
const CSSPropertySourceData& propertyEntry = it->sourceData;
@@ -532,9 +534,18 @@
String canonicalPropertyName = propertyId ? getPropertyNameString(propertyId) : name;
HashMap<String, RefPtr<TypeBuilder::CSS::CSSProperty> >::iterator activeIt = propertyNameToPreviousActiveProperty.find(canonicalPropertyName);
if (activeIt != propertyNameToPreviousActiveProperty.end()) {
- if (propertyEntry.parsedOk)
- shouldInactivate = true;
- else {
+ if (propertyEntry.parsedOk) {
+ bool successPriority = activeIt->value->getString(TypeBuilder::CSS::CSSProperty::Priority, &previousPriority);
+ bool successStatus = activeIt->value->getString(TypeBuilder::CSS::CSSProperty::Status, &previousStatus);
+ if (successStatus && previousStatus != "inactive") {
+ if (propertyEntry.important || !successPriority) // Priority not set == "not important".
+ shouldInactivate = true;
+ else if (status == TypeBuilder::CSS::CSSProperty::Status::Active) {
+ // Inactivate a non-important property following the same-named important property.
+ status = TypeBuilder::CSS::CSSProperty::Status::Inactive;
+ }
+ }
+ } else {
bool previousParsedOk;
bool success = activeIt->value->getBoolean(TypeBuilder::CSS::CSSProperty::ParsedOk, &previousParsedOk);
if (success && !previousParsedOk)
Modified: trunk/Source/WebCore/inspector/front-end/StylesSidebarPane.js (131186 => 131187)
--- trunk/Source/WebCore/inspector/front-end/StylesSidebarPane.js 2012-10-12 15:12:10 UTC (rev 131186)
+++ trunk/Source/WebCore/inspector/front-end/StylesSidebarPane.js 2012-10-12 15:18:23 UTC (rev 131187)
@@ -1045,7 +1045,7 @@
var isShorthand = !!WebInspector.CSSCompletions.cssPropertiesMetainfo.longhands(property.name);
var inherited = this.isPropertyInherited(property.name);
- var overloaded = this.isPropertyOverloaded(property.name);
+ var overloaded = property.inactive || this.isPropertyOverloaded(property.name);
var item = new WebInspector.StylePropertyTreeElement(this, this._parentPane, this.styleRule, style, property, isShorthand, inherited, overloaded);
this.propertiesTreeOutline.appendChild(item);
}
@@ -1079,7 +1079,7 @@
// Generate synthetic shorthand we have a value for.
var shorthandProperty = new WebInspector.CSSProperty(style, style.allProperties.length, shorthand, style.shorthandValue(shorthand), "", "style", true, true, undefined);
- var overloaded = this.isPropertyOverloaded(property.name, true);
+ var overloaded = property.inactive || this.isPropertyOverloaded(property.name, true);
var item = new WebInspector.StylePropertyTreeElement(this, this._parentPane, this.styleRule, style, shorthandProperty, /* isShorthand */ true, /* inherited */ false, overloaded);
this.propertiesTreeOutline.appendChild(item);
generatedShorthands[shorthand] = shorthandProperty;
@@ -1089,7 +1089,7 @@
continue; // Shorthand for the property found.
var inherited = this.isPropertyInherited(property.name);
- var overloaded = this.isPropertyOverloaded(property.name, isShorthand);
+ var overloaded = property.inactive || this.isPropertyOverloaded(property.name, isShorthand);
var item = new WebInspector.StylePropertyTreeElement(this, this._parentPane, this.styleRule, style, property, isShorthand, inherited, overloaded);
this.propertiesTreeOutline.appendChild(item);
}
@@ -1450,7 +1450,7 @@
subtitle.appendChild(section._createRuleOriginNode());
var childElement = new TreeElement(fragment, null, false);
treeElement.appendChild(childElement);
- if (section.isPropertyOverloaded(property.name))
+ if (property.inactive || section.isPropertyOverloaded(property.name))
childElement.listItemElement.addStyleClass("overloaded");
if (!property.parsedOk)
childElement.listItemElement.addStyleClass("not-parsed-ok");