Title: [173528] trunk/Source/WebCore
Revision
173528
Author
cdu...@apple.com
Date
2014-09-11 12:26:16 -0700 (Thu, 11 Sep 2014)

Log Message

Use tighter typing for Document::ownerElement() return value
https://bugs.webkit.org/show_bug.cgi?id=136746

Reviewed by Ryosuke Niwa.

Use tighter typing for Document::ownerElement() return value at call
sites to increase code readability a bit and allow the compiler to
generate slightly more efficient code in some cases. In particular,
the more efficient HTMLElement::hasTagName(HTMLQualifiedName) is
now called in several cases instead of the one on Node. This bypasses
unnecessary isHTMLElement() checks.

No new tests, no behavior change.

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::alternativeTextForWebArea):
* dom/Document.cpp:
(WebCore::Document::updateLayout):
(WebCore::Document::topDocument):
* html/HTMLBodyElement.cpp:
(WebCore::HTMLBodyElement::insertedInto):
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintFillLayerExtended):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollRectToVisible):
* rendering/RenderView.cpp:
(WebCore::RenderView::paintBoxDecorations):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (173527 => 173528)


--- trunk/Source/WebCore/ChangeLog	2014-09-11 19:22:06 UTC (rev 173527)
+++ trunk/Source/WebCore/ChangeLog	2014-09-11 19:26:16 UTC (rev 173528)
@@ -1,3 +1,33 @@
+2014-09-11  Chris Dumez  <cdu...@apple.com>
+
+        Use tighter typing for Document::ownerElement() return value
+        https://bugs.webkit.org/show_bug.cgi?id=136746
+
+        Reviewed by Ryosuke Niwa.
+
+        Use tighter typing for Document::ownerElement() return value at call
+        sites to increase code readability a bit and allow the compiler to
+        generate slightly more efficient code in some cases. In particular,
+        the more efficient HTMLElement::hasTagName(HTMLQualifiedName) is
+        now called in several cases instead of the one on Node. This bypasses
+        unnecessary isHTMLElement() checks.
+
+        No new tests, no behavior change.
+
+        * accessibility/AccessibilityNodeObject.cpp:
+        (WebCore::AccessibilityNodeObject::alternativeTextForWebArea):
+        * dom/Document.cpp:
+        (WebCore::Document::updateLayout):
+        (WebCore::Document::topDocument):
+        * html/HTMLBodyElement.cpp:
+        (WebCore::HTMLBodyElement::insertedInto):
+        * rendering/RenderBoxModelObject.cpp:
+        (WebCore::RenderBoxModelObject::paintFillLayerExtended):
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::scrollRectToVisible):
+        * rendering/RenderView.cpp:
+        (WebCore::RenderView::paintBoxDecorations):
+
 2014-09-10  Roger Fong  <roger_f...@apple.com>
 
         Check for varying packing restrictions per program instead of per shader.

Modified: trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp (173527 => 173528)


--- trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp	2014-09-11 19:22:06 UTC (rev 173527)
+++ trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp	2014-09-11 19:26:16 UTC (rev 173528)
@@ -1461,25 +1461,21 @@
             return ariaLabel;
     }
     
-    Node* owner = document->ownerElement();
-    if (owner) {
+    if (HTMLFrameOwnerElement* owner = document->ownerElement()) {
         if (owner->hasTagName(frameTag) || owner->hasTagName(iframeTag)) {
-            const AtomicString& title = toElement(owner)->getAttribute(titleAttr);
+            const AtomicString& title = owner->getAttribute(titleAttr);
             if (!title.isEmpty())
                 return title;
-            return toElement(owner)->getNameAttribute();
         }
-        if (owner->isHTMLElement())
-            return toHTMLElement(owner)->getNameAttribute();
+        return owner->getNameAttribute();
     }
     
     String documentTitle = document->title();
     if (!documentTitle.isEmpty())
         return documentTitle;
     
-    owner = document->body();
-    if (owner && owner->isHTMLElement())
-        return toHTMLElement(owner)->getNameAttribute();
+    if (HTMLElement* body = document->body())
+        return body->getNameAttribute();
     
     return String();
 }

Modified: trunk/Source/WebCore/dom/Document.cpp (173527 => 173528)


