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 1641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1652 | 1652 |
1653 m_size = newSize; | 1653 m_size = newSize; |
1654 | 1654 |
1655 bool shouldAnchorAndRescaleViewport = settings()->viewportEnabled() && oldSi ze.width && oldContentsWidth && newSize.width != oldSize.width; | 1655 bool shouldAnchorAndRescaleViewport = settings()->viewportEnabled() && oldSi ze.width && oldContentsWidth && newSize.width != oldSize.width; |
1656 ViewportAnchor viewportAnchor(mainFrameImpl()->frame()->eventHandler()); | 1656 ViewportAnchor viewportAnchor(mainFrameImpl()->frame()->eventHandler()); |
1657 if (shouldAnchorAndRescaleViewport) { | 1657 if (shouldAnchorAndRescaleViewport) { |
1658 viewportAnchor.setAnchor(view->visibleContentRect(), | 1658 viewportAnchor.setAnchor(view->visibleContentRect(), |
1659 FloatSize(viewportAnchorXCoord, viewportAnchorY Coord)); | 1659 FloatSize(viewportAnchorXCoord, viewportAnchorY Coord)); |
1660 } | 1660 } |
1661 | 1661 |
1662 // If we're on a desktop style platform, we want to keep the page's layout | |
1663 // size fixed to the size of the WebViewImpl. Desktop-style is indicated | |
1664 // by layoutFallbackWidth == 0 | |
1665 if (page() && !page()->settings().layoutFallbackWidth()) | |
kenneth.r.christiansen
2013/09/05 07:54:24
With the move to using @viewport rules internally,
| |
1666 view->setLayoutSize(m_size); | |
1667 | |
1662 // Set the fixed layout size from the viewport constraints before resizing. | 1668 // Set the fixed layout size from the viewport constraints before resizing. |
1663 updatePageDefinedPageScaleConstraints(mainFrameImpl()->frame()->document()-> viewportArguments()); | 1669 updatePageDefinedPageScaleConstraints(mainFrameImpl()->frame()->document()-> viewportArguments()); |
1664 | 1670 |
1665 WebDevToolsAgentPrivate* agentPrivate = devToolsAgentPrivate(); | 1671 WebDevToolsAgentPrivate* agentPrivate = devToolsAgentPrivate(); |
1666 if (agentPrivate) | 1672 if (agentPrivate) |
1667 agentPrivate->webViewResized(newSize); | 1673 agentPrivate->webViewResized(newSize); |
1668 if (!agentPrivate || !agentPrivate->metricsOverridden()) { | 1674 if (!agentPrivate || !agentPrivate->metricsOverridden()) { |
1669 WebFrameImpl* webFrame = mainFrameImpl(); | 1675 WebFrameImpl* webFrame = mainFrameImpl(); |
1670 if (webFrame->frameView()) { | 1676 if (webFrame->frameView()) { |
1671 webFrame->frameView()->resize(m_size); | 1677 webFrame->frameView()->resize(m_size); |
(...skipping 1189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2861 { | 2867 { |
2862 if (!page()) | 2868 if (!page()) |
2863 return; | 2869 return; |
2864 | 2870 |
2865 page()->setDeviceScaleFactor(scaleFactor); | 2871 page()->setDeviceScaleFactor(scaleFactor); |
2866 | 2872 |
2867 if (m_layerTreeView) | 2873 if (m_layerTreeView) |
2868 m_layerTreeView->setDeviceScaleFactor(scaleFactor); | 2874 m_layerTreeView->setDeviceScaleFactor(scaleFactor); |
2869 } | 2875 } |
2870 | 2876 |
2871 bool WebViewImpl::isFixedLayoutModeEnabled() const | |
2872 { | |
2873 if (!page()) | |
2874 return false; | |
2875 | |
2876 Frame* frame = page()->mainFrame(); | |
2877 if (!frame || !frame->view()) | |
2878 return false; | |
2879 | |
2880 return frame->view()->useFixedLayout(); | |
2881 } | |
2882 | |
2883 void WebViewImpl::enableFixedLayoutMode(bool enable) | 2877 void WebViewImpl::enableFixedLayoutMode(bool enable) |
2884 { | 2878 { |
2885 if (!page()) | 2879 if (!page()) |
2886 return; | 2880 return; |
2887 | 2881 |
2888 Frame* frame = page()->mainFrame(); | 2882 Frame* frame = page()->mainFrame(); |
2889 if (!frame || !frame->view()) | 2883 if (!frame || !frame->view()) |
2890 return; | 2884 return; |
2891 | 2885 |
2892 frame->view()->setUseFixedLayout(enable); | 2886 page()->settings().setLayoutFallbackWidth(enable ? 980 : 0); |
kenneth.r.christiansen
2013/09/05 08:03:07
Hmm... I hope noone are overriding it then. This i
bokan
2013/09/05 20:03:36
Yes, this is a hack to keep the tests working. I'l
| |
2893 | 2887 |
2894 if (m_isAcceleratedCompositingActive) | 2888 if (m_isAcceleratedCompositingActive) |
2895 updateLayerTreeViewport(); | 2889 updateLayerTreeViewport(); |
2896 } | 2890 } |
2897 | 2891 |
2898 | 2892 |
2899 void WebViewImpl::enableAutoResizeMode(const WebSize& minSize, const WebSize& ma xSize) | 2893 void WebViewImpl::enableAutoResizeMode(const WebSize& minSize, const WebSize& ma xSize) |
2900 { | 2894 { |
2901 m_shouldAutoResize = true; | 2895 m_shouldAutoResize = true; |
2902 m_minAutoSize = minSize; | 2896 m_minAutoSize = minSize; |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2982 updateLayerTreeViewport(); | 2976 updateLayerTreeViewport(); |
2983 | 2977 |
2984 // Relayout immediately to avoid violating the rule that needsLayout() | 2978 // Relayout immediately to avoid violating the rule that needsLayout() |
2985 // isn't set at the end of a layout. | 2979 // isn't set at the end of a layout. |
2986 if (view->needsLayout()) | 2980 if (view->needsLayout()) |
2987 view->layout(); | 2981 view->layout(); |
2988 } | 2982 } |
2989 | 2983 |
2990 void WebViewImpl::updatePageDefinedPageScaleConstraints(const ViewportArguments& arguments) | 2984 void WebViewImpl::updatePageDefinedPageScaleConstraints(const ViewportArguments& arguments) |
2991 { | 2985 { |
2992 if (!settings()->viewportEnabled() || !isFixedLayoutModeEnabled() || !page() || !m_size.width || !m_size.height) | 2986 if (!settings()->viewportEnabled() || !page() || !m_size.width || !m_size.he ight) |
2993 return; | 2987 return; |
2994 | 2988 |
2995 ViewportArguments adjustedArguments = arguments; | 2989 ViewportArguments adjustedArguments = arguments; |
2996 if (settingsImpl()->viewportMetaLayoutSizeQuirk() && adjustedArguments.type == ViewportArguments::ViewportMeta) | 2990 if (settingsImpl()->viewportMetaLayoutSizeQuirk() && adjustedArguments.type == ViewportArguments::ViewportMeta) |
2997 adjustedArguments.type = ViewportArguments::ViewportMetaLayoutSizeQuirk; | 2991 adjustedArguments.type = ViewportArguments::ViewportMetaLayoutSizeQuirk; |
2998 m_pageScaleConstraintsSet.updatePageDefinedConstraints(adjustedArguments, m_ size, page()->settings().layoutFallbackWidth()); | 2992 m_pageScaleConstraintsSet.updatePageDefinedConstraints(adjustedArguments, m_ size, page()->settings().layoutFallbackWidth()); |
2999 | 2993 |
3000 if (settingsImpl()->supportDeprecatedTargetDensityDPI()) | 2994 if (settingsImpl()->supportDeprecatedTargetDensityDPI()) |
3001 m_pageScaleConstraintsSet.adjustPageDefinedConstraintsForAndroidWebView( adjustedArguments, m_size, page()->settings().layoutFallbackWidth(), deviceScale Factor(), page()->settings().useWideViewport(), page()->settings().loadWithOverv iewMode()); | 2995 m_pageScaleConstraintsSet.adjustPageDefinedConstraintsForAndroidWebView( adjustedArguments, m_size, page()->settings().layoutFallbackWidth(), deviceScale Factor(), page()->settings().useWideViewport(), page()->settings().loadWithOverv iewMode()); |
3002 | 2996 |
3003 WebSize layoutSize = flooredIntSize(m_pageScaleConstraintsSet.pageDefinedCon straints().layoutSize); | 2997 WebSize layoutSize = flooredIntSize(m_pageScaleConstraintsSet.pageDefinedCon straints().layoutSize); |
3004 | 2998 |
3005 if (page()->settings().textAutosizingEnabled() && page()->mainFrame() && lay outSize.width != fixedLayoutSize().width) | 2999 if (page()->settings().textAutosizingEnabled() && page()->mainFrame() && lay outSize.width != page()->mainFrame()->view()->layoutSize().width()) |
3006 page()->mainFrame()->document()->textAutosizer()->recalculateMultipliers (); | 3000 page()->mainFrame()->document()->textAutosizer()->recalculateMultipliers (); |
3007 | 3001 |
3008 setFixedLayoutSize(layoutSize); | 3002 setLayoutSize(layoutSize); |
3009 } | 3003 } |
3010 | 3004 |
3011 IntSize WebViewImpl::contentsSize() const | 3005 IntSize WebViewImpl::contentsSize() const |
3012 { | 3006 { |
3013 RenderView* root = page()->mainFrame()->contentRenderer(); | 3007 RenderView* root = page()->mainFrame()->contentRenderer(); |
3014 if (!root) | 3008 if (!root) |
3015 return IntSize(); | 3009 return IntSize(); |
3016 return root->documentRect().size(); | 3010 return root->documentRect().size(); |
3017 } | 3011 } |
3018 | 3012 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3069 page()->mainFrame()->loader()->history()->saveDocumentAndScrollState(); | 3063 page()->mainFrame()->loader()->history()->saveDocumentAndScrollState(); |
3070 page()->mainFrame()->loader()->history()->clearScrollPositionAndViewState(); | 3064 page()->mainFrame()->loader()->history()->clearScrollPositionAndViewState(); |
3071 m_pageScaleConstraintsSet.setNeedsReset(true); | 3065 m_pageScaleConstraintsSet.setNeedsReset(true); |
3072 | 3066 |
3073 // Clobber saved scales and scroll offsets. | 3067 // Clobber saved scales and scroll offsets. |
3074 if (FrameView* view = page()->mainFrame()->document()->view()) | 3068 if (FrameView* view = page()->mainFrame()->document()->view()) |
3075 view->cacheCurrentScrollPosition(); | 3069 view->cacheCurrentScrollPosition(); |
3076 resetSavedScrollAndScaleState(); | 3070 resetSavedScrollAndScaleState(); |
3077 } | 3071 } |
3078 | 3072 |
3079 WebSize WebViewImpl::fixedLayoutSize() const | |
3080 { | |
3081 if (!page()) | |
3082 return WebSize(); | |
3083 | |
3084 Frame* frame = page()->mainFrame(); | |
3085 if (!frame || !frame->view()) | |
3086 return WebSize(); | |
3087 | |
3088 return frame->view()->fixedLayoutSize(); | |
3089 } | |
3090 | |
3091 void WebViewImpl::setFixedLayoutSize(const WebSize& layoutSize) | 3073 void WebViewImpl::setFixedLayoutSize(const WebSize& layoutSize) |
3092 { | 3074 { |
3075 setLayoutSize(layoutSize); | |
3076 } | |
3077 | |
3078 void WebViewImpl::setLayoutSize(const WebSize& layoutSize) | |
3079 { | |
3093 if (!page()) | 3080 if (!page()) |
3094 return; | 3081 return; |
3095 | 3082 |
3096 Frame* frame = page()->mainFrame(); | 3083 Frame* frame = page()->mainFrame(); |
3097 if (!frame || !frame->view()) | 3084 if (!frame || !frame->view()) |
3098 return; | 3085 return; |
3099 | 3086 |
3100 frame->view()->setFixedLayoutSize(layoutSize); | 3087 frame->view()->setLayoutSize(layoutSize); |
3101 } | 3088 } |
3102 | 3089 |
3103 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action, | 3090 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action, |
3104 const WebPoint& location) | 3091 const WebPoint& location) |
3105 { | 3092 { |
3106 HitTestResult result = hitTestResultForWindowPos(location); | 3093 HitTestResult result = hitTestResultForWindowPos(location); |
3107 RefPtr<Node> node = result.innerNonSharedNode(); | 3094 RefPtr<Node> node = result.innerNonSharedNode(); |
3108 if (!isHTMLVideoElement(node.get()) && !node->hasTagName(HTMLNames::audioTag )) | 3095 if (!isHTMLVideoElement(node.get()) && !node->hasTagName(HTMLNames::audioTag )) |
3109 return; | 3096 return; |
3110 | 3097 |
(...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4105 } | 4092 } |
4106 | 4093 |
4107 bool WebViewImpl::shouldDisableDesktopWorkarounds() | 4094 bool WebViewImpl::shouldDisableDesktopWorkarounds() |
4108 { | 4095 { |
4109 ViewportArguments arguments = mainFrameImpl()->frame()->document()->viewport Arguments(); | 4096 ViewportArguments arguments = mainFrameImpl()->frame()->document()->viewport Arguments(); |
4110 return arguments.width == ViewportArguments::ValueDeviceWidth || !arguments. userZoom | 4097 return arguments.width == ViewportArguments::ValueDeviceWidth || !arguments. userZoom |
4111 || (arguments.minZoom == arguments.maxZoom && arguments.minZoom != Viewp ortArguments::ValueAuto); | 4098 || (arguments.minZoom == arguments.maxZoom && arguments.minZoom != Viewp ortArguments::ValueAuto); |
4112 } | 4099 } |
4113 | 4100 |
4114 } // namespace WebKit | 4101 } // namespace WebKit |
OLD | NEW |