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 1651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1662 // Set the fixed layout size from the viewport constraints before resizing. | 1662 // Set the fixed layout size from the viewport constraints before resizing. |
1663 updatePageDefinedPageScaleConstraints(mainFrameImpl()->frame()->document()-> viewportArguments()); | 1663 updatePageDefinedPageScaleConstraints(mainFrameImpl()->frame()->document()-> viewportArguments()); |
1664 | 1664 |
1665 WebDevToolsAgentPrivate* agentPrivate = devToolsAgentPrivate(); | 1665 WebDevToolsAgentPrivate* agentPrivate = devToolsAgentPrivate(); |
1666 if (agentPrivate) | 1666 if (agentPrivate) |
1667 agentPrivate->webViewResized(newSize); | 1667 agentPrivate->webViewResized(newSize); |
1668 if (!agentPrivate || !agentPrivate->metricsOverridden()) { | 1668 if (!agentPrivate || !agentPrivate->metricsOverridden()) { |
1669 WebFrameImpl* webFrame = mainFrameImpl(); | 1669 WebFrameImpl* webFrame = mainFrameImpl(); |
1670 if (webFrame->frameView()) { | 1670 if (webFrame->frameView()) { |
1671 webFrame->frameView()->resize(m_size); | 1671 webFrame->frameView()->resize(m_size); |
1672 | |
aelias_OOO_until_Jul13
2013/09/06 23:11:18
nit: unnecessary newline diff
mkosiba (inactive)
2013/09/10 09:11:31
Done.
| |
1672 if (m_pinchViewports) | 1673 if (m_pinchViewports) |
1673 m_pinchViewports->setViewportSize(m_size); | 1674 m_pinchViewports->setViewportSize(m_size); |
1674 } | 1675 } |
1675 } | 1676 } |
1676 | 1677 |
1677 if (settings()->viewportEnabled()) { | 1678 if (settings()->viewportEnabled()) { |
1678 // Relayout immediately to recalculate the minimum scale limit. | 1679 // Relayout immediately to recalculate the minimum scale limit. |
1679 if (view->needsLayout()) | 1680 if (view->needsLayout()) |
1680 view->layout(); | 1681 view->layout(); |
1681 | 1682 |
1682 if (shouldAnchorAndRescaleViewport) { | 1683 if (shouldAnchorAndRescaleViewport) { |
1683 float viewportWidthRatio = static_cast<float>(newSize.width) / oldSi ze.width; | 1684 float viewportWidthRatio = static_cast<float>(newSize.width) / oldSi ze.width; |
1684 float contentsWidthRatio = static_cast<float>(contentsSize().width() ) / oldContentsWidth; | 1685 float contentsWidthRatio = static_cast<float>(contentsSize().width() ) / oldContentsWidth; |
1685 float scaleMultiplier = viewportWidthRatio / contentsWidthRatio; | 1686 float scaleMultiplier = viewportWidthRatio / contentsWidthRatio; |
1686 | 1687 |
1687 IntSize viewportSize = view->visibleContentRect().size(); | 1688 IntSize viewportSize = view->visibleContentRect().size(); |
1688 if (scaleMultiplier != 1) { | 1689 if (scaleMultiplier != 1 && !fixedLayoutSizeLock()) { |
aelias_OOO_until_Jul13
2013/09/06 23:11:18
I don't think you want the else clause of this cod
mkosiba (inactive)
2013/09/10 09:11:31
Done.
| |
1689 float newPageScaleFactor = oldPageScaleFactor * scaleMultiplier; | 1690 float newPageScaleFactor = oldPageScaleFactor * scaleMultiplier; |
1690 viewportSize.scale(pageScaleFactor() / newPageScaleFactor); | 1691 viewportSize.scale(pageScaleFactor() / newPageScaleFactor); |
1691 IntPoint scrollOffsetAtNewScale = viewportAnchor.computeOrigin(v iewportSize); | 1692 IntPoint scrollOffsetAtNewScale = viewportAnchor.computeOrigin(v iewportSize); |
1692 setPageScaleFactor(newPageScaleFactor, scrollOffsetAtNewScale); | 1693 setPageScaleFactor(newPageScaleFactor, scrollOffsetAtNewScale); |
1693 } else { | 1694 } else { |
1694 IntPoint scrollOffsetAtNewScale = clampOffsetAtScale(viewportAnc hor.computeOrigin(viewportSize), pageScaleFactor()); | 1695 IntPoint scrollOffsetAtNewScale = clampOffsetAtScale(viewportAnc hor.computeOrigin(viewportSize), pageScaleFactor()); |
1695 updateMainFrameScrollPosition(scrollOffsetAtNewScale, false); | 1696 updateMainFrameScrollPosition(scrollOffsetAtNewScale, false); |
1696 } | 1697 } |
1697 } | 1698 } |
1698 } | 1699 } |
(...skipping 1259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2958 | 2959 |
2959 void WebViewImpl::refreshPageScaleFactorAfterLayout() | 2960 void WebViewImpl::refreshPageScaleFactorAfterLayout() |
2960 { | 2961 { |
2961 if (!mainFrame() || !page() || !page()->mainFrame() || !page()->mainFrame()- >view()) | 2962 if (!mainFrame() || !page() || !page()->mainFrame() || !page()->mainFrame()- >view()) |
2962 return; | 2963 return; |
2963 FrameView* view = page()->mainFrame()->view(); | 2964 FrameView* view = page()->mainFrame()->view(); |
2964 | 2965 |
2965 updatePageDefinedPageScaleConstraints(mainFrameImpl()->frame()->document()-> viewportArguments()); | 2966 updatePageDefinedPageScaleConstraints(mainFrameImpl()->frame()->document()-> viewportArguments()); |
2966 m_pageScaleConstraintsSet.computeFinalConstraints(); | 2967 m_pageScaleConstraintsSet.computeFinalConstraints(); |
2967 | 2968 |
2968 if (settings()->viewportEnabled()) { | 2969 if (settings()->viewportEnabled() && !fixedLayoutSizeLock()) { |
2969 int verticalScrollbarWidth = 0; | 2970 int verticalScrollbarWidth = 0; |
2970 if (view->verticalScrollbar() && !view->verticalScrollbar()->isOverlaySc rollbar()) | 2971 if (view->verticalScrollbar() && !view->verticalScrollbar()->isOverlaySc rollbar()) |
2971 verticalScrollbarWidth = view->verticalScrollbar()->width(); | 2972 verticalScrollbarWidth = view->verticalScrollbar()->width(); |
2972 m_pageScaleConstraintsSet.adjustFinalConstraintsToContentsSize(m_size, c ontentsSize(), verticalScrollbarWidth); | 2973 m_pageScaleConstraintsSet.adjustFinalConstraintsToContentsSize(m_size, c ontentsSize(), verticalScrollbarWidth); |
2973 } | 2974 } |
2974 | 2975 |
2975 float newPageScaleFactor = pageScaleFactor(); | 2976 float newPageScaleFactor = pageScaleFactor(); |
2976 if (m_pageScaleConstraintsSet.needsReset() && m_pageScaleConstraintsSet.fina lConstraints().initialScale != -1) { | 2977 if (m_pageScaleConstraintsSet.needsReset() && m_pageScaleConstraintsSet.fina lConstraints().initialScale != -1) { |
2977 newPageScaleFactor = m_pageScaleConstraintsSet.finalConstraints().initia lScale; | 2978 newPageScaleFactor = m_pageScaleConstraintsSet.finalConstraints().initia lScale; |
2978 m_pageScaleConstraintsSet.setNeedsReset(false); | 2979 m_pageScaleConstraintsSet.setNeedsReset(false); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3083 | 3084 |
3084 Frame* frame = page()->mainFrame(); | 3085 Frame* frame = page()->mainFrame(); |
3085 if (!frame || !frame->view()) | 3086 if (!frame || !frame->view()) |
3086 return WebSize(); | 3087 return WebSize(); |
3087 | 3088 |
3088 return frame->view()->fixedLayoutSize(); | 3089 return frame->view()->fixedLayoutSize(); |
3089 } | 3090 } |
3090 | 3091 |
3091 void WebViewImpl::setFixedLayoutSize(const WebSize& layoutSize) | 3092 void WebViewImpl::setFixedLayoutSize(const WebSize& layoutSize) |
3092 { | 3093 { |
3094 if (fixedLayoutSizeLock()) | |
3095 return; | |
3096 | |
3093 if (!page()) | 3097 if (!page()) |
3094 return; | 3098 return; |
3095 | 3099 |
3096 Frame* frame = page()->mainFrame(); | 3100 Frame* frame = page()->mainFrame(); |
3097 if (!frame || !frame->view()) | 3101 if (!frame || !frame->view()) |
3098 return; | 3102 return; |
3099 | 3103 |
3100 frame->view()->setFixedLayoutSize(layoutSize); | 3104 frame->view()->setFixedLayoutSize(layoutSize); |
3101 } | 3105 } |
3102 | 3106 |
3107 void WebViewImpl::setFixedLayoutSizeLock(bool enable) | |
3108 { | |
3109 Frame* frame = page()->mainFrame(); | |
3110 if (!frame || !frame->view()) | |
3111 return; | |
3112 frame->view()->setFixedLayoutSizeLock(enable); | |
3113 } | |
3114 | |
3115 bool WebViewImpl::fixedLayoutSizeLock() const | |
3116 { | |
3117 Frame* frame = page()->mainFrame(); | |
3118 if (!frame || !frame->view()) | |
3119 return false; | |
3120 return frame->view()->fixedLayoutSizeLock(); | |
3121 } | |
3122 | |
3103 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action, | 3123 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action, |
3104 const WebPoint& location) | 3124 const WebPoint& location) |
3105 { | 3125 { |
3106 HitTestResult result = hitTestResultForWindowPos(location); | 3126 HitTestResult result = hitTestResultForWindowPos(location); |
3107 RefPtr<Node> node = result.innerNonSharedNode(); | 3127 RefPtr<Node> node = result.innerNonSharedNode(); |
3108 if (!isHTMLVideoElement(node.get()) && !node->hasTagName(HTMLNames::audioTag )) | 3128 if (!isHTMLVideoElement(node.get()) && !node->hasTagName(HTMLNames::audioTag )) |
3109 return; | 3129 return; |
3110 | 3130 |
3111 RefPtr<HTMLMediaElement> mediaElement = | 3131 RefPtr<HTMLMediaElement> mediaElement = |
3112 static_pointer_cast<HTMLMediaElement>(node); | 3132 static_pointer_cast<HTMLMediaElement>(node); |
(...skipping 992 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4105 } | 4125 } |
4106 | 4126 |
4107 bool WebViewImpl::shouldDisableDesktopWorkarounds() | 4127 bool WebViewImpl::shouldDisableDesktopWorkarounds() |
4108 { | 4128 { |
4109 ViewportArguments arguments = mainFrameImpl()->frame()->document()->viewport Arguments(); | 4129 ViewportArguments arguments = mainFrameImpl()->frame()->document()->viewport Arguments(); |
4110 return arguments.width == ViewportArguments::ValueDeviceWidth || !arguments. userZoom | 4130 return arguments.width == ViewportArguments::ValueDeviceWidth || !arguments. userZoom |
4111 || (arguments.minZoom == arguments.maxZoom && arguments.minZoom != Viewp ortArguments::ValueAuto); | 4131 || (arguments.minZoom == arguments.maxZoom && arguments.minZoom != Viewp ortArguments::ValueAuto); |
4112 } | 4132 } |
4113 | 4133 |
4114 } // namespace WebKit | 4134 } // namespace WebKit |
OLD | NEW |