--- trunk/Source/WebCore/dom/Document.cpp	2014-09-11 19:22:06 UTC (rev 173527)
+++ trunk/Source/WebCore/dom/Document.cpp	2014-09-11 19:26:16 UTC (rev 173528)
@@ -1808,8 +1808,8 @@
 
     RenderView::RepaintRegionAccumulator repaintRegionAccumulator(renderView());
 
-    if (Element* oe = ownerElement())
-        oe->document().updateLayout();
+    if (HTMLFrameOwnerElement* owner = ownerElement())
+        owner->document().updateLayout();
 
     updateStyleIfNeeded();
 
@@ -4388,7 +4388,7 @@
     }
 
     Document* document = const_cast<Document*>(this);
-    while (Element* element = document->ownerElement())
+    while (HTMLFrameOwnerElement* element = document->ownerElement())
         document = &element->document();
     return *document;
 }

Modified: trunk/Source/WebCore/html/HTMLBodyElement.cpp (173527 => 173528)


--- trunk/Source/WebCore/html/HTMLBodyElement.cpp	2014-09-11 19:22:06 UTC (rev 173527)
+++ trunk/Source/WebCore/html/HTMLBodyElement.cpp	2014-09-11 19:26:16 UTC (rev 173528)
@@ -174,7 +174,7 @@
     // FIXME: It's surprising this is web compatible since it means a marginwidth and marginheight attribute can
     // magically appear on the <body> of all documents embedded through <iframe> or <frame>.
     // FIXME: Perhaps this code should be in attach() instead of here.
-    Element* ownerElement = document().ownerElement();
+    HTMLFrameOwnerElement* ownerElement = document().ownerElement();
     if (ownerElement && isHTMLFrameElementBase(*ownerElement)) {
         HTMLFrameElementBase& ownerFrameElement = toHTMLFrameElementBase(*ownerElement);
         int marginWidth = ownerFrameElement.marginWidth();

Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (173527 => 173528)


--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp	2014-09-11 19:22:06 UTC (rev 173527)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp	2014-09-11 19:26:16 UTC (rev 173528)
@@ -773,7 +773,7 @@
     if (isRoot) {
         isOpaqueRoot = true;
         if (!bgLayer->next() && !(bgColor.isValid() && bgColor.alpha() == 255)) {
-            Element* ownerElement = document().ownerElement();
+            HTMLFrameOwnerElement* ownerElement = document().ownerElement();
             if (ownerElement) {
                 if (!ownerElement->hasTagName(frameTag)) {
                     // Locate the <body> element using the DOM.  This is easier than trying

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (173527 => 173528)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2014-09-11 19:22:06 UTC (rev 173527)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2014-09-11 19:26:16 UTC (rev 173528)
@@ -2374,7 +2374,7 @@
             newRect = LayoutRect(box->localToAbsoluteQuad(FloatQuad(FloatRect(localExposeRect)), UseTransforms).boundingBox());
         }
     } else if (!parentLayer && renderer().isBox() && renderBox()->canBeProgramaticallyScrolled()) {
-        Element* ownerElement = renderer().document().ownerElement();
+        HTMLFrameOwnerElement* ownerElement = renderer().document().ownerElement();
 
         if (ownerElement && ownerElement->renderer()) {
             HTMLFrameElementBase* frameElementBase = nullptr;

Modified: trunk/Source/WebCore/rendering/RenderView.cpp (173527 => 173528)


--- trunk/Source/WebCore/rendering/RenderView.cpp	2014-09-11 19:22:06 UTC (rev 173527)
+++ trunk/Source/WebCore/rendering/RenderView.cpp	2014-09-11 19:26:16 UTC (rev 173528)
@@ -537,9 +537,8 @@
     // layers with reflections, or transformed layers.
     // FIXME: This needs to be dynamic.  We should be able to go back to blitting if we ever stop being inside
     // a transform, transparency layer, etc.
-    Element* elt;
-    for (elt = document().ownerElement(); elt && elt->renderer(); elt = elt->document().ownerElement()) {
-        RenderLayer* layer = elt->renderer()->enclosingLayer();
+    for (HTMLFrameOwnerElement* element = document().ownerElement(); element && element->renderer(); element = element->document().ownerElement()) {
+        RenderLayer* layer = element->renderer()->enclosingLayer();
         if (layer->cannotBlitToWindow()) {
             frameView().setCannotBlitToWindow();
             break;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to