1. 29 May, 2008 3 commits
    • hausmann@webkit.org's avatar
      David Boddie <dboddie@trolltech.com> · 3bcd1202
      hausmann@webkit.org authored
      Some clarifications for the documentation.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34195 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      3bcd1202
    • mjs@apple.com's avatar
      Fix ChangeLog typos. · 45ee7b5e
      mjs@apple.com authored
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34194 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      45ee7b5e
    • mjs@apple.com's avatar
      WebCore: · bf259502
      mjs@apple.com authored
      2008-05-29  Maciej Stachowiak  <mjs@apple.com>
      
              Reviewed by Dave Hyatt.
      
              - speed up DHTML using lazy style resolution and rendere creation
      
              This change introduces the concept of "lazy attach" - when a node
              is lazy attached, then instead of resolving style and creating a
              renderer right away, we just mark it as needing a style recalc.
              
              The patch makes use of this mechanism when inserting nodes directly
              using DOM APIs from script. For now this is only done for the
              JavaScript language binding but could also be done for other
              bindings in the future.
              
              Lazy attach helps some common DHTML patterns - when a node is
              added to the DOM, and then subsequently changed in a
              style-affecting way, this causes an extra style recalc. This is a
              fairly common pattern so it is better to be lazy.
              
              * bindings/js/JSNodeCustom.cpp:
              (WebCore::JSNode::insertBefore): Request lazy attach.
              (WebCore::JSNode::replaceChild): ditto
              (WebCore::JSNode::appendChild): ditto
              * dom/ContainerNode.cpp:
              (WebCore::ContainerNode::insertBefore): Support lazy attach.
              (WebCore::ContainerNode::replaceChild): ditto
              (WebCore::ContainerNode::appendChild): ditto
              (WebCore::ContainerNode::detach): Clear "changed child" bit if still set.
              * dom/ContainerNode.h:
              * dom/Element.cpp:
              (WebCore::Element::recalcStyle): Adjusted to properly reattach a
              lazy-attached node.
              * dom/Node.cpp:
              (WebCore::Node::insertBefore): Extra parameter for lazy attach
              (still doesn't do anything).
              (WebCore::Node::replaceChild): ditto
              (WebCore::Node::appendChild): ditto
              (WebCore::Node::setChanged): Unrelated but obvious optimization -
              stop marking ancestor as having a changed child once we already reach
              an ancestor so marked.
              (WebCore::outermostLazyAttachedAncestor): Helper function for lazyAttach.
              (WebCore::Node::lazyAttach): Implement lazy attach.
              (WebCore::Node::canLazyAttach): Virtual method - true for most nodes.
              * dom/Node.h:
              * dom/Text.cpp:
              (WebCore::Text::recalcStyle): Properly handle the case of a reattached node.
              * html/HTMLEmbedElement.h:
              (WebCore::HTMLEmbedElement::canLazyAttach): Refuse lazy attach, since
              plugins and frames do important work at rederer creation time.
              * html/HTMLFrameElementBase.h:
              (WebCore::HTMLFrameElementBase::canLazyAttach): Refuse lazy attach, since
              plugins and frames do important work at rederer creation time.
              * html/HTMLFrameSetElement.cpp:
              (WebCore::HTMLFrameSetElement::recalcStyle): Change order so that
              reattach works properly.
              * html/HTMLObjectElement.h:
              (WebCore::HTMLObjectElement::canLazyAttach): Refuse lazy attach, since
              plugins and frames do important work at rederer creation time.
              * html/HTMLOptGroupElement.cpp:
              (WebCore::HTMLOptGroupElement::insertBefore): Pass along extra param.
              (WebCore::HTMLOptGroupElement::replaceChild): ditto
              (WebCore::HTMLOptGroupElement::appendChild): ditto
              * html/HTMLOptGroupElement.h:
              * html/HTMLSelectElement.cpp:
              (WebCore::HTMLSelectElement::insertBefore): Pass along extra param.
              (WebCore::HTMLSelectElement::replaceChild): ditto
              (WebCore::HTMLSelectElement::appendChild): ditto
              * html/HTMLSelectElement.h:
              * svg/SVGLocatable.cpp:
              (WebCore::SVGLocatable::getBBox): Add missing updateLayout call.
              * svg/SVGTextContentElement.cpp:
              (WebCore::SVGTextContentElement::getNumberOfChars): ditto
              (WebCore::SVGTextContentElement::getComputedTextLength): ditto
              (WebCore::SVGTextContentElement::getSubStringLength): ditto
              (WebCore::SVGTextContentElement::getStartPositionOfChar): ditto
              (WebCore::SVGTextContentElement::getEndPositionOfChar): ditto
              (WebCore::SVGTextContentElement::getExtentOfChar): ditto
              (WebCore::SVGTextContentElement::getRotationOfChar): ditto
              (WebCore::SVGTextContentElement::getCharNumAtPosition): ditto
      
      LayoutTests:
      
      2008-05-29  Maciej Stachowiak  <mjs@apple.com>
      
              Reviewed by Dave Hyatt.
      
              - Test cases for this change: "speed up DHTML using lazy style resolution and rendere creation"
      
              * http/tests/misc/acid3-expected.txt:
              * platform/mac/fast/dynamic/insert-before-table-part-in-continuation-expected.checksum:
              * platform/mac/fast/dynamic/insert-before-table-part-in-continuation-expected.png:
              * platform/mac/fast/dynamic/insert-before-table-part-in-continuation-expected.txt:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34193 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      bf259502
  2. 28 May, 2008 24 commits
  3. 27 May, 2008 13 commits