<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[184244] branches/safari-601.1.32-branch</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/184244">184244</a></dd>
<dt>Author</dt> <dd>dburkart@apple.com</dd>
<dt>Date</dt> <dd>2015-05-12 20:58:20 -0700 (Tue, 12 May 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/183954">r183954</a>. rdar://problem/20281886</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchessafari601132branchSourceWebCoreChangeLog">branches/safari-601.1.32-branch/Source/WebCore/ChangeLog</a></li>
<li><a href="#branchessafari601132branchSourceWebCorepageEventHandlerh">branches/safari-601.1.32-branch/Source/WebCore/page/EventHandler.h</a></li>
<li><a href="#branchessafari601132branchSourceWebCorepagemacEventHandlerMacmm">branches/safari-601.1.32-branch/Source/WebCore/page/mac/EventHandlerMac.mm</a></li>
<li><a href="#branchessafari601132branchSourceWebCoreplatformmacPlatformEventFactoryMach">branches/safari-601.1.32-branch/Source/WebCore/platform/mac/PlatformEventFactoryMac.h</a></li>
<li><a href="#branchessafari601132branchSourceWebCoreplatformmacPlatformEventFactoryMacmm">branches/safari-601.1.32-branch/Source/WebCore/platform/mac/PlatformEventFactoryMac.mm</a></li>
<li><a href="#branchessafari601132branchSourceWebKitChangeLog">branches/safari-601.1.32-branch/Source/WebKit/ChangeLog</a></li>
<li><a href="#branchessafari601132branchSourceWebKitmacChangeLog">branches/safari-601.1.32-branch/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#branchessafari601132branchSourceWebKitmacWebViewWebHTMLViewmm">branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebHTMLView.mm</a></li>
<li><a href="#branchessafari601132branchSourceWebKitmacWebViewWebImmediateActionControllerh">branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebImmediateActionController.h</a></li>
<li><a href="#branchessafari601132branchSourceWebKitmacWebViewWebImmediateActionControllermm">branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebImmediateActionController.mm</a></li>
<li><a href="#branchessafari601132branchSourceWebKitmacWebViewWebViewmm">branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebView.mm</a></li>
<li><a href="#branchessafari601132branchSourceWebKitmacWebViewWebViewDatah">branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebViewData.h</a></li>
<li><a href="#branchessafari601132branchSourceWebKitmacWebViewWebViewInternalh">branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebViewInternal.h</a></li>
<li><a href="#branchessafari601132branchToolsChangeLog">branches/safari-601.1.32-branch/Tools/ChangeLog</a></li>
<li><a href="#branchessafari601132branchToolsTestWebKitAPITestsmacMenuTypesForMouseEventsmm">branches/safari-601.1.32-branch/Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchessafari601132branchSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebCore/ChangeLog (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebCore/ChangeLog        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebCore/ChangeLog        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -2,177 +2,203 @@
</span><span class="cx"> Dana Burkart  &lt;dburkart@apple.com
</span><span class="cx"> dburkart@apple.com&gt;
</span><span class="cx"> 
</span><del>-        Merge r183953. rdar://problem/19997548
</del><ins>+        Merge r183954. rdar://problem/20281886
</ins><span class="cx"> 
</span><del>-    2015-05-06  Roger Fong  &lt;roger_fong@apple.com&gt;
</del><ins>+    2015-05-07  Beth Dakin  &lt;bdakin@apple.com&gt;
</ins><span class="cx"> 
</span><del>-            Media Controls: Scrubber should be independent of actual video time, causes scrubber to be jumpy.
-            https://bugs.webkit.org/show_bug.cgi?id=144700.
-            &lt;rdar://problem/19997548&gt;
</del><ins>+            New force-related DOM events should fire in WK1 views
+            https://bugs.webkit.org/show_bug.cgi?id=144663
+            -and corresponding-
+            rdar://problem/20281886
</ins><span class="cx"> 
</span><del>-            Reviewed by Jer Noble.
</del><ins>+            Reviewed by Sam Weinig.
</ins><span class="cx"> 
</span><del>-            Update time and timeline during the timeline input event instead of the wrapper's mousemove.
-            (Controller.prototype.handleWrapperMouseMove):
-            (Controller.prototype.handleTimelineMouseMove):
-            (Controller.prototype.drawTimelineBackground):
</del><ins>+            All of the WK1 mouse events need to take the correspondingPressureEvent.
+            * page/EventHandler.h:
</ins><span class="cx"> 
</span><del>-            (Controller.prototype.updateControlsWhileScrubbing):
-            Updates time and scrubber to reflect timeline user input.
</del><ins>+            Make correspondingPressureEvent a part of CurrentEventScope. This is needed to
+            have accurate pressure information for all of the mouse events in subframes.
+            * page/mac/EventHandlerMac.mm:
+            (WebCore::correspondingPressureEventSlot):
+            (WebCore::EventHandler::correspondingPressureEvent):
+            (WebCore::CurrentEventScope::CurrentEventScope):
+            (WebCore::CurrentEventScope::~CurrentEventScope):
</ins><span class="cx"> 
</span><ins>+            These events don’t have an associated pressure, so send nil for the
+            correspondingPressureEvent.
+            (WebCore::EventHandler::wheelEvent):
+            (WebCore::EventHandler::keyEvent):
+
+            Pipe through correspondingPressureEvent.
+            (WebCore::EventHandler::mouseDown):
+            (WebCore::EventHandler::mouseDragged):
+            (WebCore::EventHandler::mouseUp):
+            (WebCore::EventHandler::mouseMoved):
+
+            New function to handle pressure change events.
+            (WebCore::EventHandler::pressureChange):
+
+            Pipe through correspondingPressureEvent.
+            (WebCore::EventHandler::passMouseMovedEventToScrollbars):
+            (WebCore::EventHandler::currentPlatformMouseEvent):
+
+            Take the correspondingPressureEvent in order to build a PlatformMouseEvent with
+            the correct pressure information.
+            * platform/mac/PlatformEventFactoryMac.h:
+            * platform/mac/PlatformEventFactoryMac.mm:
+            (WebCore::globalPointForEvent):
+            (WebCore::pointForEvent):
+            (WebCore::mouseButtonForEvent):
+            (WebCore::PlatformMouseEventBuilder::PlatformMouseEventBuilder):
+            (WebCore::PlatformEventFactory::createPlatformMouseEvent):
+
</ins><span class="cx">     2015-05-12  Dana Burkart
</span><span class="cx">     Dana Burkart  &lt;dburkart@apple.com
</span><span class="cx">     dburkart@apple.com&gt;
</span><span class="cx"> 
</span><del>-            Merge r183943. rdar://problem/19913748
</del><ins>+            Merge r183953. rdar://problem/19997548
</ins><span class="cx"> 
</span><del>-        2015-05-07  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</del><ins>+        2015-05-06  Roger Fong  &lt;roger_fong@apple.com&gt;
</ins><span class="cx"> 
</span><del>-                Remove the WK1-only code path for independently composited iframes
-                https://bugs.webkit.org/show_bug.cgi?id=144722
</del><ins>+                Media Controls: Scrubber should be independent of actual video time, causes scrubber to be jumpy.
+                https://bugs.webkit.org/show_bug.cgi?id=144700.
+                &lt;rdar://problem/19997548&gt;
</ins><span class="cx"> 
</span><del>-                Reviewed by Dean Jackson.
</del><ins>+                Reviewed by Jer Noble.
</ins><span class="cx"> 
</span><del>-                In WebKit1 on Mac, we allowed iframes to be composited independently of their
-                parent document, relying on the fact that the frame's platform view can host
-                a layer-backed view. However, this ran into bugs (rdar://problem/18862298),
-                and triggers the assertion at the end of FrameView::updateLayoutAndStyleIfNeededRecursive(),
-                because the compositing update after a layout can dirty style in notifyIFramesOfCompositingChange().
</del><ins>+                Update time and timeline during the timeline input event instead of the wrapper's mousemove.
+                (Controller.prototype.handleWrapperMouseMove):
+                (Controller.prototype.handleTimelineMouseMove):
+                (Controller.prototype.drawTimelineBackground):
</ins><span class="cx"> 
</span><del>-                Removing the WK1-only code path solves these problems. It also eliminates the need
-                to do compositing-specific frame overlap testing.
</del><ins>+                (Controller.prototype.updateControlsWhileScrubbing):
+                Updates time and scrubber to reflect timeline user input.
</ins><span class="cx"> 
</span><del>-                * page/FrameView.cpp:
-                (WebCore::FrameView::setIsOverlapped): No need to do compositing-related things here.
-                Any iframe that gets composited will participate in the normal compositing overlap
-                testing in its parent frame.
-                (WebCore::FrameView::hasCompositedContentIncludingDescendants): Deleted.
-                (WebCore::FrameView::hasCompositingAncestor): Deleted.
-                * page/FrameView.h:
-                * rendering/RenderLayerCompositor.cpp: Replace ownerElement() checks in this file
-                with an isMainFrameCompositor() for readability. Some 0-&gt;nullptr.
-                (WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags):
-                (WebCore::RenderLayerCompositor::chromeClient):
-                (WebCore::RenderLayerCompositor::enclosingCompositorFlushingLayers):
-                (WebCore::RenderLayerCompositor::updateCompositingLayers):
-                (WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
-                (WebCore::RenderLayerCompositor::updateBacking):
-                (WebCore::RenderLayerCompositor::layerTreeAsText):
-                (WebCore::RenderLayerCompositor::frameContentsCompositor):
-                (WebCore::RenderLayerCompositor::setIsInWindow):
-                (WebCore::RenderLayerCompositor::requiresCompositingForScrollableFrame):
-                (WebCore::RenderLayerCompositor::requiresCompositingForFrame): frameRenderer.requiresAcceleratedCompositing()
-                already bails on no content RenderView, so the shouldPropagateCompositingToEnclosingFrame() check does
-                nothing and is removed.
-                (WebCore::RenderLayerCompositor::isAsyncScrollableStickyLayer):
-                (WebCore::RenderLayerCompositor::requiresScrollLayer):
-                (WebCore::RenderLayerCompositor::documentUsesTiledBacking):
-                (WebCore::RenderLayerCompositor::isMainFrameCompositor):
-                (WebCore::RenderLayerCompositor::shouldCompositeOverflowControls):
-                (WebCore::RenderLayerCompositor::requiresOverhangAreasLayer):
-                (WebCore::RenderLayerCompositor::requiresContentShadowLayer):
-                (WebCore::RenderLayerCompositor::updateLayerForTopOverhangArea):
-                (WebCore::RenderLayerCompositor::updateLayerForBottomOverhangArea):
-                (WebCore::RenderLayerCompositor::updateLayerForHeader):
-                (WebCore::RenderLayerCompositor::updateLayerForFooter):
-                (WebCore::RenderLayerCompositor::ensureRootLayer): Main frame attaches via ChromeClient,
-                all other frames attach via parent frame.
-                (WebCore::RenderLayerCompositor::notifyIFramesOfCompositingChange): This call to
-                scheduleSetNeedsStyleRecalc(SyntheticStyleChange) was the source of dirtying style after
-                layout, but is no longer needed so remove it.
-                (WebCore::RenderLayerCompositor::registerAllViewportConstrainedLayers):
-                (WebCore::RenderLayerCompositor::unregisterAllViewportConstrainedLayers):
-                (WebCore::RenderLayerCompositor::scrollingCoordinator):
-                (WebCore::RenderLayerCompositor::graphicsLayerFactory):
-                (WebCore::RenderLayerCompositor::allowsIndependentlyCompositedFrames): Deleted.
-                (WebCore::RenderLayerCompositor::shouldPropagateCompositingToEnclosingFrame): Deleted.
-                (WebCore::RenderLayerCompositor::mainFrameBackingIsTiled): Deleted. This was mis-named;
-                it really asks whether the document uses tiled backing, but does not check for main frame.
-                * rendering/RenderLayerCompositor.h:
-                * rendering/RenderWidget.cpp:
-                (WebCore::RenderWidget::paintContents): No need to do frame overlap testing for
-                compositing now.
-
</del><span class="cx">         2015-05-12  Dana Burkart
</span><span class="cx">         Dana Burkart  &lt;dburkart@apple.com
</span><span class="cx">         dburkart@apple.com&gt;
</span><span class="cx"> 
</span><del>-                Merge r183927. rdar://problem/20854785
</del><ins>+                Merge r183943. rdar://problem/19913748
</ins><span class="cx"> 
</span><del>-            2015-05-07  Eric Carlson  &lt;eric.carlson@apple.com&gt;
</del><ins>+            2015-05-07  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</ins><span class="cx"> 
</span><del>-                    [Mac] Playback target isn't set on new element
-                    https://bugs.webkit.org/show_bug.cgi?id=144724
</del><ins>+                    Remove the WK1-only code path for independently composited iframes
+                    https://bugs.webkit.org/show_bug.cgi?id=144722
</ins><span class="cx"> 
</span><del>-                    Reviewed by Jer Noble.
</del><ins>+                    Reviewed by Dean Jackson.
</ins><span class="cx"> 
</span><del>-                    * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
-                    * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
-                    (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): Call setShouldPlayToPlaybackTarget
-                    if necessary.
-                    (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldPlayToPlaybackTarget): Remember
-                    the setting in case we don't have an AVPlayer yet.
</del><ins>+                    In WebKit1 on Mac, we allowed iframes to be composited independently of their
+                    parent document, relying on the fact that the frame's platform view can host
+                    a layer-backed view. However, this ran into bugs (rdar://problem/18862298),
+                    and triggers the assertion at the end of FrameView::updateLayoutAndStyleIfNeededRecursive(),
+                    because the compositing update after a layout can dirty style in notifyIFramesOfCompositingChange().
</ins><span class="cx"> 
</span><ins>+                    Removing the WK1-only code path solves these problems. It also eliminates the need
+                    to do compositing-specific frame overlap testing.
+
+                    * page/FrameView.cpp:
+                    (WebCore::FrameView::setIsOverlapped): No need to do compositing-related things here.
+                    Any iframe that gets composited will participate in the normal compositing overlap
+                    testing in its parent frame.
+                    (WebCore::FrameView::hasCompositedContentIncludingDescendants): Deleted.
+                    (WebCore::FrameView::hasCompositingAncestor): Deleted.
+                    * page/FrameView.h:
+                    * rendering/RenderLayerCompositor.cpp: Replace ownerElement() checks in this file
+                    with an isMainFrameCompositor() for readability. Some 0-&gt;nullptr.
+                    (WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags):
+                    (WebCore::RenderLayerCompositor::chromeClient):
+                    (WebCore::RenderLayerCompositor::enclosingCompositorFlushingLayers):
+                    (WebCore::RenderLayerCompositor::updateCompositingLayers):
+                    (WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
+                    (WebCore::RenderLayerCompositor::updateBacking):
+                    (WebCore::RenderLayerCompositor::layerTreeAsText):
+                    (WebCore::RenderLayerCompositor::frameContentsCompositor):
+                    (WebCore::RenderLayerCompositor::setIsInWindow):
+                    (WebCore::RenderLayerCompositor::requiresCompositingForScrollableFrame):
+                    (WebCore::RenderLayerCompositor::requiresCompositingForFrame): frameRenderer.requiresAcceleratedCompositing()
+                    already bails on no content RenderView, so the shouldPropagateCompositingToEnclosingFrame() check does
+                    nothing and is removed.
+                    (WebCore::RenderLayerCompositor::isAsyncScrollableStickyLayer):
+                    (WebCore::RenderLayerCompositor::requiresScrollLayer):
+                    (WebCore::RenderLayerCompositor::documentUsesTiledBacking):
+                    (WebCore::RenderLayerCompositor::isMainFrameCompositor):
+                    (WebCore::RenderLayerCompositor::shouldCompositeOverflowControls):
+                    (WebCore::RenderLayerCompositor::requiresOverhangAreasLayer):
+                    (WebCore::RenderLayerCompositor::requiresContentShadowLayer):
+                    (WebCore::RenderLayerCompositor::updateLayerForTopOverhangArea):
+                    (WebCore::RenderLayerCompositor::updateLayerForBottomOverhangArea):
+                    (WebCore::RenderLayerCompositor::updateLayerForHeader):
+                    (WebCore::RenderLayerCompositor::updateLayerForFooter):
+                    (WebCore::RenderLayerCompositor::ensureRootLayer): Main frame attaches via ChromeClient,
+                    all other frames attach via parent frame.
+                    (WebCore::RenderLayerCompositor::notifyIFramesOfCompositingChange): This call to
+                    scheduleSetNeedsStyleRecalc(SyntheticStyleChange) was the source of dirtying style after
+                    layout, but is no longer needed so remove it.
+                    (WebCore::RenderLayerCompositor::registerAllViewportConstrainedLayers):
+                    (WebCore::RenderLayerCompositor::unregisterAllViewportConstrainedLayers):
+                    (WebCore::RenderLayerCompositor::scrollingCoordinator):
+                    (WebCore::RenderLayerCompositor::graphicsLayerFactory):
+                    (WebCore::RenderLayerCompositor::allowsIndependentlyCompositedFrames): Deleted.
+                    (WebCore::RenderLayerCompositor::shouldPropagateCompositingToEnclosingFrame): Deleted.
+                    (WebCore::RenderLayerCompositor::mainFrameBackingIsTiled): Deleted. This was mis-named;
+                    it really asks whether the document uses tiled backing, but does not check for main frame.
+                    * rendering/RenderLayerCompositor.h:
+                    * rendering/RenderWidget.cpp:
+                    (WebCore::RenderWidget::paintContents): No need to do frame overlap testing for
+                    compositing now.
+
</ins><span class="cx">             2015-05-12  Dana Burkart
</span><span class="cx">             Dana Burkart  &lt;dburkart@apple.com
</span><span class="cx">             dburkart@apple.com&gt;
</span><span class="cx"> 
</span><del>-                    Merge r183909. rdar://problem/18894598
</del><ins>+                    Merge r183927. rdar://problem/20854785
</ins><span class="cx"> 
</span><del>-                2015-05-06  Daniel Bates  &lt;dabates@apple.com&gt;
</del><ins>+                2015-05-07  Eric Carlson  &lt;eric.carlson@apple.com&gt;
</ins><span class="cx"> 
</span><del>-                        [iOS][WK2] Pause/resume database thread when UIProcess enters/leaves the background
-                        https://bugs.webkit.org/show_bug.cgi?id=144657
-                        &lt;rdar://problem/18894598&gt;
</del><ins>+                        [Mac] Playback target isn't set on new element
+                        https://bugs.webkit.org/show_bug.cgi?id=144724
</ins><span class="cx"> 
</span><del>-                        Reviewed by Andy Estes.
</del><ins>+                        Reviewed by Jer Noble.
</ins><span class="cx"> 
</span><del>-                        Export WebCore functionality to pause and resume the database thread so that we can
-                        make use of this functionality from WebKit2.
</del><ins>+                        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
+                        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+                        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): Call setShouldPlayToPlaybackTarget
+                        if necessary.
+                        (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldPlayToPlaybackTarget): Remember
+                        the setting in case we don't have an AVPlayer yet.
</ins><span class="cx"> 
</span><del>-                        * Modules/webdatabase/AbstractDatabaseServer.h:
-                        * Modules/webdatabase/DatabaseManager.cpp:
-                        (WebCore::DatabaseManager::setPauseAllDatabases): Added; turns around and calls DatabaseServer::setPauseAllDatabases().
-                        * Modules/webdatabase/DatabaseManager.h:
-                        * Modules/webdatabase/DatabaseServer.cpp:
-                        (WebCore::DatabaseServer::setPauseAllDatabases): Added; turns around and calls
-                        DatabaseTracker::tracker().setDatabasesPaused() to pause or resume the database thread.
-                        For now, we guard this call with PLATFORM(IOS). We'll look to remove this guard once
-                        we fix &lt;https://bugs.webkit.org/show_bug.cgi?id=144660&gt;.
-                        * Modules/webdatabase/DatabaseServer.h:
-
</del><span class="cx">                 2015-05-12  Dana Burkart
</span><del>-                Dana Burkart  &lt;dburkart@apple.com&gt;
</del><ins>+                Dana Burkart  &lt;dburkart@apple.com
+                dburkart@apple.com&gt;
</ins><span class="cx"> 
</span><del>-                        Merge r183942. rdar://problem/20049088
</del><ins>+                        Merge r183909. rdar://problem/18894598
</ins><span class="cx"> 
</span><del>-                    2015-05-06  Dean Jackson  &lt;dino@apple.com&gt;
</del><ins>+                    2015-05-06  Daniel Bates  &lt;dabates@apple.com&gt;
</ins><span class="cx"> 
</span><del>-                            Handle backdrop views that have to tile
-                            https://bugs.webkit.org/show_bug.cgi?id=142317
-                            &lt;rdar://problem/20049088&gt;
</del><ins>+                            [iOS][WK2] Pause/resume database thread when UIProcess enters/leaves the background
+                            https://bugs.webkit.org/show_bug.cgi?id=144657
+                            &lt;rdar://problem/18894598&gt;
</ins><span class="cx"> 
</span><del>-                            Reviewed by Simon Fraser.
</del><ins>+                            Reviewed by Andy Estes.
</ins><span class="cx"> 
</span><del>-                            Take 2 - this was rolled out because Mavericks was crashing.
</del><ins>+                            Export WebCore functionality to pause and resume the database thread so that we can
+                            make use of this functionality from WebKit2.
</ins><span class="cx"> 
</span><del>-                            Make sure backdrop layers don't tile. If they are big
-                            enough, we'll leave it to the platform compositor to handle.
</del><ins>+                            * Modules/webdatabase/AbstractDatabaseServer.h:
+                            * Modules/webdatabase/DatabaseManager.cpp:
+                            (WebCore::DatabaseManager::setPauseAllDatabases): Added; turns around and calls DatabaseServer::setPauseAllDatabases().
+                            * Modules/webdatabase/DatabaseManager.h:
+                            * Modules/webdatabase/DatabaseServer.cpp:
+                            (WebCore::DatabaseServer::setPauseAllDatabases): Added; turns around and calls
+                            DatabaseTracker::tracker().setDatabasesPaused() to pause or resume the database thread.
+                            For now, we guard this call with PLATFORM(IOS). We'll look to remove this guard once
+                            we fix &lt;https://bugs.webkit.org/show_bug.cgi?id=144660&gt;.
+                            * Modules/webdatabase/DatabaseServer.h:
</ins><span class="cx"> 
</span><del>-                            This also fixes a bug where if a layer changed from a backdrop
-                            type to a tiled type, it would still retain its custom appearance
-                            and we'd try to add children to the wrong layer.
-
-                            Test: compositing/media-controls-bar-appearance-big.html
-
-                            * platform/graphics/ca/GraphicsLayerCA.cpp:
-                            (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): Check if
-                            a layer needs a backdrop before checking if it needs to tile.
-
</del><span class="cx">                     2015-05-12  Dana Burkart
</span><span class="cx">                     Dana Burkart  &lt;dburkart@apple.com&gt;
</span><span class="cx"> 
</span><del>-                            Merge r183894. rdar://problem/20049088
</del><ins>+                            Merge r183942. rdar://problem/20049088
</ins><span class="cx"> 
</span><span class="cx">                         2015-05-06  Dean Jackson  &lt;dino@apple.com&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -182,6 +208,8 @@
</span><span class="cx"> 
</span><span class="cx">                                 Reviewed by Simon Fraser.
</span><span class="cx"> 
</span><ins>+                                Take 2 - this was rolled out because Mavericks was crashing.
+
</ins><span class="cx">                                 Make sure backdrop layers don't tile. If they are big
</span><span class="cx">                                 enough, we'll leave it to the platform compositor to handle.
</span><span class="cx"> 
</span><span class="lines">@@ -195,6 +223,32 @@
</span><span class="cx">                                 (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): Check if
</span><span class="cx">                                 a layer needs a backdrop before checking if it needs to tile.
</span><span class="cx"> 
</span><ins>+                        2015-05-12  Dana Burkart
+                        Dana Burkart  &lt;dburkart@apple.com&gt;
+
+                                Merge r183894. rdar://problem/20049088
+
+                            2015-05-06  Dean Jackson  &lt;dino@apple.com&gt;
+
+                                    Handle backdrop views that have to tile
+                                    https://bugs.webkit.org/show_bug.cgi?id=142317
+                                    &lt;rdar://problem/20049088&gt;
+
+                                    Reviewed by Simon Fraser.
+
+                                    Make sure backdrop layers don't tile. If they are big
+                                    enough, we'll leave it to the platform compositor to handle.
+
+                                    This also fixes a bug where if a layer changed from a backdrop
+                                    type to a tiled type, it would still retain its custom appearance
+                                    and we'd try to add children to the wrong layer.
+
+                                    Test: compositing/media-controls-bar-appearance-big.html
+
+                                    * platform/graphics/ca/GraphicsLayerCA.cpp:
+                                    (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): Check if
+                                    a layer needs a backdrop before checking if it needs to tile.
+
</ins><span class="cx"> 2015-05-06  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Scroll-snap points do not handle margins and padding propertly
</span></span></pre></div>
<a id="branchessafari601132branchSourceWebCorepageEventHandlerh"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebCore/page/EventHandler.h (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebCore/page/EventHandler.h        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebCore/page/EventHandler.h        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -266,10 +266,11 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA) &amp;&amp; defined(__OBJC__)
</span><span class="cx"> #if !PLATFORM(IOS)
</span><del>-    WEBCORE_EXPORT void mouseDown(NSEvent *);
-    WEBCORE_EXPORT void mouseDragged(NSEvent *);
-    WEBCORE_EXPORT void mouseUp(NSEvent *);
-    WEBCORE_EXPORT void mouseMoved(NSEvent *);
</del><ins>+    WEBCORE_EXPORT void mouseDown(NSEvent *, NSEvent *correspondingPressureEvent);
+    WEBCORE_EXPORT void mouseDragged(NSEvent *, NSEvent *correspondingPressureEvent);
+    WEBCORE_EXPORT void mouseUp(NSEvent *, NSEvent *correspondingPressureEvent);
+    WEBCORE_EXPORT void mouseMoved(NSEvent *, NSEvent *correspondingPressureEvent);
+    WEBCORE_EXPORT void pressureChange(NSEvent *, NSEvent* correspondingPressureEvent);
</ins><span class="cx">     WEBCORE_EXPORT bool keyEvent(NSEvent *);
</span><span class="cx">     WEBCORE_EXPORT bool wheelEvent(NSEvent *);
</span><span class="cx"> #else
</span><span class="lines">@@ -285,7 +286,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><del>-    WEBCORE_EXPORT void passMouseMovedEventToScrollbars(NSEvent *);
</del><ins>+    WEBCORE_EXPORT void passMouseMovedEventToScrollbars(NSEvent *, NSEvent* correspondingPressureEvent);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT void sendFakeEventsAfterWidgetTracking(NSEvent *initiatingEvent);
</span><span class="cx"> #endif
</span><span class="lines">@@ -294,6 +295,7 @@
</span><span class="cx">     void setActivationEventNumber(int num) { m_activationEventNumber = num; }
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT static NSEvent *currentNSEvent();
</span><ins>+    static NSEvent *correspondingPressureEvent();
</ins><span class="cx"> #else
</span><span class="cx">     static WebEvent *currentEvent();
</span><span class="cx"> #endif // !PLATFORM(IOS)
</span></span></pre></div>
<a id="branchessafari601132branchSourceWebCorepagemacEventHandlerMacmm"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebCore/page/mac/EventHandlerMac.mm (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebCore/page/mac/EventHandlerMac.mm        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebCore/page/mac/EventHandlerMac.mm        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -81,10 +81,21 @@
</span><span class="cx">     return currentNSEventSlot().get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static RetainPtr&lt;NSEvent&gt;&amp; correspondingPressureEventSlot()
+{
+    static NeverDestroyed&lt;RetainPtr&lt;NSEvent&gt;&gt; event;
+    return event;
+}
+
+NSEvent *EventHandler::correspondingPressureEvent()
+{
+    return correspondingPressureEventSlot().get();
+}
+
</ins><span class="cx"> class CurrentEventScope {
</span><span class="cx">      WTF_MAKE_NONCOPYABLE(CurrentEventScope);
</span><span class="cx"> public:
</span><del>-    CurrentEventScope(NSEvent *);
</del><ins>+    CurrentEventScope(NSEvent *, NSEvent *correspondingPressureEvent);
</ins><span class="cx">     ~CurrentEventScope();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -92,21 +103,27 @@
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx">     RetainPtr&lt;NSEvent&gt; m_event;
</span><span class="cx"> #endif
</span><ins>+    RetainPtr&lt;NSEvent&gt; m_savedPressureEvent;
+    RetainPtr&lt;NSEvent&gt; m_correspondingPressureEvent;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-inline CurrentEventScope::CurrentEventScope(NSEvent *event)
</del><ins>+inline CurrentEventScope::CurrentEventScope(NSEvent *event, NSEvent *correspondingPressureEvent)
</ins><span class="cx">     : m_savedCurrentEvent(currentNSEventSlot())
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx">     , m_event(event)
</span><span class="cx"> #endif
</span><ins>+    , m_savedPressureEvent(correspondingPressureEventSlot())
+    , m_correspondingPressureEvent(correspondingPressureEvent)
</ins><span class="cx"> {
</span><span class="cx">     currentNSEventSlot() = event;
</span><ins>+    correspondingPressureEventSlot() = correspondingPressureEvent;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline CurrentEventScope::~CurrentEventScope()
</span><span class="cx"> {
</span><span class="cx">     ASSERT(currentNSEventSlot() == m_event);
</span><span class="cx">     currentNSEventSlot() = m_savedCurrentEvent;
</span><ins>+    correspondingPressureEventSlot() = m_savedPressureEvent;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool EventHandler::wheelEvent(NSEvent *event)
</span><span class="lines">@@ -115,7 +132,7 @@
</span><span class="cx">     if (!page)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    CurrentEventScope scope(event);
</del><ins>+    CurrentEventScope scope(event, nil);
</ins><span class="cx">     return handleWheelEvent(PlatformEventFactory::createPlatformWheelEvent(event, page-&gt;chrome().platformPageClient()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -125,7 +142,7 @@
</span><span class="cx"> 
</span><span class="cx">     ASSERT([event type] == NSKeyDown || [event type] == NSKeyUp);
</span><span class="cx"> 
</span><del>-    CurrentEventScope scope(event);
</del><ins>+    CurrentEventScope scope(event, nil);
</ins><span class="cx">     return keyEvent(PlatformEventFactory::createPlatformKeyboardEvent(event));
</span><span class="cx"> 
</span><span class="cx">     END_BLOCK_OBJC_EXCEPTIONS;
</span><span class="lines">@@ -469,7 +486,7 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void EventHandler::mouseDown(NSEvent *event)
</del><ins>+void EventHandler::mouseDown(NSEvent *event, NSEvent *correspondingPressureEvent)
</ins><span class="cx"> {
</span><span class="cx">     FrameView* v = m_frame.view();
</span><span class="cx">     if (!v || m_sendingEventToSubview)
</span><span class="lines">@@ -479,14 +496,14 @@
</span><span class="cx">     
</span><span class="cx">     m_mouseDownView = nil;
</span><span class="cx">     
</span><del>-    CurrentEventScope scope(event);
</del><ins>+    CurrentEventScope scope(event, correspondingPressureEvent);
</ins><span class="cx"> 
</span><span class="cx">     handleMousePressEvent(currentPlatformMouseEvent());
</span><span class="cx"> 
</span><span class="cx">     END_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void EventHandler::mouseDragged(NSEvent *event)
</del><ins>+void EventHandler::mouseDragged(NSEvent *event, NSEvent *correspondingPressureEvent)
</ins><span class="cx"> {
</span><span class="cx">     FrameView* v = m_frame.view();
</span><span class="cx">     if (!v || m_sendingEventToSubview)
</span><span class="lines">@@ -494,13 +511,13 @@
</span><span class="cx"> 
</span><span class="cx">     BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx"> 
</span><del>-    CurrentEventScope scope(event);
</del><ins>+    CurrentEventScope scope(event, correspondingPressureEvent);
</ins><span class="cx">     handleMouseMoveEvent(currentPlatformMouseEvent());
</span><span class="cx"> 
</span><span class="cx">     END_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void EventHandler::mouseUp(NSEvent *event)
</del><ins>+void EventHandler::mouseUp(NSEvent *event, NSEvent *correspondingPressureEvent)
</ins><span class="cx"> {
</span><span class="cx">     FrameView* v = m_frame.view();
</span><span class="cx">     if (!v || m_sendingEventToSubview)
</span><span class="lines">@@ -508,7 +525,7 @@
</span><span class="cx"> 
</span><span class="cx">     BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx"> 
</span><del>-    CurrentEventScope scope(event);
</del><ins>+    CurrentEventScope scope(event, correspondingPressureEvent);
</ins><span class="cx"> 
</span><span class="cx">     // Our behavior here is a little different that Qt. Qt always sends
</span><span class="cx">     // a mouse release event, even for a double click. To correct problems
</span><span class="lines">@@ -595,7 +612,7 @@
</span><span class="cx">     END_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void EventHandler::mouseMoved(NSEvent *event)
</del><ins>+void EventHandler::mouseMoved(NSEvent *event, NSEvent* correspondingPressureEvent)
</ins><span class="cx"> {
</span><span class="cx">     // Reject a mouse moved if the button is down - screws up tracking during autoscroll
</span><span class="cx">     // These happen because WebKit sometimes has to fake up moved events.
</span><span class="lines">@@ -603,20 +620,31 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><del>-    CurrentEventScope scope(event);
</del><ins>+    CurrentEventScope scope(event, correspondingPressureEvent);
</ins><span class="cx">     mouseMoved(currentPlatformMouseEvent());
</span><span class="cx">     END_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void EventHandler::passMouseMovedEventToScrollbars(NSEvent *event)
</del><ins>+void EventHandler::pressureChange(NSEvent *event, NSEvent* correspondingPressureEvent)
</ins><span class="cx"> {
</span><ins>+    if (!m_frame.view() || m_sendingEventToSubview)
+        return;
+
+    BEGIN_BLOCK_OBJC_EXCEPTIONS;
+    CurrentEventScope scope(event, correspondingPressureEvent);
+    handleMouseForceEvent(currentPlatformMouseEvent());
+    END_BLOCK_OBJC_EXCEPTIONS;
+}
+
+void EventHandler::passMouseMovedEventToScrollbars(NSEvent *event, NSEvent* correspondingPressureEvent)
+{
</ins><span class="cx">     // Reject a mouse moved if the button is down - screws up tracking during autoscroll
</span><span class="cx">     // These happen because WebKit sometimes has to fake up moved events.
</span><span class="cx">     if (!m_frame.view() || m_mousePressed || m_sendingEventToSubview)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><del>-    CurrentEventScope scope(event);
</del><ins>+    CurrentEventScope scope(event, correspondingPressureEvent);
</ins><span class="cx">     passMouseMovedEventToScrollbars(currentPlatformMouseEvent());
</span><span class="cx">     END_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx"> }
</span><span class="lines">@@ -674,7 +702,7 @@
</span><span class="cx">     NSView *windowView = nil;
</span><span class="cx">     if (Page* page = m_frame.page())
</span><span class="cx">         windowView = page-&gt;chrome().platformPageClient();
</span><del>-    return PlatformEventFactory::createPlatformMouseEvent(currentNSEvent(), windowView);
</del><ins>+    return PlatformEventFactory::createPlatformMouseEvent(currentNSEvent(), correspondingPressureEvent(), windowView);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool EventHandler::eventActivatedView(const PlatformMouseEvent&amp; event) const
</span></span></pre></div>
<a id="branchessafari601132branchSourceWebCoreplatformmacPlatformEventFactoryMach"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebCore/platform/mac/PlatformEventFactoryMac.h (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebCore/platform/mac/PlatformEventFactoryMac.h        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebCore/platform/mac/PlatformEventFactoryMac.h        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> class PlatformEventFactory {
</span><span class="cx"> public:
</span><del>-    WEBCORE_EXPORT static PlatformMouseEvent createPlatformMouseEvent(NSEvent *, NSView *windowView);
</del><ins>+    WEBCORE_EXPORT static PlatformMouseEvent createPlatformMouseEvent(NSEvent *, NSEvent *correspondingPressureEvent, NSView *windowView);
</ins><span class="cx">     static PlatformWheelEvent createPlatformWheelEvent(NSEvent *, NSView *windowView);
</span><span class="cx">     WEBCORE_EXPORT static PlatformKeyboardEvent createPlatformKeyboardEvent(NSEvent *);
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchessafari601132branchSourceWebCoreplatformmacPlatformEventFactoryMacmm"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebCore/platform/mac/PlatformEventFactoryMac.mm (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebCore/platform/mac/PlatformEventFactoryMac.mm        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebCore/platform/mac/PlatformEventFactoryMac.mm        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -49,6 +49,9 @@
</span><span class="cx"> static IntPoint globalPointForEvent(NSEvent *event)
</span><span class="cx"> {
</span><span class="cx">     switch ([event type]) {
</span><ins>+#if defined(__LP64__) &amp;&amp; __MAC_OS_X_VERSION_MAX_ALLOWED &gt;= 101003
+        case NSEventTypePressure:
+#endif
</ins><span class="cx">         case NSLeftMouseDown:
</span><span class="cx">         case NSLeftMouseDragged:
</span><span class="cx">         case NSLeftMouseUp:
</span><span class="lines">@@ -71,6 +74,9 @@
</span><span class="cx"> static IntPoint pointForEvent(NSEvent *event, NSView *windowView)
</span><span class="cx"> {
</span><span class="cx">     switch ([event type]) {
</span><ins>+#if defined(__LP64__) &amp;&amp; __MAC_OS_X_VERSION_MAX_ALLOWED &gt;= 101003
+        case NSEventTypePressure:
+#endif
</ins><span class="cx">         case NSLeftMouseDown:
</span><span class="cx">         case NSLeftMouseDragged:
</span><span class="cx">         case NSLeftMouseUp:
</span><span class="lines">@@ -99,6 +105,9 @@
</span><span class="cx"> static MouseButton mouseButtonForEvent(NSEvent *event)
</span><span class="cx"> {
</span><span class="cx">     switch ([event type]) {
</span><ins>+#if defined(__LP64__) &amp;&amp; __MAC_OS_X_VERSION_MAX_ALLOWED &gt;= 101003
+        case NSEventTypePressure:
+#endif
</ins><span class="cx">         case NSLeftMouseDown:
</span><span class="cx">         case NSLeftMouseUp:
</span><span class="cx">         case NSLeftMouseDragged:
</span><span class="lines">@@ -411,29 +420,53 @@
</span><span class="cx">     
</span><span class="cx"> class PlatformMouseEventBuilder : public PlatformMouseEvent {
</span><span class="cx"> public:
</span><del>-    PlatformMouseEventBuilder(NSEvent *event, NSView *windowView)
</del><ins>+    PlatformMouseEventBuilder(NSEvent *event, NSEvent *correspondingPressureEvent, NSView *windowView)
</ins><span class="cx">     {
</span><span class="cx">         // PlatformEvent
</span><del>-        m_type                              = mouseEventTypeForEvent(event);
-        m_modifiers                         = modifiersForEvent(event);
-        m_timestamp                         = eventTimeStampSince1970(event);
</del><ins>+        m_type = mouseEventTypeForEvent(event);
</ins><span class="cx"> 
</span><ins>+#if defined(__LP64__) &amp;&amp; __MAC_OS_X_VERSION_MAX_ALLOWED &gt;= 101003
+        BOOL eventIsPressureEvent = [event type] == NSEventTypePressure;
+        if (eventIsPressureEvent) {
+            // Since AppKit doesn't send mouse events for force down or force up, we have to use the current pressure
+            // event and correspondingPressureEvent to detect if this is MouseForceDown, MouseForceUp, or just MouseForceChanged.
+            if (correspondingPressureEvent.stage == 1 &amp;&amp; event.stage == 2)
+                m_type = PlatformEvent::MouseForceDown;
+            else if (correspondingPressureEvent.stage == 2 &amp;&amp; event.stage == 1)
+                m_type = PlatformEvent::MouseForceUp;
+            else
+                m_type = PlatformEvent::MouseForceChanged;
+        }
+#else
+        UNUSED_PARAM(correspondingPressureEvent);
+#endif
+
+        m_modifiers = modifiersForEvent(event);
+        m_timestamp = eventTimeStampSince1970(event);
+
</ins><span class="cx">         // PlatformMouseEvent
</span><del>-        m_position                          = pointForEvent(event, windowView);
-        m_globalPosition                    = globalPointForEvent(event);
-        m_button                            = mouseButtonForEvent(event);
-        m_clickCount                        = clickCountForEvent(event);
-        
</del><ins>+        m_position = pointForEvent(event, windowView);
+        m_globalPosition = globalPointForEvent(event);
+        m_button = mouseButtonForEvent(event);
+        m_clickCount = clickCountForEvent(event);
+
+        m_force = 0;
+#if defined(__LP64__) &amp;&amp; __MAC_OS_X_VERSION_MAX_ALLOWED &gt;= 101003
+        int stage = eventIsPressureEvent ? event.stage : correspondingPressureEvent.stage;
+        double pressure = eventIsPressureEvent ? event.pressure : correspondingPressureEvent.pressure;
+        m_force = stage &lt; 1 ? pressure : pressure + stage - 1;
+#endif
+
</ins><span class="cx">         // Mac specific
</span><del>-        m_modifierFlags                     = [event modifierFlags];
-        m_eventNumber                       = [event eventNumber];
-        m_menuTypeForEvent                  = typeForEvent(event);
</del><ins>+        m_modifierFlags = [event modifierFlags];
+        m_eventNumber = [event eventNumber];
+        m_menuTypeForEvent = typeForEvent(event);
</ins><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-PlatformMouseEvent PlatformEventFactory::createPlatformMouseEvent(NSEvent *event, NSView *windowView)
</del><ins>+PlatformMouseEvent PlatformEventFactory::createPlatformMouseEvent(NSEvent *event, NSEvent *correspondingPressureEvent, NSView *windowView)
</ins><span class="cx"> {
</span><del>-    return PlatformMouseEventBuilder(event, windowView);
</del><ins>+    return PlatformMouseEventBuilder(event, correspondingPressureEvent, windowView);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari601132branchSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebKit/ChangeLog (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebKit/ChangeLog        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebKit/ChangeLog        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -1,3 +1,66 @@
</span><ins>+2015-05-12  Dana Burkart
+Dana Burkart  &lt;dburkart@apple.com
+dburkart@apple.com&gt;
+
+        Merge r183954. rdar://problem/20281886
+
+    2015-05-07  Beth Dakin  &lt;bdakin@apple.com&gt;
+
+            New force-related DOM events should fire in WK1 views
+            https://bugs.webkit.org/show_bug.cgi?id=144663
+            -and corresponding-
+            rdar://problem/20281886
+
+            Reviewed by Sam Weinig.
+
+            Pass the lastPressureEvent to WebCore.
+            * WebView/WebHTMLView.mm:
+            (-[WebHTMLView _updateMouseoverWithEvent:]):
+            (-[WebHTMLView rightMouseUp:]):
+            (-[WebHTMLView menuForEvent:]):
+            (-[WebHTMLView acceptsFirstMouse:]):
+            (-[WebHTMLView shouldDelayWindowOrderingForEvent:]):
+            (-[WebHTMLView mouseDown:mouseDown:]):
+            (-[WebHTMLView mouseDragged:]):
+            (-[WebHTMLView mouseUp:mouseUp:]):
+
+            New NSRespnder method for pressure changes.
+            (-[WebHTMLView pressureChangeWithEvent:]):
+
+            New BOOL _contentPreventsDefault tracks whether the HitTestResult prevented the
+            default action. Get rid of willHandleMouseDown; now that the gesture recognizer
+            sets delaysPrimaryMouseButtonEvents to NO, we don’t need this.
+            * WebView/WebImmediateActionController.h:
+            * WebView/WebImmediateActionController.mm:
+            (-[WebImmediateActionController _clearImmediateActionState]):
+
+            Set all of the immediateActionStages on EventHandler. This is critical to keep
+            link navigation happening at the right time now that
+            delaysPrimaryMouseButtonEvents is set to NO.
+            (-[WebImmediateActionController performHitTestAtPoint:]):
+            (-[WebImmediateActionController immediateActionRecognizerDidUpdateAnimation:]):
+            (-[WebImmediateActionController immediateActionRecognizerDidCancelAnimation:]):
+            (-[WebImmediateActionController immediateActionRecognizerDidCompleteAnimation:]):
+
+            Use a dummy animation controller if the content prevents default.
+            (-[WebImmediateActionController _defaultAnimationController]):
+            (-[WebImmediateActionController _updateImmediateActionItem]):
+            (-[WebImmediateActionController webView:willHandleMouseDown:]): Deleted.
+
+            Set delaysPrimaryMouseButtonEvents to NO so that we get existing mouse events when
+            we expect to.
+            * WebView/WebView.mm:
+            (-[WebView _commonInitializationWithFrameName:groupName:]):
+
+            Cache the most recent pressure event so that we can send it to WebCore for all of
+            the mouse events.
+            (-[WebView _pressureEvent]):
+            (-[WebView _setPressureEvent:]):
+            * WebView/WebViewData.h:
+            * WebView/WebViewData.mm:
+            (-[WebViewPrivate dealloc]):
+            * WebView/WebViewInternal.h:
+
</ins><span class="cx"> 2015-04-27  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Win] Deactivate WebGL until Windows tests work properly
</span></span></pre></div>
<a id="branchessafari601132branchSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebKit/mac/ChangeLog (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebKit/mac/ChangeLog        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebKit/mac/ChangeLog        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -1,3 +1,66 @@
</span><ins>+2015-05-12  Dana Burkart
+Dana Burkart  &lt;dburkart@apple.com
+dburkart@apple.com&gt;
+
+        Merge r183954. rdar://problem/20281886
+
+    2015-05-07  Beth Dakin  &lt;bdakin@apple.com&gt;
+
+            New force-related DOM events should fire in WK1 views
+            https://bugs.webkit.org/show_bug.cgi?id=144663
+            -and corresponding-
+            rdar://problem/20281886
+
+            Reviewed by Sam Weinig.
+
+            Pass the lastPressureEvent to WebCore.
+            * WebView/WebHTMLView.mm:
+            (-[WebHTMLView _updateMouseoverWithEvent:]):
+            (-[WebHTMLView rightMouseUp:]):
+            (-[WebHTMLView menuForEvent:]):
+            (-[WebHTMLView acceptsFirstMouse:]):
+            (-[WebHTMLView shouldDelayWindowOrderingForEvent:]):
+            (-[WebHTMLView mouseDown:mouseDown:]):
+            (-[WebHTMLView mouseDragged:]):
+            (-[WebHTMLView mouseUp:mouseUp:]):
+
+            New NSRespnder method for pressure changes.
+            (-[WebHTMLView pressureChangeWithEvent:]):
+
+            New BOOL _contentPreventsDefault tracks whether the HitTestResult prevented the
+            default action. Get rid of willHandleMouseDown; now that the gesture recognizer
+            sets delaysPrimaryMouseButtonEvents to NO, we don’t need this.
+            * WebView/WebImmediateActionController.h:
+            * WebView/WebImmediateActionController.mm:
+            (-[WebImmediateActionController _clearImmediateActionState]):
+
+            Set all of the immediateActionStages on EventHandler. This is critical to keep
+            link navigation happening at the right time now that
+            delaysPrimaryMouseButtonEvents is set to NO.
+            (-[WebImmediateActionController performHitTestAtPoint:]):
+            (-[WebImmediateActionController immediateActionRecognizerDidUpdateAnimation:]):
+            (-[WebImmediateActionController immediateActionRecognizerDidCancelAnimation:]):
+            (-[WebImmediateActionController immediateActionRecognizerDidCompleteAnimation:]):
+
+            Use a dummy animation controller if the content prevents default.
+            (-[WebImmediateActionController _defaultAnimationController]):
+            (-[WebImmediateActionController _updateImmediateActionItem]):
+            (-[WebImmediateActionController webView:willHandleMouseDown:]): Deleted.
+
+            Set delaysPrimaryMouseButtonEvents to NO so that we get existing mouse events when
+            we expect to.
+            * WebView/WebView.mm:
+            (-[WebView _commonInitializationWithFrameName:groupName:]):
+
+            Cache the most recent pressure event so that we can send it to WebCore for all of
+            the mouse events.
+            (-[WebView _pressureEvent]):
+            (-[WebView _setPressureEvent:]):
+            * WebView/WebViewData.h:
+            * WebView/WebViewData.mm:
+            (-[WebViewPrivate dealloc]):
+            * WebView/WebViewInternal.h:
+
</ins><span class="cx"> 2015-04-02  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Introducing the Platform Abstraction Layer (PAL)
</span></span></pre></div>
<a id="branchessafari601132branchSourceWebKitmacWebViewWebHTMLViewmm"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebHTMLView.mm (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebHTMLView.mm        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebHTMLView.mm        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -1768,7 +1768,7 @@
</span><span class="cx">             context:[[NSApp currentEvent] context]
</span><span class="cx">             eventNumber:0 clickCount:0 pressure:0];
</span><span class="cx">         if (Frame* lastHitCoreFrame = core([lastHitView _frame]))
</span><del>-            lastHitCoreFrame-&gt;eventHandler().mouseMoved(event);
</del><ins>+            lastHitCoreFrame-&gt;eventHandler().mouseMoved(event, [[self _webView] _pressureEvent]);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     lastHitView = view;
</span><span class="lines">@@ -1787,9 +1787,9 @@
</span><span class="cx">                 || [[self _webView] _dashboardBehavior:WebDashboardBehaviorAlwaysSendMouseEventsToAllWindows]
</span><span class="cx"> #endif
</span><span class="cx">                 ) {
</span><del>-                coreFrame-&gt;eventHandler().mouseMoved(event);
</del><ins>+                coreFrame-&gt;eventHandler().mouseMoved(event, [[self _webView] _pressureEvent]);
</ins><span class="cx">             } else
</span><del>-                coreFrame-&gt;eventHandler().passMouseMovedEventToScrollbars(event);
</del><ins>+                coreFrame-&gt;eventHandler().passMouseMovedEventToScrollbars(event, [[self _webView] _pressureEvent]);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         [view release];
</span><span class="lines">@@ -3303,7 +3303,7 @@
</span><span class="cx">     [super rightMouseUp:event];
</span><span class="cx"> 
</span><span class="cx">     if (Frame* coreframe = core([self _frame]))
</span><del>-        coreframe-&gt;eventHandler().mouseUp(event);
</del><ins>+        coreframe-&gt;eventHandler().mouseUp(event, [[self _webView] _pressureEvent]);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void setMenuItemTarget(NSMenuItem* menuItem)
</span><span class="lines">@@ -3348,8 +3348,8 @@
</span><span class="cx">     // Match behavior of other browsers by sending a mousedown event for right clicks.
</span><span class="cx">     _private-&gt;handlingMouseDownEvent = YES;
</span><span class="cx">     page-&gt;contextMenuController().clearContextMenu();
</span><del>-    coreFrame-&gt;eventHandler().mouseDown(event);
-    BOOL handledEvent = coreFrame-&gt;eventHandler().sendContextMenuEvent(PlatformEventFactory::createPlatformMouseEvent(event, page-&gt;chrome().platformPageClient()));
</del><ins>+    coreFrame-&gt;eventHandler().mouseDown(event, [[self _webView] _pressureEvent]);
+    BOOL handledEvent = coreFrame-&gt;eventHandler().sendContextMenuEvent(PlatformEventFactory::createPlatformMouseEvent(event, [[self _webView] _pressureEvent], page-&gt;chrome().platformPageClient()));
</ins><span class="cx">     _private-&gt;handlingMouseDownEvent = NO;
</span><span class="cx"> 
</span><span class="cx">     if (!handledEvent)
</span><span class="lines">@@ -3777,7 +3777,7 @@
</span><span class="cx">             if ([hitHTMLView _isSelectionEvent:event]) {
</span><span class="cx"> #if ENABLE(DRAG_SUPPORT)
</span><span class="cx">                 if (Page* page = coreFrame-&gt;page())
</span><del>-                    result = coreFrame-&gt;eventHandler().eventMayStartDrag(PlatformEventFactory::createPlatformMouseEvent(event, page-&gt;chrome().platformPageClient()));
</del><ins>+                    result = coreFrame-&gt;eventHandler().eventMayStartDrag(PlatformEventFactory::createPlatformMouseEvent(event, [[self _webView] _pressureEvent], page-&gt;chrome().platformPageClient()));
</ins><span class="cx"> #endif
</span><span class="cx">             } else if ([hitHTMLView _isScrollBarEvent:event])
</span><span class="cx">                 result = true;
</span><span class="lines">@@ -3804,7 +3804,7 @@
</span><span class="cx"> #if ENABLE(DRAG_SUPPORT)
</span><span class="cx">             if (Frame* coreFrame = core([hitHTMLView _frame])) {
</span><span class="cx">                 if (Page* page = coreFrame-&gt;page())
</span><del>-                    result = coreFrame-&gt;eventHandler().eventMayStartDrag(PlatformEventFactory::createPlatformMouseEvent(event, page-&gt;chrome().platformPageClient()));
</del><ins>+                    result = coreFrame-&gt;eventHandler().eventMayStartDrag(PlatformEventFactory::createPlatformMouseEvent(event, [[self _webView] _pressureEvent], page-&gt;chrome().platformPageClient()));
</ins><span class="cx">             }
</span><span class="cx"> #endif
</span><span class="cx">             [hitHTMLView _setMouseDownEvent:nil];
</span><span class="lines">@@ -3841,7 +3841,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101000
</span><span class="cx">     [[[self _webView] _actionMenuController] webView:[self _webView] willHandleMouseDown:event];
</span><del>-    [[[self _webView] _immediateActionController] webView:[self _webView] willHandleMouseDown:event];
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="lines">@@ -3872,7 +3871,7 @@
</span><span class="cx">             // Let WebCore get a chance to deal with the event. This will call back to us
</span><span class="cx">             // to start the autoscroll timer if appropriate.
</span><span class="cx">             if (Frame* coreframe = core([self _frame]))
</span><del>-                coreframe-&gt;eventHandler().mouseDown(event);
</del><ins>+                coreframe-&gt;eventHandler().mouseDown(event, [[self _webView] _pressureEvent]);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> #pragma clang diagnostic pop
</span><span class="lines">@@ -3925,7 +3924,7 @@
</span><span class="cx">     if (!_private-&gt;ignoringMouseDraggedEvents) {
</span><span class="cx">         if (Frame* frame = core([self _frame])) {
</span><span class="cx">             if (Page* page = frame-&gt;page())
</span><del>-                page-&gt;mainFrame().eventHandler().mouseDragged(event);
</del><ins>+                page-&gt;mainFrame().eventHandler().mouseDragged(event, [[self _webView] _pressureEvent]);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -4064,8 +4063,13 @@
</span><span class="cx"> 
</span><span class="cx">     [self _stopAutoscrollTimer];
</span><span class="cx">     if (Frame* frame = core([self _frame])) {
</span><del>-        if (Page* page = frame-&gt;page())
</del><ins>+        if (Page* page = frame-&gt;page()) {
+#if PLATFORM(IOS)
</ins><span class="cx">             page-&gt;mainFrame().eventHandler().mouseUp(event);
</span><ins>+#else
+            page-&gt;mainFrame().eventHandler().mouseUp(event, [[self _webView] _pressureEvent]);
+#endif
+        }
</ins><span class="cx">     }
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx">     [self _updateMouseoverWithFakeEvent];
</span><span class="lines">@@ -4081,6 +4085,22 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+- (void)pressureChangeWithEvent:(NSEvent *)event
+{
+#if defined(__LP64__) &amp;&amp; __MAC_OS_X_VERSION_MAX_ALLOWED &gt;= 101003
+    NSEvent *lastPressureEvent = [[self _webView] _pressureEvent];
+    if (event.phase != NSEventPhaseChanged &amp;&amp; event.phase != NSEventPhaseBegan &amp;&amp; event.phase != NSEventPhaseEnded)
+        return;
+
+    RefPtr&lt;Frame&gt; coreFrame = core([self _frame]);
+    if (!coreFrame)
+        return;
+
+    coreFrame-&gt;eventHandler().pressureChange(event, lastPressureEvent);
+    [[self _webView] _setPressureEvent:event];
+#endif
+}
+
</ins><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx"> // returning YES from this method is the way we tell AppKit that it is ok for this view
</span><span class="cx"> // to be in the key loop even when &quot;tab to all controls&quot; is not on.
</span></span></pre></div>
<a id="branchessafari601132branchSourceWebKitmacWebViewWebImmediateActionControllerh"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebImmediateActionController.h (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebImmediateActionController.h        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebImmediateActionController.h        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -45,12 +45,12 @@
</span><span class="cx">     RetainPtr&lt;DDActionContext&gt; _currentActionContext;
</span><span class="cx">     BOOL _isShowingTextIndicator;
</span><span class="cx">     BOOL _hasActivatedActionContext;
</span><ins>+    BOOL _contentPreventsDefault;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (instancetype)initWithWebView:(WebView *)webView recognizer:(NSImmediateActionGestureRecognizer *)immediateActionRecognizer;
</span><span class="cx"> - (void)webViewClosed;
</span><span class="cx"> 
</span><del>-- (void)webView:(WebView *)webView willHandleMouseDown:(NSEvent *)event;
</del><span class="cx"> - (void)webView:(WebView *)webView didHandleScrollWheel:(NSEvent *)event;
</span><span class="cx"> 
</span><span class="cx"> - (NSImmediateActionGestureRecognizer *)immediateActionRecognizer;
</span></span></pre></div>
<a id="branchessafari601132branchSourceWebKitmacWebViewWebImmediateActionControllermm"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebImmediateActionController.mm (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebImmediateActionController.mm        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebImmediateActionController.mm        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -64,6 +64,13 @@
</span><span class="cx"> @interface WebImmediateActionController () &lt;QLPreviewMenuItemDelegate&gt;
</span><span class="cx"> @end
</span><span class="cx"> 
</span><ins>+@interface WebAnimationController : NSObject &lt;NSImmediateActionAnimationController&gt; {
+}
+@end
+
+@implementation WebAnimationController
+@end
+
</ins><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="cx"> @implementation WebImmediateActionController
</span><span class="lines">@@ -94,12 +101,6 @@
</span><span class="cx">     _currentActionContext = nil;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)webView:(WebView *)webView willHandleMouseDown:(NSEvent *)event
-{
-    [self _clearImmediateActionState];
-    [_webView _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::FadeOut];
-}
-
</del><span class="cx"> - (void)webView:(WebView *)webView didHandleScrollWheel:(NSEvent *)event
</span><span class="cx"> {
</span><span class="cx">     [_currentQLPreviewMenuItem close];
</span><span class="lines">@@ -136,6 +137,7 @@
</span><span class="cx">     _type = WebImmediateActionNone;
</span><span class="cx">     _currentActionContext = nil;
</span><span class="cx">     _currentQLPreviewMenuItem = nil;
</span><ins>+    _contentPreventsDefault = NO;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)performHitTestAtPoint:(NSPoint)viewPoint
</span><span class="lines">@@ -144,6 +146,10 @@
</span><span class="cx">     if (!coreFrame)
</span><span class="cx">         return;
</span><span class="cx">     _hitTestResult = coreFrame-&gt;eventHandler().hitTestResultAtPoint(IntPoint(viewPoint));
</span><ins>+    coreFrame-&gt;eventHandler().setImmediateActionStage(ImmediateActionStage::PerformedHitTest);
+
+    if (Element* element = _hitTestResult.innerElement())
+        _contentPreventsDefault = element-&gt;dispatchMouseForceWillBegin();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #pragma mark NSImmediateActionGestureRecognizerDelegate
</span><span class="lines">@@ -188,6 +194,13 @@
</span><span class="cx">     if (immediateActionRecognizer != _immediateActionRecognizer)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    Frame* coreFrame = core([[[[_webView _selectedOrMainFrame] frameView] documentView] _frame]);
+    if (!coreFrame)
+        return;
+    coreFrame-&gt;eventHandler().setImmediateActionStage(ImmediateActionStage::ActionUpdated);
+    if (_contentPreventsDefault)
+        return;
+
</ins><span class="cx">     [_webView _setTextIndicatorAnimationProgress:[immediateActionRecognizer animationProgress]];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -196,6 +209,10 @@
</span><span class="cx">     if (immediateActionRecognizer != _immediateActionRecognizer)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    Frame* coreFrame = core([[[[_webView _selectedOrMainFrame] frameView] documentView] _frame]);
+    if (coreFrame)
+        coreFrame-&gt;eventHandler().setImmediateActionStage(ImmediateActionStage::ActionCancelled);
+
</ins><span class="cx">     [_webView _setTextIndicatorAnimationProgress:0];
</span><span class="cx">     [self _clearImmediateActionState];
</span><span class="cx">     [_webView _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::None];
</span><span class="lines">@@ -207,6 +224,11 @@
</span><span class="cx">     if (immediateActionRecognizer != _immediateActionRecognizer)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    Frame* coreFrame = core([[[[_webView _selectedOrMainFrame] frameView] documentView] _frame]);
+    if (!coreFrame)
+        return;
+    coreFrame-&gt;eventHandler().setImmediateActionStage(ImmediateActionStage::ActionCompleted);
+
</ins><span class="cx">     [_webView _setTextIndicatorAnimationProgress:1];
</span><span class="cx">     [_webView _setMaintainsInactiveSelection:NO];
</span><span class="cx"> }
</span><span class="lines">@@ -215,6 +237,11 @@
</span><span class="cx"> 
</span><span class="cx"> - (id &lt;NSImmediateActionAnimationController&gt;)_defaultAnimationController
</span><span class="cx"> {
</span><ins>+    if (_contentPreventsDefault) {
+        RetainPtr&lt;WebAnimationController&gt; dummyController = [[WebAnimationController alloc] init];
+        return dummyController.get();
+    }
+
</ins><span class="cx">     NSURL *url = _hitTestResult.absoluteLinkURL();
</span><span class="cx">     NSString *absoluteURLString = [url absoluteString];
</span><span class="cx">     if (url &amp;&amp; _hitTestResult.URLElement()) {
</span><span class="lines">@@ -265,6 +292,11 @@
</span><span class="cx"> 
</span><span class="cx">     id &lt;NSImmediateActionAnimationController&gt; defaultAnimationController = [self _defaultAnimationController];
</span><span class="cx"> 
</span><ins>+    if (_contentPreventsDefault) {
+        [_immediateActionRecognizer setAnimationController:defaultAnimationController];
+        return;
+    }
+
</ins><span class="cx">     // Allow clients the opportunity to override the default immediate action.
</span><span class="cx">     id customClientAnimationController = nil;
</span><span class="cx">     if ([[_webView UIDelegate] respondsToSelector:@selector(_webView:immediateActionAnimationControllerForHitTestResult:withType:)]) {
</span></span></pre></div>
<a id="branchessafari601132branchSourceWebKitmacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebView.mm (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebView.mm        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebView.mm        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -910,6 +910,7 @@
</span><span class="cx">         RetainPtr&lt;NSImmediateActionGestureRecognizer&gt; recognizer = adoptNS([(NSImmediateActionGestureRecognizer *)[gestureClass alloc] initWithTarget:nil action:NULL]);
</span><span class="cx">         _private-&gt;immediateActionController = [[WebImmediateActionController alloc] initWithWebView:self recognizer:recognizer.get()];
</span><span class="cx">         [recognizer setDelegate:_private-&gt;immediateActionController];
</span><ins>+        [recognizer setDelaysPrimaryMouseButtonEvents:NO];
</ins><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -8601,6 +8602,16 @@
</span><span class="cx"> }
</span><span class="cx"> #endif // __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101000
</span><span class="cx"> 
</span><ins>+- (NSEvent *)_pressureEvent
+{
+    return _private-&gt;pressureEvent.get();
+}
+
+- (void)_setPressureEvent:(NSEvent *)event
+{
+    _private-&gt;pressureEvent = event;
+}
+
</ins><span class="cx"> - (void)_setTextIndicator:(TextIndicator&amp;)textIndicator
</span><span class="cx"> {
</span><span class="cx">     [self _setTextIndicator:textIndicator withLifetime:TextIndicatorLifetime::Permanent];
</span></span></pre></div>
<a id="branchessafari601132branchSourceWebKitmacWebViewWebViewDatah"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebViewData.h (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebViewData.h        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebViewData.h        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -175,6 +175,7 @@
</span><span class="cx">     std::unique_ptr&lt;WebCore::TextIndicatorWindow&gt; textIndicatorWindow;
</span><span class="cx">     BOOL hasInitializedLookupObserver;
</span><span class="cx">     RetainPtr&lt;WebWindowVisibilityObserver&gt; windowVisibilityObserver;
</span><ins>+    RetainPtr&lt;NSEvent&gt; pressureEvent;
</ins><span class="cx"> #endif // PLATFORM(MAC)
</span><span class="cx"> 
</span><span class="cx">     BOOL shouldMaintainInactiveSelection;
</span></span></pre></div>
<a id="branchessafari601132branchSourceWebKitmacWebViewWebViewInternalh"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebViewInternal.h (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebViewInternal.h        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Source/WebKit/mac/WebView/WebViewInternal.h        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -269,6 +269,8 @@
</span><span class="cx"> - (WebActionMenuController *)_actionMenuController;
</span><span class="cx"> - (WebImmediateActionController *)_immediateActionController;
</span><span class="cx"> #endif
</span><ins>+- (NSEvent *)_pressureEvent;
+- (void)_setPressureEvent:(NSEvent *)event;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS) &amp;&amp; defined(__cplusplus)
</span></span></pre></div>
<a id="branchessafari601132branchToolsChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Tools/ChangeLog (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Tools/ChangeLog        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Tools/ChangeLog        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2015-05-12  Dana Burkart
+Dana Burkart  &lt;dburkart@apple.com
+dburkart@apple.com&gt;
+
+        Merge r183954. rdar://problem/20281886
+
+    2015-05-07  Beth Dakin  &lt;bdakin@apple.com&gt;
+
+            New force-related DOM events should fire in WK1 views
+            https://bugs.webkit.org/show_bug.cgi?id=144663
+            -and corresponding-
+            rdar://problem/20281886
+
+            Reviewed by Sam Weinig.
+
+            PlatformEventFactory::createPlatformMouseEvent() takes the last pressure event
+            now. Just send nil.
+            * TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:
+            (TestWebKitAPI::buildAndPerformTest):
+
</ins><span class="cx"> 2015-05-06  Matt Baker  &lt;mattbaker@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, updated my list of email addresses.
</span></span></pre></div>
<a id="branchessafari601132branchToolsTestWebKitAPITestsmacMenuTypesForMouseEventsmm"></a>
<div class="modfile"><h4>Modified: branches/safari-601.1.32-branch/Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm (184243 => 184244)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-601.1.32-branch/Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm        2015-05-13 03:58:15 UTC (rev 184243)
+++ branches/safari-601.1.32-branch/Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm        2015-05-13 03:58:20 UTC (rev 184244)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">                                       clickCount:0
</span><span class="cx">                                         pressure:0];
</span><span class="cx">     
</span><del>-    auto pme = WebCore::PlatformEventFactory::createPlatformMouseEvent(event, webView.get());
</del><ins>+    auto pme = WebCore::PlatformEventFactory::createPlatformMouseEvent(event, nil, webView.get());
</ins><span class="cx">     
</span><span class="cx">     EXPECT_EQ(expectedButton, pme.button());
</span><span class="cx">     EXPECT_TRUE(!modifierFlags || pme.modifierFlags() &amp; modifierFlags);
</span></span></pre>
</div>
</div>

</body>
</html>