Context menu doesn't account for selection semantics
[WebKit-https.git] / Source / WebCore / ChangeLog
index 7e28c3f..ddde341 100644 (file)
@@ -1,3 +1,869 @@
+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
+        https://bugs.webkit.org/show_bug.cgi?id=144017
+        <rdar://problem/20548397>
+
+        Reviewed by Simon Fraser.
+
+        * platform/spi/cg/CoreGraphicsSPI.h:
+        Add some SPI.
+
+2015-04-21  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r183077.
+        https://bugs.webkit.org/show_bug.cgi?id=144021
+
+        broke a bunch of tests, bfulgham is going to try again
+        (Requested by thorton on #webkit).
+
+        Reverted changeset:
+
+        "Context menu doesn't account for selection semantics"
+        https://bugs.webkit.org/show_bug.cgi?id=143958
+        http://trac.webkit.org/changeset/183077
+
+2015-04-21  Chris Dumez  <cdumez@apple.com>
+
+        [WK2][NetworkCache] Better account of resource revalidations in efficacy logging
+        https://bugs.webkit.org/show_bug.cgi?id=144014
+
+        Reviewed by Antti Koivisto.
+
+        Add additional diagnostic logging key for network cache efficacy
+        logging.
+
+        * page/DiagnosticLoggingKeys.cpp:
+        (WebCore::DiagnosticLoggingKeys::needsRevalidationKey):
+        * page/DiagnosticLoggingKeys.h:
+
+2015-04-21  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, check with the
+        lookup service to see if we can get a semantically appropriate
+        selection.
+
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::selectClosestWordFromHitTestResultBasedOnLookup):
+        (WebCore::EventHandler::selectClosestWordFromHitTestResult):
+        * page/EventHandler.h:
+        * page/mac/EventHandlerMac.mm:
+        (WebCore::EventHandler::selectClosestWordFromHitTestResultBasedOnLookup):
+
+2015-04-21  Anders Carlsson  <andersca@apple.com>
+
+        Get rid of an unneeded function from LoaderNSURLExtras.mm
+        https://bugs.webkit.org/show_bug.cgi?id=144003
+
+        Reviewed by Chris Dumez.
+
+        Just use Vector::contains instead of vectorContainsString.
+
+        * loader/mac/LoaderNSURLExtras.mm:
+        (suggestedFilenameWithMIMEType):
+        (vectorContainsString): Deleted.
+
+2015-04-21  Chris Dumez  <cdumez@apple.com>
+
+        Make Vector(const Vector<T, otherCapacity, otherOverflowBehaviour>&) constructor explicit
+        https://bugs.webkit.org/show_bug.cgi?id=143970
+
+        Reviewed by Darin Adler.
+
+        Make Vector(const Vector<T, otherCapacity, otherOverflowBehaviour>&)
+        constructor explicit as it copies the vector and it is easy to call it
+        by mistake.
+
+        * Modules/indexeddb/IDBDatabaseBackend.cpp:
+        (WebCore::IDBDatabaseBackend::setIndexKeys):
+        (WebCore::IDBDatabaseBackend::setIndexesReady):
+        * Modules/indexeddb/IDBDatabaseBackend.h:
+        * Modules/indexeddb/IDBServerConnection.h:
+        * cssjit/SelectorCompiler.cpp:
+        (WebCore::SelectorCompiler::minimumRegisterRequirements):
+        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementHasClasses):
+        * cssjit/StackAllocator.h:
+        (WebCore::StackAllocator::push):
+        (WebCore::StackAllocator::pop):
+        * rendering/RenderGrid.cpp:
+        (WebCore::RenderGrid::GridIterator::nextGridItem):
+        (WebCore::RenderGrid::GridIterator::isEmptyAreaEnough):
+        * rendering/style/SVGRenderStyle.cpp:
+        (WebCore::SVGRenderStyle::paintTypesForPaintOrder):
+        * rendering/style/SVGRenderStyle.h:
+        * rendering/svg/RenderSVGShape.cpp:
+        (WebCore::RenderSVGShape::fillStrokeMarkers):
+        * rendering/svg/SVGInlineTextBox.cpp:
+        (WebCore::SVGInlineTextBox::paint):
+        * svg/SVGToOTFFontConversion.cpp:
+        (WebCore::SVGToOTFFontConverter::appendLigatureGlyphs):
+        (WebCore::SVGToOTFFontConverter::SVGToOTFFontConverter):
+
+2015-04-21  Chris Dumez  <cdumez@apple.com>
+
+        Use ASSERT_WITH_SECURITY_IMPLICATION() for NoEventDispatchAssertion
+        https://bugs.webkit.org/show_bug.cgi?id=143971
+
+        Reviewed by Darin Adler.
+
+        Use ASSERT_WITH_SECURITY_IMPLICATION() for NoEventDispatchAssertion as
+        firing JS events can cause arbitrary JS execution which often leads to
+        security bugs when event firing is forbidden. For e.g. firing events
+        from ActiveDOMObject::suspend() means JS can construct or destroy
+        ActiveDOMObjects while we are iterating over them.
+
+        * dom/ContainerNode.cpp:
+        (WebCore::dispatchChildInsertionEvents):
+        (WebCore::dispatchChildRemovalEvents):
+        * dom/ContainerNodeAlgorithms.h:
+        (WebCore::ChildNodeInsertionNotifier::notify):
+        * dom/Document.cpp:
+        (WebCore::Document::dispatchWindowEvent):
+        (WebCore::Document::dispatchWindowLoadEvent):
+        * dom/Element.cpp:
+        (WebCore::Element::dispatchFocusInEvent):
+        (WebCore::Element::dispatchFocusOutEvent):
+        * dom/EventDispatcher.cpp:
+        (WebCore::EventDispatcher::dispatchEvent):
+        * dom/EventTarget.cpp:
+        (WebCore::EventTarget::fireEventListeners):
+        * dom/Node.cpp:
+        (WebCore::Node::dispatchSubtreeModifiedEvent):
+        (WebCore::Node::dispatchDOMActivateEvent):
+        * dom/ScriptExecutionContext.cpp:
+        (WebCore::ScriptExecutionContext::canSuspendActiveDOMObjectsForPageCache):
+        (WebCore::ScriptExecutionContext::suspendActiveDOMObjects):
+        (WebCore::ScriptExecutionContext::resumeActiveDOMObjects):
+        (WebCore::ScriptExecutionContext::stopActiveDOMObjects):
+        (WebCore::ScriptExecutionContext::willDestroyActiveDOMObject):
+        * dom/WebKitNamedFlow.cpp:
+        (WebCore::WebKitNamedFlow::dispatchRegionOversetChangeEvent):
+
+2015-04-21  Darin Adler  <darin@apple.com>
+
+        Remove some stray uses of OwnPtr and PassOwnPtr in WTF (outside of the template definitions and traits)
+        https://bugs.webkit.org/show_bug.cgi?id=143944
+
+        Reviewed by Andreas Kling.
+
+        * editing/ios/DictationCommandIOS.h: Added now-needed include of PassOwnPtr.h.
+
+2015-04-20  Simon Fraser  <simon.fraser@apple.com>
+
+        REGRESSION (r177494): -webkit-mask-image: with data URI fails on non-local files
+        https://bugs.webkit.org/show_bug.cgi?id=141857
+
+        Reviewed by Dirk Schulze.
+        
+        r177494 regressed loading of data URIs in masks with remote content, triggering
+        a cross-domain error which occurs because the mask loading happened via a separate
+        SVGDocument.
+        
+        Fix by checking for data URIs at parsing time, which is what we used to do.
+
+        Test: http/tests/css/data-uri-mask.html
+
+        * css/CSSParser.cpp:
+        (WebCore::CSSParser::parseMaskImage):
+        * svg/SVGURIReference.h:
+        (WebCore::SVGURIReference::isExternalURIReference):
+
+2015-04-20  Chris Dumez  <cdumez@apple.com>
+
+        Crash when showing Web Inspector on page with 'multipart/x-mixed-replace' main resource
+        https://bugs.webkit.org/show_bug.cgi?id=143979
+        <rdar://problem/20594948>
+
+        Reviewed by Timothy Hatcher.
+
+        InspectorDOMAgent::m_document was updated only once per load, from
+        FrameLoader::dispatchDidCommitLoad(). However, dispatchDidCommitLoad()
+        is not called for follow-up multipart replacing loads. You can see this
+        from the following check in DocumentLoader::commitData():
+            if (!isMultipartReplacingLoad())
+                frameLoader()->receivedFirstData();
+
+        As a result, in the case of a 'multipart/x-mixed-replace' main resource
+        InspectorDOMAgent::m_document would quickly get outdated as we create
+        a new Document for each replacing load. This would lead to Web Inspector
+        code using a Document without frame and causing crashes.
+
+        This patch calls InspectorInstrumentation::frameDocumentUpdated() from
+        Frame::setDocument() so that InspectorDOMAgent::m_document is always up
+        to date.
+
+        No new tests, not easily testable as the main resource needs to be
+        'multipart/x-mixed-replace'.
+
+        * dom/Document.cpp:
+        (WebCore::Document::applyXSLTransform):
+        Stop calling InspectorInstrumentation::frameDocumentUpdated() here as
+        XSLTProcessor::createDocumentFromSource() will call Frame::setDocument()
+        and frameDocumentUpdated() will be called there.
+
+        * page/Frame.cpp:
+        (WebCore::Frame::setDocument):
+        Call InspectorInstrumentation::frameDocumentUpdated() to make sure
+        InspectorDOMAgent::m_document gets updated.
+
+2015-04-20  Alex Christensen  <achristensen@webkit.org>
+
+        Overwrite existing files with moveFile.
+        https://bugs.webkit.org/show_bug.cgi?id=143968
+
+        Reviewed by Brady Eidson and Anders Carlsson.
+
+        * platform/mac/FileSystemMac.mm:
+        (-[WebFileManagerDelegate fileManager:shouldProceedAfterError:movingItemAtURL:toURL:]):
+        (WebCore::moveFile):
+        r182932 introduced moveFile instead of renameFile.  In order to preserve behavior, it should overwrite existing files.
+
+2015-04-20  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Unreviewed Windows build fix after r183031.
+
+        * platform/graphics/OpenGLShims.cpp:
+        (WebCore::lookupOpenGLFunctionAddress):
+        Windows needs an explicit cast converting LChar* to const char*.
+        Also, add a FIXME comment for sketchy behavior.
+
+2015-04-20  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Cleanup some StringBuilder use
+        https://bugs.webkit.org/show_bug.cgi?id=143550
+
+        Reviewed by Darin Adler.
+
+        * Modules/plugins/YouTubePluginReplacement.cpp:
+        (WebCore::YouTubePluginReplacement::youTubeURL):
+        * css/CSSAnimationTriggerScrollValue.cpp:
+        (WebCore::CSSAnimationTriggerScrollValue::customCSSText):
+        * css/CSSCanvasValue.cpp:
+        (WebCore::CSSCanvasValue::customCSSText):
+        * html/HTMLCanvasElement.cpp:
+        (WebCore::HTMLCanvasElement::createImageBuffer):
+        * page/CaptionUserPreferencesMediaAF.cpp:
+        (WebCore::CaptionUserPreferencesMediaAF::captionsWindowCSS):
+        (WebCore::CaptionUserPreferencesMediaAF::windowRoundedCornerRadiusCSS):
+        (WebCore::CaptionUserPreferencesMediaAF::cssPropertyWithTextEdgeColor):
+        (WebCore::CaptionUserPreferencesMediaAF::colorPropertyCSS):
+        (WebCore::CaptionUserPreferencesMediaAF::captionsDefaultFontCSS):
+        (WebCore::CaptionUserPreferencesMediaAF::captionsStyleSheetOverride):
+        * page/EventSource.cpp:
+        (WebCore::EventSource::didReceiveResponse):
+        * page/PageSerializer.cpp:
+        (WebCore::PageSerializer::serializeCSSStyleSheet):
+        * platform/graphics/OpenGLShims.cpp:
+        (WebCore::lookupOpenGLFunctionAddress):
+        * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
+        (WebCore::InbandTextTrackPrivateAVF::processCueAttributes):
+        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
+        (WebCore::generateHashedName):
+        * platform/text/DateTimeFormat.cpp:
+        (WebCore::DateTimeFormat::quoteAndAppendLiteral):
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::logLayerInfo):
+        * rendering/RenderTreeAsText.cpp:
+        (WebCore::writeRenderRegionList):
+        * testing/MicroTaskTest.cpp:
+        (WebCore::MicroTaskTest::run):
+        * testing/MockContentFilterSettings.cpp:
+        (WebCore::MockContentFilterSettings::unblockRequestURL):
+
+2015-04-20  Said Abou-Hallawa  <sabouhallawa@apple.com>
+
+        SVGFitToViewBox::viewBoxToViewTransform() has to count for zero physical width and height before calling SVGPreserveAspectRatio::getCTM()
+        https://bugs.webkit.org/show_bug.cgi?id=143903
+
+        Reviewed by Daniel Bates.
+
+        Ensure that the SVG viewBoxToView transformation is always invertible.
+        CG path drawing functions crash if the context is transformed to non-
+        invertible matrix.
+
+        Tests: svg/css/crash-path-zero-height-viewbox.svg
+               svg/css/crash-path-zero-width-viewbox.svg
+
+        * svg/SVGFitToViewBox.cpp:
+        (WebCore::SVGFitToViewBox::viewBoxToViewTransform):
+        Do not call SVGPreserveAspectRatio::getCTM() if the physical width or the
+        physical height is zero.
+
+        * svg/SVGPreserveAspectRatio.cpp:
+        (WebCore::SVGPreserveAspectRatio::getCTM):
+        Ensure that we are not dividing by zero in this function.
+
+2015-04-20  Chris Dumez  <cdumez@apple.com>
+
+        CSSParser::parseValue() copies the m_parsedProperties vector at addParsedProperties()
+        https://bugs.webkit.org/show_bug.cgi?id=143925
+
+        Reviewed by Simon Fraser.
+
+        Update MutableStyleProperties::addParsedProperties() to use
+        CSSParser::ParsedPropertyVector type (i.e. Vector<CSSProperty, 256>)
+        instead of Vector<CSSProperty> so that the properties vector is no
+        longer copied unnecessarily to convert one type to the other.
+
+        * css/CSSParser.h:
+        * css/StyleProperties.cpp:
+        (WebCore::MutableStyleProperties::addParsedProperties):
+        * css/StyleProperties.h:
+
+2015-04-20  Beth Dakin  <bdakin@apple.com>
+
+        Should remove mouseForceClick and mouseForceCancelled from DOM force events
+        https://bugs.webkit.org/show_bug.cgi?id=143904
+        -and corresponding-
+        rdar://problem/20578842
+
+        Reviewed by Dan Bernstein.
+
+        After more thought and discussion, we decided to remove mouseForceClick and 
+        mouseForceCancelled from DOM force events. mouseForceClick is confusing and 
+        redundant. mouseForceCancelled is confusing as it is currently implemented, and 
+        all of its functionality can be filled by exisiting events such as mouseup, 
+        mouseout, etc.
+
+        * dom/Document.cpp:
+        (WebCore::Document::addListenerTypeIfNeeded):
+        * dom/Document.h:
+        * dom/Document.idl:
+        * dom/Element.cpp:
+        (WebCore::Element::dispatchMouseForceWillBegin):
+        (WebCore::Element::dispatchMouseForceClick): Deleted.
+        (WebCore::Element::dispatchMouseForceCancelled): Deleted.
+        * dom/Element.h:
+        * dom/Element.idl:
+        * dom/EventNames.h:
+        * html/HTMLAttributeNames.in:
+        * html/HTMLBodyElement.cpp:
+        (WebCore::HTMLBodyElement::createWindowEventHandlerNameMap):
+        * html/HTMLBodyElement.idl:
+        * html/HTMLElement.cpp:
+        (WebCore::HTMLElement::createEventHandlerNameMap):
+        * page/DOMWindow.idl:
+
+2015-04-20  Simon Fraser  <simon.fraser@apple.com>
+
+        Setting inline style to the same value it already has triggers a style recalc
+        https://bugs.webkit.org/show_bug.cgi?id=143922
+
+        Reviewed by Antti Koivisto.
+
+        MutableStyleProperties::setProperty() was taking the result of CSSParser::parseValue()
+        to mean "parsing changed the style", but it actually just means "parsing succeeded".
+        Add a new out param, piped through various parser functions, to indicate whether
+        parsing actually changed style, and instead return that from setProperty().
+
+        Add internals.startTrackingStyleRecalcs() and internals.styleRecalcCount() so
+        we can write tests for style recalc.
+
+        Test: fast/css/set-inline-style-recalc.html
+
+        * WebCore.xcodeproj/project.pbxproj: Let Xcode have it's way.
+        * css/CSSParser.cpp:
+        (WebCore::parseColorValue):
+        (WebCore::parseSimpleLengthValue):
+        (WebCore::parseKeywordValue):
+        (WebCore::parseTranslateTransformValue):
+        (WebCore::CSSParser::parseFontFaceValue):
+        (WebCore::CSSParser::parseValue):
+        * css/CSSParser.h:
+        * css/CSSProperty.h:
+        (WebCore::StylePropertyMetadata::operator==):
+        (WebCore::CSSProperty::operator==):
+        * css/DOMWindowCSS.cpp:
+        (WebCore::DOMWindowCSS::supports):
+        * css/StyleProperties.cpp:
+        (WebCore::MutableStyleProperties::setProperty):
+        (WebCore::MutableStyleProperties::appendPrefixingVariantProperty):
+        (WebCore::MutableStyleProperties::addParsedProperties):
+        (WebCore::MutableStyleProperties::addParsedProperty):
+        * css/StyleProperties.h:
+        * css/WebKitCSSMatrix.cpp:
+        (WebCore::WebKitCSSMatrix::setMatrixValue):
+        * dom/Document.cpp:
+        (WebCore::Document::recalcStyle):
+        (WebCore::Document::startTrackingStyleRecalcs):
+        (WebCore::Document::styleRecalcCount):
+        * dom/Document.h:
+        * html/canvas/CanvasRenderingContext2D.cpp:
+        (WebCore::CanvasRenderingContext2D::setFont):
+        * testing/Internals.cpp:
+        (WebCore::Internals::startTrackingStyleRecalcs):
+        (WebCore::Internals::styleRecalcCount):
+        * testing/Internals.h:
+        * testing/Internals.idl:
+
+2015-04-20  Brady Eidson  <beidson@apple.com>
+
+        Crash in StyleResolver::invalidateMatchedPropertiesCache() when using content extensions.
+        <rdar://problem/20554405> and https://bugs.webkit.org/show_bug.cgi?id=143892
+
+        Reviewed by Chris Dumez.
+
+        Test: http/tests/contentextensions/style-resolver-changed-reentrancy.html
+
+        * contentextensions/ContentExtensionsBackend.cpp:
+        (WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForLoad):
+
+        * dom/DocumentStyleSheetCollection.cpp:
+        (WebCore::DocumentStyleSheetCollection::DocumentStyleSheetCollection):
+        (WebCore::DocumentStyleSheetCollection::addContentExtensionUserSheet): Call styleResolverChanged on a delay.
+        (WebCore::DocumentStyleSheetCollection::maybeAddContentExtensionSheet): Ditto.
+        (WebCore::DocumentStyleSheetCollection::styleResolverChangedTimerFired):
+        * dom/DocumentStyleSheetCollection.h:
+
 2015-04-20  Per Arne Vollan  <peavo@outlook.com>
 
         Favicons are not always loaded.