| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 1543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1554 updatePageDefinedViewportConstraints(mainFrameImpl()->frame()->document()->v
iewportDescription()); | 1554 updatePageDefinedViewportConstraints(mainFrameImpl()->frame()->document()->v
iewportDescription()); |
| 1555 updateMainFrameLayoutSize(); | 1555 updateMainFrameLayoutSize(); |
| 1556 | 1556 |
| 1557 WebDevToolsAgentPrivate* agentPrivate = devToolsAgentPrivate(); | 1557 WebDevToolsAgentPrivate* agentPrivate = devToolsAgentPrivate(); |
| 1558 if (agentPrivate) | 1558 if (agentPrivate) |
| 1559 agentPrivate->webViewResized(newSize); | 1559 agentPrivate->webViewResized(newSize); |
| 1560 WebFrameImpl* webFrame = mainFrameImpl(); | 1560 WebFrameImpl* webFrame = mainFrameImpl(); |
| 1561 if (webFrame->frameView()) { | 1561 if (webFrame->frameView()) { |
| 1562 webFrame->frameView()->resize(m_size); | 1562 webFrame->frameView()->resize(m_size); |
| 1563 if (page()->settings().pinchVirtualViewportEnabled()) | 1563 if (page()->settings().pinchVirtualViewportEnabled()) |
| 1564 page()->frameHost().pinchViewport().setViewportSize(m_size); | 1564 page()->frameHost().pinchViewport().setSize(m_size); |
| 1565 } | 1565 } |
| 1566 | 1566 |
| 1567 if (settings()->viewportEnabled() && !m_fixedLayoutSizeLock) { | 1567 if (settings()->viewportEnabled() && !m_fixedLayoutSizeLock) { |
| 1568 // Relayout immediately to recalculate the minimum scale limit. | 1568 // Relayout immediately to recalculate the minimum scale limit. |
| 1569 if (view->needsLayout()) | 1569 if (view->needsLayout()) |
| 1570 view->layout(); | 1570 view->layout(); |
| 1571 | 1571 |
| 1572 if (shouldAnchorAndRescaleViewport) { | 1572 if (shouldAnchorAndRescaleViewport) { |
| 1573 float viewportWidthRatio = static_cast<float>(newSize.width) / oldSi
ze.width; | 1573 float viewportWidthRatio = static_cast<float>(newSize.width) / oldSi
ze.width; |
| 1574 float contentsWidthRatio = static_cast<float>(contentsSize().width()
) / oldContentsWidth; | 1574 float contentsWidthRatio = static_cast<float>(contentsSize().width()
) / oldContentsWidth; |
| (...skipping 2054 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3629 } | 3629 } |
| 3630 | 3630 |
| 3631 void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer) | 3631 void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer) |
| 3632 { | 3632 { |
| 3633 bool pinchVirtualViewportEnabled = page()->settings().pinchVirtualViewportEn
abled(); | 3633 bool pinchVirtualViewportEnabled = page()->settings().pinchVirtualViewportEn
abled(); |
| 3634 suppressInvalidations(true); | 3634 suppressInvalidations(true); |
| 3635 | 3635 |
| 3636 if (pinchVirtualViewportEnabled) { | 3636 if (pinchVirtualViewportEnabled) { |
| 3637 PinchViewport& pinchViewport = page()->frameHost().pinchViewport(); | 3637 PinchViewport& pinchViewport = page()->frameHost().pinchViewport(); |
| 3638 pinchViewport.attachToLayerTree(layer, graphicsLayerFactory()); | 3638 pinchViewport.attachToLayerTree(layer, graphicsLayerFactory()); |
| 3639 pinchViewport.setViewportSize(mainFrameImpl()->frame()->view()->frameRec
t().size()); | 3639 pinchViewport.setSize(mainFrameImpl()->frame()->view()->frameRect().size
()); |
| 3640 if (layer) { | 3640 if (layer) { |
| 3641 m_rootGraphicsLayer = pinchViewport.rootGraphicsLayer(); | 3641 m_rootGraphicsLayer = pinchViewport.rootGraphicsLayer(); |
| 3642 m_rootLayer = pinchViewport.rootGraphicsLayer()->platformLayer(); | 3642 m_rootLayer = pinchViewport.rootGraphicsLayer()->platformLayer(); |
| 3643 m_rootTransformLayer = 0; | 3643 m_rootTransformLayer = 0; |
| 3644 } else { | 3644 } else { |
| 3645 m_rootGraphicsLayer = 0; | 3645 m_rootGraphicsLayer = 0; |
| 3646 m_rootLayer = 0; | 3646 m_rootLayer = 0; |
| 3647 m_rootTransformLayer = 0; | 3647 m_rootTransformLayer = 0; |
| 3648 } | 3648 } |
| 3649 } else { | 3649 } else { |
| 3650 m_rootGraphicsLayer = layer; | 3650 m_rootGraphicsLayer = layer; |
| 3651 m_rootLayer = layer ? layer->platformLayer() : 0; | 3651 m_rootLayer = layer ? layer->platformLayer() : 0; |
| 3652 m_rootTransformLayer = 0; | 3652 m_rootTransformLayer = 0; |
| 3653 } | 3653 } |
| 3654 | 3654 |
| 3655 setIsAcceleratedCompositingActive(layer); | 3655 setIsAcceleratedCompositingActive(layer); |
| 3656 | 3656 |
| 3657 updateRootLayerTransform(); | 3657 updateRootLayerTransform(); |
| 3658 | 3658 |
| 3659 if (m_layerTreeView) { | 3659 if (m_layerTreeView) { |
| 3660 if (m_rootLayer) { | 3660 if (m_rootLayer) { |
| 3661 m_layerTreeView->setRootLayer(*m_rootLayer); | 3661 m_layerTreeView->setRootLayer(*m_rootLayer); |
| 3662 // We register viewport layers here since there may not be a layer | 3662 // We register viewport layers here since there may not be a layer |
| 3663 // tree view prior to this point. | 3663 // tree view prior to this point. |
| 3664 if (pinchVirtualViewportEnabled) { | 3664 if (pinchVirtualViewportEnabled) { |
| 3665 page()->frameHost().pinchViewport().registerViewportLayersWithTr
eeView(m_layerTreeView); | 3665 page()->frameHost().pinchViewport().registerLayersWithTreeView(m
_layerTreeView); |
| 3666 } else { | 3666 } else { |
| 3667 GraphicsLayer* rootScrollLayer = compositor()->scrollLayer(); | 3667 GraphicsLayer* rootScrollLayer = compositor()->scrollLayer(); |
| 3668 ASSERT(rootScrollLayer); | 3668 ASSERT(rootScrollLayer); |
| 3669 WebLayer* pageScaleLayer = rootScrollLayer->parent() ? rootScrol
lLayer->parent()->platformLayer() : 0; | 3669 WebLayer* pageScaleLayer = rootScrollLayer->parent() ? rootScrol
lLayer->parent()->platformLayer() : 0; |
| 3670 m_layerTreeView->registerViewportLayers(pageScaleLayer, rootScro
llLayer->platformLayer(), 0); | 3670 m_layerTreeView->registerViewportLayers(pageScaleLayer, rootScro
llLayer->platformLayer(), 0); |
| 3671 } | 3671 } |
| 3672 } else { | 3672 } else { |
| 3673 m_layerTreeView->clearRootLayer(); | 3673 m_layerTreeView->clearRootLayer(); |
| 3674 if (pinchVirtualViewportEnabled) | 3674 if (pinchVirtualViewportEnabled) |
| 3675 page()->frameHost().pinchViewport().clearViewportLayersForTreeVi
ew(m_layerTreeView); | 3675 page()->frameHost().pinchViewport().clearLayersForTreeView(m_lay
erTreeView); |
| 3676 else | 3676 else |
| 3677 m_layerTreeView->clearViewportLayers(); | 3677 m_layerTreeView->clearViewportLayers(); |
| 3678 } | 3678 } |
| 3679 } | 3679 } |
| 3680 | 3680 |
| 3681 suppressInvalidations(false); | 3681 suppressInvalidations(false); |
| 3682 } | 3682 } |
| 3683 | 3683 |
| 3684 void WebViewImpl::scheduleCompositingLayerSync() | 3684 void WebViewImpl::scheduleCompositingLayerSync() |
| 3685 { | 3685 { |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3821 frameView->setInProgrammaticScroll(programmaticScroll); | 3821 frameView->setInProgrammaticScroll(programmaticScroll); |
| 3822 frameView->notifyScrollPositionChanged(scrollPosition); | 3822 frameView->notifyScrollPositionChanged(scrollPosition); |
| 3823 frameView->setInProgrammaticScroll(oldProgrammaticScroll); | 3823 frameView->setInProgrammaticScroll(oldProgrammaticScroll); |
| 3824 } | 3824 } |
| 3825 | 3825 |
| 3826 void WebViewImpl::applyScrollAndScale(const WebSize& scrollDelta, float pageScal
eDelta) | 3826 void WebViewImpl::applyScrollAndScale(const WebSize& scrollDelta, float pageScal
eDelta) |
| 3827 { | 3827 { |
| 3828 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) | 3828 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) |
| 3829 return; | 3829 return; |
| 3830 | 3830 |
| 3831 // With virtual viewport we need only set the scale (see TODO below). |
| 3832 if (page()->settings().pinchVirtualViewportEnabled()) { |
| 3833 WebSize scrollOffset = mainFrame()->scrollOffset(); |
| 3834 WebPoint scrollPoint(scrollOffset.width, scrollOffset.height); |
| 3835 setPageScaleFactor(pageScaleFactor() * pageScaleDelta, scrollPoint); |
| 3836 m_doubleTapZoomPending = false; |
| 3837 return; |
| 3838 } |
| 3839 |
| 3840 // TODO(bokan): Old pinch path only - virtual viewport pinch scrolls are aut
omatically updated via GraphicsLayer::DidScroll. |
| 3841 // this should be removed once old pinch is removed. |
| 3831 if (pageScaleDelta == 1) { | 3842 if (pageScaleDelta == 1) { |
| 3832 TRACE_EVENT_INSTANT2("webkit", "WebViewImpl::applyScrollAndScale::scroll
By", "x", scrollDelta.width, "y", scrollDelta.height); | 3843 TRACE_EVENT_INSTANT2("webkit", "WebViewImpl::applyScrollAndScale::scroll
By", "x", scrollDelta.width, "y", scrollDelta.height); |
| 3833 WebSize webScrollOffset = mainFrame()->scrollOffset(); | 3844 WebSize webScrollOffset = mainFrame()->scrollOffset(); |
| 3834 IntPoint scrollOffset(webScrollOffset.width + scrollDelta.width, webScro
llOffset.height + scrollDelta.height); | 3845 IntPoint scrollOffset(webScrollOffset.width + scrollDelta.width, webScro
llOffset.height + scrollDelta.height); |
| 3835 updateMainFrameScrollPosition(scrollOffset, false); | 3846 updateMainFrameScrollPosition(scrollOffset, false); |
| 3836 } else { | 3847 } else { |
| 3837 // The page scale changed, so apply a scale and scroll in a single | 3848 // The page scale changed, so apply a scale and scroll in a single |
| 3838 // operation. | 3849 // operation. |
| 3839 WebSize scrollOffset = mainFrame()->scrollOffset(); | 3850 WebSize scrollOffset = mainFrame()->scrollOffset(); |
| 3840 scrollOffset.width += scrollDelta.width; | 3851 scrollOffset.width += scrollDelta.width; |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3997 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi
nedConstraints(); | 4008 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi
nedConstraints(); |
| 3998 | 4009 |
| 3999 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) | 4010 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) |
| 4000 return false; | 4011 return false; |
| 4001 | 4012 |
| 4002 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width | 4013 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width |
| 4003 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); | 4014 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); |
| 4004 } | 4015 } |
| 4005 | 4016 |
| 4006 } // namespace blink | 4017 } // namespace blink |
| OLD | NEW |