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 |