<!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>[163043] trunk</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/163043">163043</a></dd>
<dt>Author</dt> <dd>timothy_horton@apple.com</dd>
<dt>Date</dt> <dd>2014-01-29 15:06:45 -0800 (Wed, 29 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>WebKit2 View Gestures (Swipe): Update rubberBandsAt{Left,Right} when WebKit swipe is enabled
https://bugs.webkit.org/show_bug.cgi?id=127855
&lt;rdar://problem/15933878&gt;

Reviewed by Anders Carlsson.

* UIProcess/API/mac/WKView.mm:
(-[WKView setAllowsBackForwardNavigationGestures:]):
Enable implicit control of rubberbanding when using WebKit2's swipe implementation.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::sendWheelEvent):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::setShouldUseImplicitRubberBandControl):
(WebKit::WebPageProxy::shouldUseImplicitRubberBandControl):
Rename away from &quot;legacy&quot; name, since we're using it on purpose now.

* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::expectsLegacyImplicitRubberBandControl):
(WebKit::WebPageProxy::platformInitialize):
Since NSVersionOfLinkTimeLibrary doesn't work for applications that
don't link directly against the library (like Safari), let's explicitly
check if Safari is expecting the legacy behavior, otherwise using
the linked version of WebKit2, but using the new behavior if we can't
determine the linked version of WebKit2 and are not Safari.

* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController awakeFromNib]):
Enable swipe in MiniBrowser for testing purposes.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPImacWKViewmm">trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacWebPageProxyMacmm">trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsMiniBrowsermacWK2BrowserWindowControllerm">trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (163042 => 163043)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-01-29 22:46:59 UTC (rev 163042)
+++ trunk/Source/WebKit2/ChangeLog        2014-01-29 23:06:45 UTC (rev 163043)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2014-01-29  Tim Horton  &lt;timothy_horton@apple.com&gt;
+
+        WebKit2 View Gestures (Swipe): Update rubberBandsAt{Left,Right} when WebKit swipe is enabled
+        https://bugs.webkit.org/show_bug.cgi?id=127855
+        &lt;rdar://problem/15933878&gt;
+
+        Reviewed by Anders Carlsson.
+
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView setAllowsBackForwardNavigationGestures:]):
+        Enable implicit control of rubberbanding when using WebKit2's swipe implementation.
+
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::WebPageProxy):
+        (WebKit::WebPageProxy::sendWheelEvent):
+        * UIProcess/WebPageProxy.h:
+        (WebKit::WebPageProxy::setShouldUseImplicitRubberBandControl):
+        (WebKit::WebPageProxy::shouldUseImplicitRubberBandControl):
+        Rename away from &quot;legacy&quot; name, since we're using it on purpose now.
+
+        * UIProcess/mac/WebPageProxyMac.mm:
+        (WebKit::expectsLegacyImplicitRubberBandControl):
+        (WebKit::WebPageProxy::platformInitialize):
+        Since NSVersionOfLinkTimeLibrary doesn't work for applications that
+        don't link directly against the library (like Safari), let's explicitly
+        check if Safari is expecting the legacy behavior, otherwise using
+        the linked version of WebKit2, but using the new behavior if we can't
+        determine the linked version of WebKit2 and are not Safari.
+
</ins><span class="cx"> 2014-01-29  Anders Carlsson  &lt;andersca@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Make WKWebView limp along on OS X
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPImacWKViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (163042 => 163043)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm        2014-01-29 22:46:59 UTC (rev 163042)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm        2014-01-29 23:06:45 UTC (rev 163043)
</span><span class="lines">@@ -3269,6 +3269,7 @@
</span><span class="cx"> {
</span><span class="cx">     _data-&gt;_allowsBackForwardNavigationGestures = allowsBackForwardNavigationGestures;
</span><span class="cx">     _data-&gt;_page-&gt;setShouldRecordNavigationSnapshots(allowsBackForwardNavigationGestures);
</span><ins>+    _data-&gt;_page-&gt;setShouldUseImplicitRubberBandControl(allowsBackForwardNavigationGestures);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)allowsBackForwardNavigationGestures
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (163042 => 163043)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2014-01-29 22:46:59 UTC (rev 163042)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2014-01-29 23:06:45 UTC (rev 163043)
</span><span class="lines">@@ -307,7 +307,7 @@
</span><span class="cx">     , m_mainFrameIsPinnedToRightSide(false)
</span><span class="cx">     , m_mainFrameIsPinnedToTopSide(false)
</span><span class="cx">     , m_mainFrameIsPinnedToBottomSide(false)
</span><del>-    , m_useLegacyImplicitRubberBandControl(false)
</del><ins>+    , m_shouldUseImplicitRubberBandControl(false)
</ins><span class="cx">     , m_rubberBandsAtLeft(true)
</span><span class="cx">     , m_rubberBandsAtRight(true)
</span><span class="cx">     , m_rubberBandsAtTop(true)
</span><span class="lines">@@ -1280,8 +1280,8 @@
</span><span class="cx">         Messages::EventDispatcher::WheelEvent(
</span><span class="cx">             m_pageID,
</span><span class="cx">             event,
</span><del>-            m_useLegacyImplicitRubberBandControl ? !m_backForwardList-&gt;backItem() : rubberBandsAtLeft(),
-            m_useLegacyImplicitRubberBandControl ? !m_backForwardList-&gt;forwardItem() : rubberBandsAtRight(),
</del><ins>+            shouldUseImplicitRubberBandControl() ? !m_backForwardList-&gt;backItem() : rubberBandsAtLeft(),
+            shouldUseImplicitRubberBandControl() ? !m_backForwardList-&gt;forwardItem() : rubberBandsAtRight(),
</ins><span class="cx">             rubberBandsAtTop(),
</span><span class="cx">             rubberBandsAtBottom()
</span><span class="cx">         ), 0);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (163042 => 163043)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-01-29 22:46:59 UTC (rev 163042)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-01-29 23:06:45 UTC (rev 163043)
</span><span class="lines">@@ -596,6 +596,9 @@
</span><span class="cx">     bool rubberBandsAtBottom() const;
</span><span class="cx">     void setRubberBandsAtBottom(bool);
</span><span class="cx"> 
</span><ins>+    void setShouldUseImplicitRubberBandControl(bool shouldUseImplicitRubberBandControl) { m_shouldUseImplicitRubberBandControl = shouldUseImplicitRubberBandControl; }
+    bool shouldUseImplicitRubberBandControl() const { return m_shouldUseImplicitRubberBandControl; }
+
</ins><span class="cx">     void setBackgroundExtendsBeyondPage(bool);
</span><span class="cx">     bool backgroundExtendsBeyondPage() const;
</span><span class="cx"> 
</span><span class="lines">@@ -1353,7 +1356,7 @@
</span><span class="cx">     bool m_mainFrameIsPinnedToTopSide;
</span><span class="cx">     bool m_mainFrameIsPinnedToBottomSide;
</span><span class="cx"> 
</span><del>-    bool m_useLegacyImplicitRubberBandControl;
</del><ins>+    bool m_shouldUseImplicitRubberBandControl;
</ins><span class="cx">     bool m_rubberBandsAtLeft;
</span><span class="cx">     bool m_rubberBandsAtRight;
</span><span class="cx">     bool m_rubberBandsAtTop;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacWebPageProxyMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm (163042 => 163043)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm        2014-01-29 22:46:59 UTC (rev 163042)
+++ trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm        2014-01-29 23:06:45 UTC (rev 163043)
</span><span class="lines">@@ -42,6 +42,7 @@
</span><span class="cx"> #import &quot;WebProcessProxy.h&quot;
</span><span class="cx"> #import &lt;WebCore/DictationAlternative.h&gt;
</span><span class="cx"> #import &lt;WebCore/GraphicsLayer.h&gt;
</span><ins>+#import &lt;WebCore/RuntimeApplicationChecks.h&gt;
</ins><span class="cx"> #import &lt;WebCore/SharedBuffer.h&gt;
</span><span class="cx"> #import &lt;WebCore/TextAlternativeWithRange.h&gt;
</span><span class="cx"> #import &lt;WebCore/UserAgent.h&gt;
</span><span class="lines">@@ -60,15 +61,23 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-static bool shouldUseLegacyImplicitRubberBandControl()
</del><ins>+static inline bool expectsLegacyImplicitRubberBandControl()
</ins><span class="cx"> {
</span><del>-    static bool linkedAgainstExecutableExpectingImplicitRubberBandControl = NSVersionOfLinkTimeLibrary(&quot;WebKit2&quot;) &lt; 0x021A0200 /* 538.2.0 */;
-    return linkedAgainstExecutableExpectingImplicitRubberBandControl;
</del><ins>+    if (applicationIsSafari()) {
+        const int32_t firstVersionOfSafariNotExpectingImplicitRubberBandControl = 0x021A0F00; // 538.15.0
+        bool linkedAgainstSafariExpectingImplicitRubberBandControl = NSVersionOfLinkTimeLibrary(&quot;Safari&quot;) &lt; firstVersionOfSafariNotExpectingImplicitRubberBandControl;
+        return linkedAgainstSafariExpectingImplicitRubberBandControl;
+    }
+
+    const int32_t firstVersionOfWebKit2WithNoImplicitRubberBandControl = 0x021A0200; // 538.2.0
+    int32_t linkedWebKit2Version = NSVersionOfLinkTimeLibrary(&quot;WebKit2&quot;);
+    return linkedWebKit2Version != -1 &amp;&amp; linkedWebKit2Version &lt; firstVersionOfWebKit2WithNoImplicitRubberBandControl;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::platformInitialize()
</span><span class="cx"> {
</span><del>-    m_useLegacyImplicitRubberBandControl = shouldUseLegacyImplicitRubberBandControl();
</del><ins>+    static bool clientExpectsLegacyImplicitRubberBandControl = expectsLegacyImplicitRubberBandControl();
+    setShouldUseImplicitRubberBandControl(clientExpectsLegacyImplicitRubberBandControl);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static String userVisibleWebKitVersionString()
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (163042 => 163043)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2014-01-29 22:46:59 UTC (rev 163042)
+++ trunk/Tools/ChangeLog        2014-01-29 23:06:45 UTC (rev 163043)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-01-29  Tim Horton  &lt;timothy_horton@apple.com&gt;
+
+        WebKit2 View Gestures (Swipe): Update rubberBandsAt{Left,Right} when WebKit swipe is enabled
+        https://bugs.webkit.org/show_bug.cgi?id=127855
+        &lt;rdar://problem/15933878&gt;
+
+        Reviewed by Anders Carlsson.
+
+        * MiniBrowser/mac/WK2BrowserWindowController.m:
+        (-[WK2BrowserWindowController awakeFromNib]):
+        Enable swipe in MiniBrowser for testing purposes.
+
</ins><span class="cx"> 2014-01-29  Daniel Bates  &lt;dabates@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix JSONP requests made by the WebKit Bot Watcher's Dashboard following &lt;http://trac.webkit.org/changeset/163034&gt;
</span></span></pre></div>
<a id="trunkToolsMiniBrowsermacWK2BrowserWindowControllerm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m (163042 => 163043)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m        2014-01-29 22:46:59 UTC (rev 163042)
+++ trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m        2014-01-29 23:06:45 UTC (rev 163043)
</span><span class="lines">@@ -519,6 +519,7 @@
</span><span class="cx">     _webView = [[WKView alloc] initWithFrame:[containerView bounds] processGroup:_processGroup browsingContextGroup:_browsingContextGroup];
</span><span class="cx"> 
</span><span class="cx">     _webView.allowsMagnification = YES;
</span><ins>+    _webView.allowsBackForwardNavigationGestures = YES;
</ins><span class="cx"> 
</span><span class="cx">     [_webView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
</span><span class="cx">     [containerView addSubview:_webView];
</span></span></pre>
</div>
</div>

</body>
</html>