1. 29 May, 2008 18 commits
    • hyatt@apple.com's avatar
      2008-05-29 David Hyatt <hyatt@apple.com> · 7d2be025
      hyatt@apple.com authored
              Improve the performance of the GUIMark benchmark by 2x in the CoreGraphics code path.
      
              Whenever a foreground image changes size rapidly, we will now dynamically shift into rendering it
              using low quality scaling.  Once the animation completes, the image will repaint at high quality.
              Scaled images will still render at high quality by default, only shifting into low quality if
              the scale factor is rapidly changing.  This change raises GUIMark from 21fps to 34fps on my machine.
      
              Rewrite the Image draw method to avoid the use of throwaway CG subimages.  Instead the entire image is
              always drawn (with the appropriate clip and scale set up to make sure the correct subimage portion shows up
              in the destination rect).  This change raises GUIMark from 34fps to 43fps on my machine.
      
              Reviewed by Darin
      
              * platform/graphics/GraphicsContext.cpp:
              (WebCore::GraphicsContext::drawImage):
              * platform/graphics/cg/ImageCG.cpp:
              (WebCore::BitmapImage::draw):
              * rendering/RenderImage.cpp:
              (WebCore::RenderImageScaleData::RenderImageScaleData):
              (WebCore::RenderImageScaleData::~RenderImageScaleData):
              (WebCore::RenderImageScaleData::size):
              (WebCore::RenderImageScaleData::time):
              (WebCore::RenderImageScaleData::useLowQualityScale):
              (WebCore::RenderImageScaleData::hiqhQualityRepaintTimer):
              (WebCore::RenderImageScaleData::setSize):
              (WebCore::RenderImageScaleData::setTime):
              (WebCore::RenderImageScaleData::setUseLowQualityScale):
              (WebCore::RenderImageScaleObserver::shouldImagePaintAtLowQuality):
              (WebCore::RenderImageScaleObserver::imageDestroyed):
              (WebCore::RenderImageScaleObserver::highQualityRepaintTimerFired):
              (WebCore::RenderImage::highQualityRepaintTimerFired):
              (WebCore::RenderImage::~RenderImage):
              (WebCore::RenderImage::paintReplaced):
              * rendering/RenderImage.h:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34210 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      7d2be025
    • justin.garcia@apple.com's avatar
      WebCore: · ab87ef8e
      justin.garcia@apple.com authored
      2008-05-29  Justin Garcia  <justin.garcia@apple.com>
      
              Reviewed by Eric.
      
              <rdar://problem/5847330> REGRESSION CrashTracer: [USER] 536 crashes at WebCore::highestAncestor
      
              * editing/CompositeEditCommand.cpp:
              (WebCore::CompositeEditCommand::breakOutOfEmptyListItem): Don't break out of an empty
              list item if its parent is non-editable, since doing so will move into non-editable content.
              * editing/DeleteSelectionCommand.cpp:
              (WebCore::DeleteSelectionCommand::initializePositionData): We want to prevent merges from
              table cells even if those table cells are non-editable.
              * editing/htmlediting.cpp:
              (WebCore::enclosingNodeOfType): Can now return non-editable nodes, for cases where the caller 
              isn't going to do editing in the returned node.
              * editing/htmlediting.h:
      
      LayoutTests:
      
      2008-05-28  Justin Garcia  <justin.garcia@apple.com>
      
              Reviewed by Eric.
              
              <rdar://problem/5847330> REGRESSION CrashTracer: [USER] 536 crashes at WebCore::highestAncestor
      
              * editing/deleting/5847330-1-expected.txt: Added.
              * editing/deleting/5847330-1.html: Added.
              * editing/deleting/5847330-2-expected.txt: Added.
              * editing/deleting/5847330-2.html: Added.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34209 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ab87ef8e
    • andersca@apple.com's avatar
      ../mac: · d94d22f1
      andersca@apple.com authored
      2008-05-29  Anders Carlsson  <andersca@apple.com>
      
              Reviewed by Brady.
      
              <rdar://problem/5970312> 
              icon file specified for stand alone web app causes crash if the icon can't be found
              
              Handle the case where iconData is null.
              
              * Misc/WebIconFetcher.mm:
              (WebIconFetcherClient::finishedFetchingIcon):
      
      ../win:
      
      2008-05-29  Anders Carlsson  <andersca@apple.com>
      
              Reviewed by Brady.
      
              <rdar://problem/5970312> 
              icon file specified for stand alone web app causes crash if the icon can't be found
              
              Handle the case where iconData is null.
      
              * WebIconFetcher.cpp:
              (WebIconFetcherClient::finishedFetchingIcon):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      d94d22f1
    • andersca@apple.com's avatar
      WebCore: · d2517f04
      andersca@apple.com authored
      2008-05-29  Anders Carlsson  <andersca@apple.com>
      
              Reviewed by Mitz.
      
              <rdar://problem/5971845>
              https://bugs.webkit.org/show_bug.cgi?id=19313
              Add version member to NPCocoaEvent
              
              * bridge/npapi.h:
      
      WebKit/mac:
      
      2008-05-29  Anders Carlsson  <andersca@apple.com>
      
              Reviewed by Mitz.
      
              <rdar://problem/5971845>
              https://bugs.webkit.org/show_bug.cgi?id=19313
              Add version member to NPCocoaEvent
      
              Initialize the version member to 0 for all events.
              
              * Plugins/WebNetscapePluginEventHandlerCocoa.mm:
              (initializeEvent):
              (WebNetscapePluginEventHandlerCocoa::drawRect):
              (WebNetscapePluginEventHandlerCocoa::sendMouseEvent):
              (WebNetscapePluginEventHandlerCocoa::flagsChanged):
              (WebNetscapePluginEventHandlerCocoa::sendKeyEvent):
              (WebNetscapePluginEventHandlerCocoa::windowFocusChanged):
              (WebNetscapePluginEventHandlerCocoa::focusChanged):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34207 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      d2517f04
    • kevino@webkit.org's avatar
      Reviewed by Darin Adler. · 253906de
      kevino@webkit.org authored
              
      Restore original behavior of isOSX() referring to the Mac port, not the OS itself.
              
      https://bugs.webkit.org/show_bug.cgi?id=19311
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34206 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      253906de
    • sfalken@apple.com's avatar
      2008-05-29 Steve Falkenburg <sfalken@apple.com> · 0aaf9d1f
      sfalken@apple.com authored
              Build fix.
      
              * kjs/array_instance.cpp:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34205 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      0aaf9d1f
    • ap@webkit.org's avatar
      Reviewed by Darin. · 56cb5179
      ap@webkit.org authored
              https://bugs.webkit.org/show_bug.cgi?id=19294
              <rdar://problem/5969062> A crash when iterating over a sparse array backwards.
      
              * kjs/array_instance.cpp: Turned sparseArrayCutoff into a macro, so that using max() on it
              doesn't cause a PIC branch.
              (KJS::ArrayInstance::increaseVectorLength): Added a comment about this function not
              preserving class invariants.
              (KJS::ArrayInstance::put): Update m_storage after reallocation. Move values that fit to
              the vector from the map in all code paths.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34204 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      56cb5179
    • mitz@apple.com's avatar
      Reviewed by Jessica Kahn. · 4e770aa5
      mitz@apple.com authored
              - fix <rdar://problem/5965013> Page 2 does not print correctly
      
              When printing, _recursiveDisplayRectIfNeededIgnoringOpacity:... and
              _recursiveDisplayAllDirtyWithLockFocus:... can be invoked without
              -viewWillDraw being sent first, which could lead to painting without
              valid layout. The fix is to ensure up-to-date layout in those methods
              when printing.
      
              * WebView/WebHTMLView.mm:
              (-[WebHTMLView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]):
              (-[WebHTMLView _recursiveDisplayAllDirtyWithLockFocus:visRect:]):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34203 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      4e770aa5
    • ap@webkit.org's avatar
      Reviewed by Adam Roben. · daed70e3
      ap@webkit.org authored
              <rdar://problem/5960682> REGRESSION(r30535): Crashes on iExploder in checkForHeadCharset().
      
              I don't see how to make a reliable test, but iExploder catches this quickly.
      
              * loader/TextResourceDecoder.cpp:
              (WebCore::TextResourceDecoder::checkForHeadCharset): Correct the length passed to
              findIgnoringCase().
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34202 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      daed70e3
    • ap@webkit.org's avatar
      Reviewed by Adam Roben. · 032862b0
      ap@webkit.org authored
              Fix run-iexploder-tests and run-mangleme-tests to work with updated shared scripts and
              configuration files.
      
              * Scripts/run-iexploder-tests:
              * Scripts/run-mangleme-tests:
              Renamed runSafari to not conflict with the one in webkitdirs.
              Added SSLCertificateFile option for httpd, as now needed.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34201 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      032862b0
    • alp@webkit.org's avatar
      2008-05-29 Peter Kasting <zerodpx@gmail.com> · 567092fb
      alp@webkit.org authored
              Reviewed by Dave Hyatt.
      
              https://bugs.webkit.org/show_bug.cgi?id=19273
              Handle looping GIFs correctly (at least in the open source GIF decoder) even when
              the loop count doesn't appear in the initial data packets.
      
              * platform/graphics/BitmapImage.cpp:
              (WebCore::BitmapImage::cacheFrame):
              (WebCore::BitmapImage::startAnimation):
              (WebCore::BitmapImage::advanceAnimation):
              * platform/image-decoders/gif/GIFImageDecoder.cpp:
              (WebCore::GIFImageDecoder::GIFImageDecoder):
              (WebCore::GIFImageDecoder::repetitionCount):
              (WebCore::GIFImageDecoder::gifComplete):
              * platform/image-decoders/gif/GIFImageDecoder.h:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34200 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      567092fb
    • alp@webkit.org's avatar
      2008-05-29 Brent Fulgham <bfulgham@gmail.com> · b5743686
      alp@webkit.org authored
              Reviewed by Alp Toker.
      
              http://bugs.webkit.org/show_bug.cgi?id=19284
              Correct Windows (Cairo) Build Regressions
      
              Correct small Windows (Cairo) build regressions in recent updates.
      
              * platform/graphics/SimpleFontData.h:  Correct build regression due
                to r32781 (additional use of m_syntheticBoldOffset in GDI code).
              * platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h:
                Correct build regression due to r31830 (change of clip signature
                to use FloatRect rather than IntRect).
              * platform/graphics/win/SimpleFontDataCairoWin.cpp:
              (WebCore::SimpleFontData::platformInit):  Initialize
              m_syntheticBoldOffset
              * platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
              (WebCore::JPEGImageReader::JPEGImageReader):  Work around build
                error due to warnings about _setjmp treated as errors.
              * platform/image-decoders/png/PNGImageDecoder.cpp:  Work around
                build error due to warnings about _setjmp treated as errors.
              * platform/network/curl/ResourceHandleCurl.cpp:  Correct build error
                due to different order (and content) of include files when building
                with CoreFoundation (but not CoreGraphics).
              * platform/network/curl/ResourceHandleManager.cpp:
              (WebCore::ResourceHandleManager::setupPOST):  Correct build error
                due to Visual Studio compiler bug.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34199 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b5743686
    • hausmann@webkit.org's avatar
      2008-05-29 Thiago Macieira <tjmaciei@trolltech.com> · 56079a32
      hausmann@webkit.org authored
              Reviewed by Simon.
      
              Fix compilation in Solaris with Sun CC
      
              Lots of WebKit code uses C99 functions that, strict as it
              is, the Solaris system doesn't provide in C++. So we must define them
              for both GCC and the Sun CC.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34198 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      56079a32
    • ap@webkit.org's avatar
      Reviewed by Darin. · 8aba93cd
      ap@webkit.org authored
              https://bugs.webkit.org/show_bug.cgi?id=19215
              REGRESSION: transformToDocument fails when xsl includes &#160;
      
              Test: fast/xsl/nbsp-in-stylesheet.html
      
              * editing/markup.cpp:
              (WebCore::appendAttributeValue):
              (WebCore::appendEscapedContent):
              (WebCore::escapeContentText):
              (WebCore::appendQuotedURLAttributeValue):
              (WebCore::appendNamespace):
              (WebCore::appendStartMarkup):
              (WebCore::appendDocumentType):
              (WebCore::createMarkup):
              Only escape non-breaking spaces in HTML documents. In Firefox, this behavior is also limited
              to innerHTML, but we don't have a separate code path for it, and do not necessarily want to.
      
              * page/Frame.cpp:
              (WebCore::Frame::documentTypeString):
              * dom/CDATASection.cpp:
              * dom/CDATASection.h:
              * dom/Comment.cpp:
              * dom/Comment.h:
              * dom/DocumentType.cpp:
              * dom/DocumentType.h:
              * dom/ProcessingInstruction.cpp:
              * dom/ProcessingInstruction.h:
              While at it, I also wanted to fix escaping for these nodes, but it turned out that FIXMEs were
              incorrect. So, I just moved their serialization to markup.cpp for consistency.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34197 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      8aba93cd
    • hausmann@webkit.org's avatar
      Kavindra Devi Palaraja <kdpalara@trolltech.com> · 3f8a426f
      hausmann@webkit.org authored
      Doc: Mention the requirement of a QApplication with QtWebKit
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34196 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      3f8a426f
    • 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 22 commits