Rewrite WebHTMLConverter::_elementHasOwnBackgroundColor in C++
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 18 Mar 2014 01:44:17 +0000 (01:44 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 18 Mar 2014 01:44:17 +0000 (01:44 +0000)
https://bugs.webkit.org/show_bug.cgi?id=130291

Reviewed by Andreas Kling.

Extracted HTMLConverterCaches::elementHasOwnBackgroundColor.

* platform/mac/HTMLConverter.mm:
(HTMLConverterCaches::elementHasOwnBackgroundColor):
(-[WebHTMLConverter _elementHasOwnBackgroundColor:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@165788 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/mac/HTMLConverter.mm

index 314996b7a079e8035cfd163e68f152d351583c50..fda4764293a3b81fbd9053f2b80faae690875058 100644 (file)
@@ -1,3 +1,16 @@
+2014-03-17  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Rewrite WebHTMLConverter::_elementHasOwnBackgroundColor in C++
+        https://bugs.webkit.org/show_bug.cgi?id=130291
+
+        Reviewed by Andreas Kling.
+
+        Extracted HTMLConverterCaches::elementHasOwnBackgroundColor.
+
+        * platform/mac/HTMLConverter.mm:
+        (HTMLConverterCaches::elementHasOwnBackgroundColor):
+        (-[WebHTMLConverter _elementHasOwnBackgroundColor:]):
+
 2014-03-17  Ryosuke Niwa  <rniwa@webkit.org>
 
         Rewrite WebHTMLConverter::_elementIsBlockLevel in C++
index 545a1604f5030f23e434b2e62ee53fff992f88da..f72291f17fb2acf7ac09603606fb7b66dee78ecb 100644 (file)
@@ -404,6 +404,7 @@ public:
     String propertyValueForNode(Node&, const String& propertyName);
     bool floatPropertyValueForNode(Node&, const String& propertyName, float&);
     bool isBlockElement(Element&);
+    bool elementHasOwnBackgroundColor(Element&);
 
     PassRefPtr<CSSValue> computedStylePropertyForElement(Element&, const String&);
     PassRefPtr<CSSValue> inlineStylePropertyForElement(Element&, const String&);
@@ -942,6 +943,15 @@ bool HTMLConverterCaches::isBlockElement(Element& element)
     return false;
 }
 
+bool HTMLConverterCaches::elementHasOwnBackgroundColor(Element& element)
+{
+    if (!isBlockElement(element))
+        return false;
+    // In the text system, text blocks (table elements) and documents (body elements)
+    // have their own background colors, which should not be inherited.
+    return element.hasTagName(htmlTag) || element.hasTagName(bodyTag) || propertyValueForNode(element, "display").startsWith("table");
+}
+
 - (BOOL)_elementIsBlockLevel:(DOMElement *)element
 {
     return element && _caches->isBlockElement(*core(element));
@@ -949,17 +959,9 @@ bool HTMLConverterCaches::isBlockElement(Element& element)
 
 - (BOOL)_elementHasOwnBackgroundColor:(DOMElement *)element
 {
-    // In the text system, text blocks (table elements) and documents (body elements)
-    // have their own background colors, which should not be inherited.
-    if ([self _elementIsBlockLevel:element]) {
-        Element* coreElement = core(element);
-        NSString *displayVal = [self _stringForNode:element property:@"display"];
-        if (coreElement->hasTagName(htmlTag) || coreElement->hasTagName(bodyTag) || [displayVal hasPrefix:@"table"])
-            return YES;
-    }
-    return NO;
+    return element && _caches->elementHasOwnBackgroundColor(*core(element));
 }
-    
+
 - (DOMElement *)_blockLevelElementForNode:(DOMNode *)node
 {
     DOMElement *element = (DOMElement *)node;