Title: [119213] trunk/Source/WebCore
Revision
119213
Author
[email protected]
Date
2012-06-01 04:53:10 -0700 (Fri, 01 Jun 2012)

Log Message

REGRESSION(r109729) [Form] Rendering of select/optgroup/option combination is too slow.
https://bugs.webkit.org/show_bug.cgi?id=88059

Reviewed by Kent Tamura.

This patch changes to share RenderStyle object among the "option"
elements to improve rendering performance and reducing memory usage
of RenderStyle.

No new tests. This patch doesn't change behavior but rendering performance.

* css/StyleResolver.cpp:
(WebCore::StyleResolver::canShareStyleWithElement): Check attribute value
mismatching for "option" element.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (119212 => 119213)


--- trunk/Source/WebCore/ChangeLog	2012-06-01 11:26:49 UTC (rev 119212)
+++ trunk/Source/WebCore/ChangeLog	2012-06-01 11:53:10 UTC (rev 119213)
@@ -1,3 +1,20 @@
+2012-06-01  Yoshifumi Inoue  <[email protected]>
+
+        REGRESSION(r109729) [Form] Rendering of select/optgroup/option combination is too slow.
+        https://bugs.webkit.org/show_bug.cgi?id=88059
+
+        Reviewed by Kent Tamura.
+
+        This patch changes to share RenderStyle object among the "option" 
+        elements to improve rendering performance and reducing memory usage
+        of RenderStyle.
+
+        No new tests. This patch doesn't change behavior but rendering performance.
+
+        * css/StyleResolver.cpp:
+        (WebCore::StyleResolver::canShareStyleWithElement): Check attribute value
+        mismatching for "option" element.
+
 2012-06-01  Alexander Pavlov  <[email protected]>
 
         Web Inspector: [REGRESSION] Bad layout of "Override device metrics" controls in the Settings dialog

Modified: trunk/Source/WebCore/css/StyleResolver.cpp (119212 => 119213)


--- trunk/Source/WebCore/css/StyleResolver.cpp	2012-06-01 11:26:49 UTC (rev 119212)
+++ trunk/Source/WebCore/css/StyleResolver.cpp	2012-06-01 11:53:10 UTC (rev 119213)
@@ -1389,8 +1389,14 @@
     }
 #endif
 
-    if (element->hasTagName(optionTag))
-        return false;
+    // Check attributes for :disabled, :enabeld, :checked, :default, CSS pseudo class.
+    if (element->hasTagName(optionTag)) {
+        HTMLOptionElement* thisOptionElement = toHTMLOptionElement(element);
+        HTMLOptionElement* otherOptionElement = toHTMLOptionElement(m_element);
+        if (thisOptionElement->isEnabledFormControl() != otherOptionElement->isEnabledFormControl()
+            || thisOptionElement->selected() != otherOptionElement->selected())
+            return false;
+    }
 
     if (element->hasTagName(optgroupTag) && m_element->disabled() != element->disabled())
         return false;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to