diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog
index 3e586af..5b74e44 100644
--- a/Source/WebKit2/ChangeLog
+++ b/Source/WebKit2/ChangeLog
@@ -1,3 +1,32 @@
+2014-01-09  Tim Horton  <timothy_horton@apple.com>
+
+        WebKit2 View Gestures: Support plugins that take over the page scale gesture
+        https://bugs.webkit.org/show_bug.cgi?id=126399
+        <rdar://problem/15738928>
+
+        Reviewed by Sam Weinig.
+
+        Teach ViewGestureController how to handle WebFrame::handlesPageScaleGesture=true,
+        which is used so that PDFPlugin can deal with magnification itself.
+
+        * UIProcess/mac/ViewGestureController.cpp:
+        (WebKit::ViewGestureController::ViewGestureController):
+        (WebKit::ViewGestureController::didCollectGeometryForMagnificationGesture):
+        (WebKit::ViewGestureController::handleMagnificationGesture):
+        (WebKit::ViewGestureController::endMagnificationGesture):
+        (WebKit::ViewGestureController::didCollectGeometryForSmartMagnificationGesture):
+        If the WebFrame is going to handle the page scale gesture itself (which currently
+        simply means that it is a main-frame PDFPlugin), send the magnification information
+        straight through to it. Also, don't provide smart-zoom in this case, since there
+        is currently no way to collect geometry information from the plugin.
+
+        * UIProcess/mac/ViewGestureController.h:
+        * UIProcess/mac/ViewGestureController.messages.in:
+        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
+        (WebKit::ViewGestureGeometryCollector::collectGeometryForMagnificationGesture):
+        (WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):
+        Retrieve WebFrame::handlesPageScaleGesture and return it to the UI process.
+
 2014-01-09  Dan Bernstein  <mitz@apple.com>
 
         [Cocoa] Promote WKBackForwardList{,Item}.h to public
diff --git a/Source/WebKit2/UIProcess/mac/ViewGestureController.cpp b/Source/WebKit2/UIProcess/mac/ViewGestureController.cpp
index b8523bd..7cefcc1 100644
--- a/Source/WebKit2/UIProcess/mac/ViewGestureController.cpp
+++ b/Source/WebKit2/UIProcess/mac/ViewGestureController.cpp
@@ -51,6 +51,7 @@
     : m_webPageProxy(webPageProxy)
     , m_activeGestureType(ViewGestureType::None)
     , m_visibleContentRectIsValid(false)
+    , m_frameHandlesMagnificationGesture(false)
 {
     m_webPageProxy.process().addMessageReceiver(Messages::ViewGestureController::messageReceiverName(), m_webPageProxy.pageID(), *this);
 }
@@ -88,11 +89,12 @@
     return scaledMagnificationOrigin;
 }
 
-void ViewGestureController::didCollectGeometryForMagnificationGesture(FloatRect visibleContentRect)
+void ViewGestureController::didCollectGeometryForMagnificationGesture(FloatRect visibleContentRect, bool frameHandlesMagnificationGesture)
 {
     m_activeGestureType = ViewGestureType::Magnification;
     m_visibleContentRect = visibleContentRect;
     m_visibleContentRectIsValid = true;
+    m_frameHandlesMagnificationGesture = frameHandlesMagnificationGesture;
 }
 
 void ViewGestureController::handleMagnificationGesture(double scale, FloatPoint origin)
@@ -111,6 +113,8 @@
     if (!m_visibleContentRectIsValid)
         return;
 
+    m_activeGestureType = ViewGestureType::Magnification;
+
     double scaleWithResistance = resistanceForDelta(scale, m_magnification) * scale;
 
     m_magnification += m_magnification * scaleWithResistance;
@@ -118,9 +122,10 @@
 
     m_magnificationOrigin = origin;
 
-    m_webPageProxy.drawingArea()->adjustTransientZoom(m_magnification, scaledMagnificationOrigin(origin, m_magnification));
-
-    m_activeGestureType = ViewGestureType::Magnification;
+    if (m_frameHandlesMagnificationGesture)
+        m_webPageProxy.scalePage(m_magnification, roundedIntPoint(origin));
+    else
+        m_webPageProxy.drawingArea()->adjustTransientZoom(m_magnification, scaledMagnificationOrigin(origin, m_magnification));
 }
 
 void ViewGestureController::endMagnificationGesture()
@@ -128,7 +133,11 @@
     ASSERT(m_activeGestureType == ViewGestureType::Magnification);
 
     double newMagnification = std::min(std::max(m_magnification, minMagnification), maxMagnification);
-    m_webPageProxy.drawingArea()->commitTransientZoom(newMagnification, scaledMagnificationOrigin(m_magnificationOrigin, newMagnification));
+
+    if (m_frameHandlesMagnificationGesture)
+        m_webPageProxy.scalePage(newMagnification, roundedIntPoint(m_magnificationOrigin));
+    else
+        m_webPageProxy.drawingArea()->commitTransientZoom(newMagnification, scaledMagnificationOrigin(m_magnificationOrigin, newMagnification));
 }
 
 void ViewGestureController::handleSmartMagnificationGesture(FloatPoint origin)
@@ -144,8 +153,11 @@
     return std::max(fabs(a.x() - b.x()), std::max(fabs(a.y() - b.y()), std::max(fabs(a.width() - b.width()), fabs(a.height() - b.height()))));
 }
 
