Context menu doesn't account for selection semantics
[WebKit-https.git] / Source / WebCore / ChangeLog
index cd25a09..ddde341 100644 (file)
@@ -1,3 +1,446 @@
+2015-04-22  Brent Fulgham  <bfulgham@apple.com>
+
+        Context menu doesn't account for selection semantics
+        https://bugs.webkit.org/show_bug.cgi?id=143958
+        <rdar://problem/19735706>
+
+        Reviewed by Tim Horton.
+
+        Before using the default word-only selection for context menus, check with the
+        lookup service to see if we can get a semantically appropriate selection.
+
+        * editing/EditingBehavior.h:
+        (WebCore::EditingBehavior::shouldSelectBasedOnDictionaryLookup): Added, so that we can
+        behavior correctly when using non-Mac editing behavior.
+        * editing/mac/DictionaryLookup.mm:
+        (WebCore::rangeForDictionaryLookupAtHitTestResult): Modified to honor standard WebKit
+        behavior when hit testing at end-of-line/end-of-paragraph, etc.
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::shouldAppendTrailingWhitespace): New helper function to share code.
+        (WebCore::EventHandler::selectClosestWordFromHitTestResultBasedOnLookup): Added.
+        (WebCore::EventHandler::selectClosestContextualWordFromMouseEvent): Added.
+        (WebCore::EventHandler::selectClosestContextualWordOrLinkFromMouseEvent): Renamed from selectClosestWordOrLinkFromMouseEvent.
+        Have this call the new 'selectClosestContextualWordFromMouseEvent' instead of the vanilla 'selectClosestWordFromMouseEvent'.
+        * page/EventHandler.h:
+        * page/mac/EventHandlerMac.mm:
+        (WebCore::EventHandler::selectClosestWordFromHitTestResultBasedOnLookup): Added.
+
+2015-04-21  Brent Fulgham  <bfulgham@apple.com>
+
+        [Mac] Extend action menus to support PDF
+        https://bugs.webkit.org/show_bug.cgi?id=143895
+        <rdar://problem/19003333>
+
+        Reviewed by Tim Horton.
+
+        Tested by TestWebKitAPI ActionMenus.mm.
+
+        Add a new dictionary lookup method to support PDF Selections. This code replicates the
+        DOM Range-based logic used for HTML documents, but does so using the PDFKit API and
+        its support types.
+
+        * Configurations/Base.xcconfig: Add PDFKit include path for build.
+        * editing/mac/DictionaryLookup.h:
+        * editing/mac/DictionaryLookup.mm:
+        (WebCore::expandSelectionByCharacters): Helper function for PDF support.
+        (WebCore::dictionaryLookupForPDFSelection): Added.
+
+2015-04-22  Zalan Bujtas  <zalan@apple.com>
+
+        Move render ruby initialization logic from RenderElement::createFor() to *::createElementRenderer()
+        https://bugs.webkit.org/show_bug.cgi?id=144058
+
+        Reviewed by Darin Adler.
+
+        No change in functionality.
+
+        * CMakeLists.txt:
+        * WebCore.vcxproj/WebCore.vcxproj:
+        * WebCore.vcxproj/WebCore.vcxproj.filters:
+        * WebCore.xcodeproj/project.pbxproj:
+        * html/HTMLTagNames.in:
+        * html/RubyElement.cpp: Added.
+        (WebCore::RubyElement::RubyElement):
+        (WebCore::RubyElement::create):
+        (WebCore::RubyElement::createElementRenderer):
+        * html/RubyElement.h: Added.
+        * html/RubyTextElement.cpp: Added.
+        (WebCore::RubyTextElement::RubyTextElement):
+        (WebCore::RubyTextElement::create):
+        (WebCore::RubyTextElement::createElementRenderer):
+        * html/RubyTextElement.h: Added.
+        * rendering/RenderElement.cpp:
+        (WebCore::RenderElement::createFor):
+
+2015-04-22  Roger Fong  <roger_fong@apple.com>
+
+        Show correct wireless play placard on iOS.
+        <rdar://problem/20656596>
+
+        Copy wireless player placard code from r182631 to iOS.
+        * Modules/mediacontrols/mediaControlsiOS.css:
+        (audio::-webkit-media-controls-wireless-playback-status):
+        (audio::-webkit-media-controls-wireless-playback-text):
+        (audio::-webkit-media-controls-wireless-playback-text-top):
+        (audio::-webkit-media-controls-wireless-playback-text-bottom):
+        (audio::-webkit-media-controls-wireless-playback-status.small):
+        (audio::-webkit-media-controls-wireless-playback-text-top.small):
+        (audio::-webkit-media-controls-wireless-playback-text-bottom.small):
+        * Modules/mediacontrols/mediaControlsiOS.js:
+        (ControllerIOS.prototype.createControls):
+        (ControllerIOS.prototype.configureInlineControls):
+
+2015-04-22  Roger Fong  <roger_fong@apple.com>
+
+        Rollout part of r182263 that broke inline media controls on iOS.
+        <rdar://problem/20654260>
+
+        * Modules/mediacontrols/mediaControlsApple.js:
+        (Controller.prototype.handlePanelTransitionEnd):
+        (Controller.prototype.setPlaying):
+        (Controller.prototype.showControls):
+        (Controller.prototype.hideControls):
+
+2015-04-22  Eric Carlson  <eric.carlson@apple.com>
+
+        Unreviewed post-review clean up after r183096.
+
+        * Modules/mediasession/WebMediaSessionManagerClient.h:
+        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h:
+
+2015-04-22  Nan Wang  <nanwang1101@yahoo.com>
+
+        AX: WebKit does not expose text fields inside tree views.
+        https://bugs.webkit.org/show_bug.cgi?id=142196
+
+        Reviewed by Chris Fleizach.
+
+        The problem is that any object in a tree which is not a static text 
+        or treeitem will be ignored. Fixed it by exposing the children of treeitem.
+
+        Test: accessibility/treeitem-child-exposed.html
+
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore::AccessibilityRenderObject::isAllowedChildOfTree):
+
+2015-04-22  Xabier Rodriguez Calvar  <calvaris@igalia.com> and Youenn Fablet  <youenn.fablet@crf.canon.fr>
+
+        [Streams API] Implement ReadableStreamController
+        https://bugs.webkit.org/show_bug.cgi?id=143608
+
+        Reviewed by Benjamin Poulain.
+
+        Introducing ReadableStreamController, an abstraction to manage JS source stream queues.
+        This new interface is not exposed to JS scripts as specified, using NoInterfaceObject.
+
+        A controller is created at the time a ReadableJSStream is started and it is owned by it.
+        The controller may outlive the stream but as its reference will be reset, the calls to
+        its methods would result in exceptions.
+
+        The constructor is not implemented yet.
+
+        Change covered by existing tests and rebased expectations.
+
+        * CMakeLists.txt:
+        * DerivedSources.cpp:
+        * DerivedSources.make: Added ReadableStreamController.idl related files.
+        * Modules/streams/ReadableStreamController.h: Added.
+        * Modules/streams/ReadableStreamController.idl: Added.
+        * WebCore.vcxproj/WebCore.vcxproj:
+        * WebCore.vcxproj/WebCore.vcxproj.filters:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/JSBindingsAllInOne.cpp: Added ReadableStreamController.idl related files.
+        * bindings/js/JSReadableStreamControllerCustom.cpp: Added.
+        * bindings/js/ReadableStreamJSSource.cpp:
+        * bindings/js/ReadableStreamJSSource.h: Removed custom controller implementation.
+
+2015-04-22  Manuel Rego Casasnovas  <rego@igalia.com>
+
+        Rename hasOverride{Height,Width}() to hasOverrideLogicalContent{Height,Width}()
+        https://bugs.webkit.org/show_bug.cgi?id=143984
+
+        Reviewed by Darin Adler.
+
+        This patch is renaming these LayoutBox methods, because of their names
+        don't match with the getters and setters, which is confusing. Specially
+        now that we also have hasOverrideContainingBlockLogical{Height,Width}().
+
+        No new tests (this is just a refactoring).
+
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::fitBorderToLinesIfNeeded):
+        * rendering/RenderBlockLineLayout.cpp:
+        (WebCore::RenderBlockFlow::updateRubyForJustifiedText):
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::hasOverrideLogicalContentHeight):
+        (WebCore::RenderBox::hasOverrideLogicalContentWidth):
+        (WebCore::RenderBox::overrideLogicalContentWidth):
+        (WebCore::RenderBox::overrideLogicalContentHeight):
+        (WebCore::RenderBox::perpendicularContainingBlockLogicalHeight):
+        (WebCore::RenderBox::computeLogicalWidthInRegion):
+        (WebCore::RenderBox::computeLogicalHeight):
+        (WebCore::RenderBox::computePercentageLogicalHeight):
+        (WebCore::RenderBox::availableLogicalHeightUsing):
+        * rendering/RenderBox.h:
+        * rendering/RenderDeprecatedFlexibleBox.cpp:
+        (WebCore::contentWidthForChild):
+        (WebCore::contentHeightForChild):
+        * rendering/RenderFlexibleBox.cpp:
+        (WebCore::RenderFlexibleBox::preferredMainAxisContentExtentForChild):
+        * rendering/RenderRubyBase.cpp:
+        (WebCore::RenderRubyBase::adjustInlineDirectionLineBounds):
+        * rendering/RenderTableSection.cpp:
+        (WebCore::RenderTableSection::calcRowLogicalHeight):
+
+2015-04-21  Jer Noble  <jer.noble@apple.com>
+
+        [Mac][MediaSource] Crash when SourceBuffer::provideMediaData() is called re-entrantly.
+        https://bugs.webkit.org/show_bug.cgi?id=144023
+
+        Reviewed by Eric Carlson.
+
+        Fixes non-deterministic crash in media/media-source/media-source-stalled-holds-sleep-assertion.html.
+
+        Platform changes have introduced a re-entrancy to provideMediaData().  Calling
+        SourceBufferPrivate::enqueueSample() can result in a re-entrant call back into
+        SourceBuffer::provideMediaData(). To protect against this, wrap the client call
+        from SourceBufferPrivateAVFObjC::didBecomeReadyForMoreSamples() to
+        SourceBuffer::sourceBufferPrivateDidBecomeReadyForMoreSamples() in a dispatch_async() to the
+        main thread. This gives the original provideMediaData() a chance to finish before the next
+        one begins.
+
+        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
+        (WebCore::SourceBufferPrivateAVFObjC::didBecomeReadyForMoreSamples):
+
+2015-04-21  Eric Carlson  <eric.carlson@apple.com>
+
+        [Mac] Use one playback target for all web processes
+        https://bugs.webkit.org/show_bug.cgi?id=144009
+
+        Reviewed by Tim Horton.
+
+        * Modules/mediacontrols/mediaControlsApple.js:
+        (Controller.prototype.updateWirelessPlaybackStatus): Drive-by fix to show controls when
+            we show the placeholder image.
+
+        Instead of having each Page/Document pair manage access to the playback target for the videos
+        in a web process, put all of the logic into a new class - WebMediaSessionManager. A singleton
+        instance talks to the target picker and manages video element access for all web processes.
+        All playback target logic was removed from Document, Page, and MediaSessionManager.
+
+        * Modules/mediasession: Added.
+        * Modules/mediasession/WebMediaSessionManager.cpp: Added.
+        (WebCore::ClientState::ClientState):
+        (WebCore::flagsAreSet):
+        (WebCore::WebMediaSessionManager::WebMediaSessionManager):
+        (WebCore::WebMediaSessionManager::~WebMediaSessionManager):
+        (WebCore::WebMediaSessionManager::addPlaybackTargetPickerClient):
+        (WebCore::WebMediaSessionManager::removePlaybackTargetPickerClient):
+        (WebCore::WebMediaSessionManager::removeAllPlaybackTargetPickerClients):
+        (WebCore::WebMediaSessionManager::showPlaybackTargetPicker):
+        (WebCore::WebMediaSessionManager::clientStateDidChange):
+        (WebCore::WebMediaSessionManager::setPlaybackTarget):
+        (WebCore::WebMediaSessionManager::externalOutputDeviceAvailableDidChange):
+        (WebCore::WebMediaSessionManager::configurePlaybackTargetMonitoring):
+        (WebCore::WebMediaSessionManager::taskTimerFired):
+        (WebCore::WebMediaSessionManager::find):
+        (WebCore::WebMediaSessionManager::forEachClient):
+        * Modules/mediasession/WebMediaSessionManager.h: Added.
+        * Modules/mediasession/WebMediaSessionManagerClient.h: Added.
+        (WebCore::WebMediaSessionManagerClient::~WebMediaSessionManagerClient):
+        * Modules/webaudio/AudioContext.cpp:
+        (WebCore::AudioContext::mediaState): Replaces isPlayingAudio.
+        (WebCore::AudioContext::isPlayingAudio): Deleted.
+        * Modules/webaudio/AudioContext.h:
+        * WebCore.xcodeproj/project.pbxproj: Added new files.
+        * dom/Document.cpp:
+        (WebCore::Document::Document):
+        (WebCore::Document::addAudioProducer): Take a MediaProducer instead of an AudioProducer.
+        (WebCore::Document::removeAudioProducer):
+        (WebCore::Document::updateIsPlayingMedia):
+        (WebCore::nextPlaybackTargetClientContextId):
+        (WebCore::Document::addPlaybackTargetPickerClient):
+        (WebCore::Document::removePlaybackTargetPickerClient):
+        (WebCore::Document::showPlaybackTargetPicker):
+        (WebCore::Document::playbackTargetPickerClientStateDidChange):
+        (WebCore::Document::playbackTargetAvailabilityDidChange):
+        (WebCore::Document::setPlaybackTarget):
+        (WebCore::Document::setShouldPlayToPlaybackTarget):
+        (WebCore::Document::configurePlaybackTargetMonitoring): Deleted.
+        (WebCore::Document::requiresPlaybackTargetRouteMonitoring): Deleted.
+        (WebCore::Document::didChoosePlaybackTarget): Deleted.
+        * dom/Document.h:
+        (WebCore::Document::mediaState):
+        (WebCore::Document::isPlayingAudio): Deleted.
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::~HTMLMediaElement):
+        (WebCore::HTMLMediaElement::registerWithDocument):
+        (WebCore::HTMLMediaElement::setMuted): 
+        (WebCore::HTMLMediaElement::parseAttribute):
+        * html/HTMLMediaElement.h:
+        * html/HTMLMediaSession.cpp:
+        (WebCore::HTMLMediaSession::registerWithDocument):
+        (WebCore::HTMLMediaSession::unregisterWithDocument):
+        (WebCore::HTMLMediaSession::showPlaybackTargetPicker):
+        (WebCore::HTMLMediaSession::setHasPlaybackTargetAvailabilityListeners):
+        (WebCore::HTMLMediaSession::setPlaybackTarget):
+        (WebCore::HTMLMediaSession::externalOutputDeviceAvailableDidChange):
+        (WebCore::HTMLMediaSession::setShouldPlayToPlaybackTarget):
+        (WebCore::HTMLMediaSession::mediaStateDidChange):
+        (WebCore::HTMLMediaSession::didChoosePlaybackTarget): Deleted.
+        (WebCore::HTMLMediaSession::requiresPlaybackTargetRouteMonitoring): Deleted.
+        (WebCore::HTMLMediaSession::startPlayingToPlaybackTarget): Deleted.
+        (WebCore::HTMLMediaSession::stopPlayingToPlaybackTarget): Deleted.
+        * html/HTMLMediaSession.h:
+        * page/AudioProducer.h: Removed.
+        * page/ChromeClient.h:
+        * page/MediaProducer.h: Copied from Source/WebCore/page/AudioProducer.h.
+        (WebCore::MediaProducer::~MediaProducer):
+        (WebCore::AudioProducer::~AudioProducer): Deleted.
+        * page/Page.cpp:
+        (WebCore::Page::Page):
+        (WebCore::Page::updateIsPlayingMedia):
+        (WebCore::Page::addPlaybackTargetPickerClient):
+        (WebCore::Page::removePlaybackTargetPickerClient):
+        (WebCore::Page::showPlaybackTargetPicker):
+        (WebCore::Page::playbackTargetPickerClientStateDidChange):
+        (WebCore::Page::setPlaybackTarget):
+        (WebCore::Page::playbackTargetAvailabilityDidChange):
+        (WebCore::Page::setShouldPlayToPlaybackTarget):
+        (WebCore::Page::playbackTarget): Deleted.
+        (WebCore::Page::didChoosePlaybackTarget): Deleted.
+        (WebCore::Page::configurePlaybackTargetMonitoring): Deleted.
+        * page/Page.h:
+        (WebCore::Page::mediaState):
+        (WebCore::Page::isPlayingAudio): Deleted.
+        (WebCore::Page::hasWirelessPlaybackTarget): Deleted.
+        * platform/audio/MediaSession.h:
+        (WebCore::MediaSession::isPlayingToWirelessPlaybackTarget):
+        (WebCore::MediaSession::requiresPlaybackTargetRouteMonitoring):
+        (WebCore::MediaSessionClient::setShouldPlayToPlaybackTarget):
+        (WebCore::MediaSession::startPlayingToPlaybackTarget): Deleted.
+        (WebCore::MediaSession::stopPlayingToPlaybackTarget): Deleted.
+        (WebCore::MediaSessionClient::startPlayingToPlaybackTarget): Deleted.
+        (WebCore::MediaSessionClient::stopPlayingToPlaybackTarget): Deleted.
+        * platform/audio/MediaSessionManager.cpp:
+        (WebCore::MediaSessionManager::sessionWillBeginPlayback):
+        (WebCore::MediaSessionManager::sessionCanLoadMedia):
+        (WebCore::MediaSessionManager::sessionShouldBeginPlayingToWirelessPlaybackTarget): Deleted.
+        * platform/audio/MediaSessionManager.h:
+        * platform/graphics/MediaPlaybackTargetClient.h: Copied from Source/WebCore/platform/graphics/MediaPlaybackTargetPickerClient.h.
+        (WebCore::MediaPlaybackTargetClient::~MediaPlaybackTargetClient):
+        (WebCore::MediaPlaybackTargetPickerClient::~MediaPlaybackTargetPickerClient): Deleted.
+        * platform/graphics/MediaPlaybackTargetPicker.cpp:
+        (WebCore::MediaPlaybackTargetPicker::showPlaybackTargetPicker):
+        (WebCore::MediaPlaybackTargetPicker::startingMonitoringPlaybackTargets):
+        (WebCore::MediaPlaybackTargetPicker::stopMonitoringPlaybackTargets):
+        * platform/graphics/MediaPlaybackTargetPicker.h:
+        * platform/graphics/MediaPlaybackTargetPickerClient.h: Removed.
+        * platform/graphics/MediaPlayer.cpp:
+        (WebCore::MediaPlayer::setShouldPlayToPlaybackTarget):
+        (WebCore::MediaPlayer::startPlayingToPlaybackTarget): Deleted.
+        (WebCore::MediaPlayer::stopPlayingToPlaybackTarget): Deleted.
+        * platform/graphics/MediaPlayer.h:
+        * platform/graphics/MediaPlayerPrivate.h:
+        (WebCore::MediaPlayerPrivateInterface::setShouldPlayToPlaybackTarget):
+        (WebCore::MediaPlayerPrivateInterface::startPlayingToPlaybackTarget): Deleted.
+        (WebCore::MediaPlayerPrivateInterface::stopPlayingToPlaybackTarget): Deleted.
+        * platform/graphics/avfoundation/WebMediaSessionManagerMac.cpp: Added.
+        (WebCore::WebMediaSessionManagerMac::singleton):
+        (WebCore::WebMediaSessionManagerMac::WebMediaSessionManagerMac):
+        (WebCore::WebMediaSessionManagerMac::~WebMediaSessionManagerMac):
+        (WebCore::WebMediaSessionManagerMac::targetPicker):
+        * platform/graphics/avfoundation/WebMediaSessionManagerMac.h: Added.
+        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h:
+        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
+        (WebCore::MediaPlaybackTargetPickerMac::currentDeviceDidChange):
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldPlayToPlaybackTarget):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::startPlayingToPlaybackTarget): Deleted.
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::stopPlayingToPlaybackTarget): Deleted.
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setShouldPlayToPlaybackTarget):
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::togglePlayingToPlaybackTarget): Deleted.
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::startPlayingToPlaybackTarget): Deleted.
+        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::stopPlayingToPlaybackTarget): Deleted.
+        * platform/graphics/mac/MediaPlayerPrivateQTKit.h:
+        * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+        (WebCore::MediaPlayerPrivateQTKit::setShouldPlayToPlaybackTarget):
+        (WebCore::MediaPlayerPrivateQTKit::togglePlayingToPlaybackTarget): Deleted.
+        (WebCore::MediaPlayerPrivateQTKit::startPlayingToPlaybackTarget): Deleted.
+        (WebCore::MediaPlayerPrivateQTKit::stopPlayingToPlaybackTarget): Deleted.
+        * testing/Internals.cpp:
+        (WebCore::Internals::isPagePlayingAudio):
+
+2015-04-21  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        [iOS] When computing visible rects for tiling, stop searching at UIWindows
+        https://bugs.webkit.org/show_bug.cgi?id=144022
+        <rdar://problem/18327227>
+
+        Reviewed by Simon Fraser.
+
+        [WAKWindow _visibleRectRespectingMasksToBounds:] computes a visible rect which we use
+        to determine which tiles to create. We do this by finding the frame of the _hostLayer,
+        and then walking up the CALayer hierarchy converting each rect into its parent's
+        coordinate system (all the while clipping to bounds if necessary). This walk up the
+        layer hierarchy should stop at a layer associated with a UIWindow.
+
+        * platform/ios/wak/WAKWindow.mm:
+        (-[WAKWindow _visibleRectRespectingMasksToBounds:]):
+
+2015-04-21  Jinwoo Song  <jinwoo7.song@samsung.com>
+
+        [Cairo] Implement Path::addPath
+        https://bugs.webkit.org/show_bug.cgi?id=130580
+
+        Reviewed by Dirk Schulze.
+
+        Add support for addPath method for ports using cairo.
+        This patch is originally authored by Jae Hyun Park <jaepark@webkit.org>.
+
+        Test: fast/canvas/canvas-path-addPath.html
+
+        * platform/graphics/cairo/PathCairo.cpp:
+        (WebCore::Path::addPath): Implement addPath for cairo.
+
+2015-04-21  Tim Horton  <timothy_horton@apple.com>
+
+        Fix the iOS build.
+
+        * platform/spi/cg/CoreGraphicsSPI.h:
+
+2015-04-21  Said Abou-Hallawa  <sabouhallawa@apple.com>
+
+        SVGAnimateElementBase::calculateAnimatedValue() asserts when reinserting an SVG animating element within the same animation limits
+        https://bugs.webkit.org/show_bug.cgi?id=143994
+
+        Reviewed by Simon Fraser.
+
+        Make sure the SVG animation variables are reset cleanly such that if the
+        animation restarts it can rebuild its limit values reliably and correctly.
+
+        Tests: svg/animations/crash-reinsert-animate-length-same-limits.svg
+               svg/animations/crash-reinsert-animate-transform-same-limits.svg
+
+        * svg/SVGAnimateElementBase.h:
+        * svg/SVGAnimateElementBase.cpp:
+        (WebCore::SVGAnimateElementBase::resetAnimatedPropertyType):
+        Call the base class resetAnimatedPropertyType() from the derived class.
+
+        * svg/SVGAnimationElement.h:
+        * svg/SVGAnimationElement.cpp:
+        (WebCore::SVGAnimationElement::resetAnimatedPropertyType):
+        Make resetAnimatedPropertyType() virtual. The implementation of the base
+        class of this function resets the values of the animation limits. When
+        updateAnimation() is called, it will be forced to recalculate the animation
+        limits by calling calculateFromAndToValues() even if the limits have not
+        changed.
+
 2015-04-21  Tim Horton  <timothy_horton@apple.com>
 
         Long pause under _takeViewSnapshot when screen updates are disabled