-void ViewGestureController::didCollectGeometryForSmartMagnificationGesture(FloatPoint origin, FloatRect renderRect, FloatRect visibleContentRect, bool isReplacedElement)
+void ViewGestureController::didCollectGeometryForSmartMagnificationGesture(FloatPoint origin, FloatRect renderRect, FloatRect visibleContentRect, bool isReplacedElement, bool frameHandlesMagnificationGesture)
 {
+    if (frameHandlesMagnificationGesture)
+        return;
+
     double currentScaleFactor = m_webPageProxy.pageScaleFactor();
 
     FloatRect unscaledTargetRect = renderRect;
diff --git a/Source/WebKit2/UIProcess/mac/ViewGestureController.h b/Source/WebKit2/UIProcess/mac/ViewGestureController.h
index 06a8c1b..0b83914 100644
--- a/Source/WebKit2/UIProcess/mac/ViewGestureController.h
+++ b/Source/WebKit2/UIProcess/mac/ViewGestureController.h
@@ -57,8 +57,8 @@
     virtual void didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&) OVERRIDE;
 
     // Message handlers.
-    void didCollectGeometryForMagnificationGesture(WebCore::FloatRect visibleContentBounds);
-    void didCollectGeometryForSmartMagnificationGesture(WebCore::FloatPoint origin, WebCore::FloatRect renderRect, WebCore::FloatRect visibleContentBounds, bool isReplacedElement);
+    void didCollectGeometryForMagnificationGesture(WebCore::FloatRect visibleContentBounds, bool frameHandlesMagnificationGesture);
+    void didCollectGeometryForSmartMagnificationGesture(WebCore::FloatPoint origin, WebCore::FloatRect renderRect, WebCore::FloatRect visibleContentBounds, bool isReplacedElement, bool frameHandlesMagnificationGesture);
 
     void endMagnificationGesture();
     WebCore::FloatPoint scaledMagnificationOrigin(WebCore::FloatPoint origin, double scale);
@@ -74,6 +74,7 @@
 
     WebCore::FloatRect m_visibleContentRect;
     bool m_visibleContentRectIsValid;
+    bool m_frameHandlesMagnificationGesture;
 };
 
 } // namespace WebKit
diff --git a/Source/WebKit2/UIProcess/mac/ViewGestureController.messages.in b/Source/WebKit2/UIProcess/mac/ViewGestureController.messages.in
index f77b6b3..0b399ef 100644
--- a/Source/WebKit2/UIProcess/mac/ViewGestureController.messages.in
+++ b/Source/WebKit2/UIProcess/mac/ViewGestureController.messages.in
@@ -21,6 +21,6 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 messages -> ViewGestureController {
-    DidCollectGeometryForMagnificationGesture(WebCore::FloatRect visibleContentBounds)
-    DidCollectGeometryForSmartMagnificationGesture(WebCore::FloatPoint origin, WebCore::FloatRect renderRect, WebCore::FloatRect visibleContentBounds, bool isReplacedElement)
+    DidCollectGeometryForMagnificationGesture(WebCore::FloatRect visibleContentBounds, bool frameHandlesMagnificationGesture)
+    DidCollectGeometryForSmartMagnificationGesture(WebCore::FloatPoint origin, WebCore::FloatRect renderRect, WebCore::FloatRect visibleContentBounds, bool isReplacedElement, bool frameHandlesMagnificationGesture)
 }
diff --git a/Source/WebKit2/WebProcess/WebPage/ViewGestureGeometryCollector.cpp b/Source/WebKit2/WebProcess/WebPage/ViewGestureGeometryCollector.cpp
index f48ead6..4119a8c 100644
--- a/Source/WebKit2/WebProcess/WebPage/ViewGestureGeometryCollector.cpp
+++ b/Source/WebKit2/WebProcess/WebPage/ViewGestureGeometryCollector.cpp
@@ -29,6 +29,7 @@
 #include "ViewGestureControllerMessages.h"
 #include "ViewGestureGeometryCollectorMessages.h"
 #include "WebCoreArgumentCoders.h"
+#include "WebFrame.h"
 #include "WebPage.h"
 #include "WebProcess.h"
 #include <WebCore/FrameView.h>
@@ -53,12 +54,14 @@
 void ViewGestureGeometryCollector::collectGeometryForMagnificationGesture()
 {
     FloatRect visibleContentRect = m_webPage.mainFrameView()->visibleContentRect(ScrollableArea::IncludeScrollbars);
-    m_webPage.send(Messages::ViewGestureController::DidCollectGeometryForMagnificationGesture(visibleContentRect));
+    bool frameHandlesMagnificationGesture = m_webPage.mainWebFrame()->handlesPageScaleGesture();
+    m_webPage.send(Messages::ViewGestureController::DidCollectGeometryForMagnificationGesture(visibleContentRect, frameHandlesMagnificationGesture));
 }
 
 void ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture(FloatPoint origin)
 {
     FloatRect visibleContentRect = m_webPage.mainFrameView()->visibleContentRect(ScrollableArea::IncludeScrollbars);
+    bool frameHandlesMagnificationGesture = m_webPage.mainWebFrame()->handlesPageScaleGesture();
 
     FloatPoint scrolledOrigin = origin;
     scrolledOrigin.moveBy(m_webPage.mainFrameView()->scrollPosition());
@@ -70,7 +73,7 @@
     if (hitTestResult.innerNode()) {
         bool isReplaced;
         FloatRect renderRect = hitTestResult.innerNode()->renderRect(&isReplaced);
-        m_webPage.send(Messages::ViewGestureController::DidCollectGeometryForSmartMagnificationGesture(origin, renderRect, visibleContentRect, isReplaced));
+        m_webPage.send(Messages::ViewGestureController::DidCollectGeometryForSmartMagnificationGesture(origin, renderRect, visibleContentRect, isReplaced, frameHandlesMagnificationGesture));
     }
 }
 
