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 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 , m_autofillClient(0) | 372 , m_autofillClient(0) |
373 , m_permissionClient(0) | 373 , m_permissionClient(0) |
374 , m_spellCheckClient(0) | 374 , m_spellCheckClient(0) |
375 , m_passwordGeneratorClient(0) | 375 , m_passwordGeneratorClient(0) |
376 , m_chromeClientImpl(this) | 376 , m_chromeClientImpl(this) |
377 , m_contextMenuClientImpl(this) | 377 , m_contextMenuClientImpl(this) |
378 , m_dragClientImpl(this) | 378 , m_dragClientImpl(this) |
379 , m_editorClientImpl(this) | 379 , m_editorClientImpl(this) |
380 , m_inspectorClientImpl(this) | 380 , m_inspectorClientImpl(this) |
381 , m_backForwardClientImpl(this) | 381 , m_backForwardClientImpl(this) |
| 382 , m_fixedLayoutSizeLock(false) |
382 , m_shouldAutoResize(false) | 383 , m_shouldAutoResize(false) |
383 , m_observedNewNavigation(false) | 384 , m_observedNewNavigation(false) |
384 #ifndef NDEBUG | 385 #ifndef NDEBUG |
385 , m_newNavigationLoader(0) | 386 , m_newNavigationLoader(0) |
386 #endif | 387 #endif |
387 , m_zoomLevel(0) | 388 , m_zoomLevel(0) |
388 , m_minimumZoomLevel(zoomFactorToZoomLevel(minTextSizeMultiplier)) | 389 , m_minimumZoomLevel(zoomFactorToZoomLevel(minTextSizeMultiplier)) |
389 , m_maximumZoomLevel(zoomFactorToZoomLevel(maxTextSizeMultiplier)) | 390 , m_maximumZoomLevel(zoomFactorToZoomLevel(maxTextSizeMultiplier)) |
390 , m_savedPageScaleFactor(0) | 391 , m_savedPageScaleFactor(0) |
391 , m_doubleTapZoomPageScaleFactor(0) | 392 , m_doubleTapZoomPageScaleFactor(0) |
(...skipping 1274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1666 agentPrivate->webViewResized(newSize); | 1667 agentPrivate->webViewResized(newSize); |
1667 if (!agentPrivate || !agentPrivate->metricsOverridden()) { | 1668 if (!agentPrivate || !agentPrivate->metricsOverridden()) { |
1668 WebFrameImpl* webFrame = mainFrameImpl(); | 1669 WebFrameImpl* webFrame = mainFrameImpl(); |
1669 if (webFrame->frameView()) { | 1670 if (webFrame->frameView()) { |
1670 webFrame->frameView()->resize(m_size); | 1671 webFrame->frameView()->resize(m_size); |
1671 if (m_pinchViewports) | 1672 if (m_pinchViewports) |
1672 m_pinchViewports->setViewportSize(m_size); | 1673 m_pinchViewports->setViewportSize(m_size); |
1673 } | 1674 } |
1674 } | 1675 } |
1675 | 1676 |
1676 if (settings()->viewportEnabled()) { | 1677 if (settings()->viewportEnabled() && !m_fixedLayoutSizeLock) { |
1677 // Relayout immediately to recalculate the minimum scale limit. | 1678 // Relayout immediately to recalculate the minimum scale limit. |
1678 if (view->needsLayout()) | 1679 if (view->needsLayout()) |
1679 view->layout(); | 1680 view->layout(); |
1680 | 1681 |
1681 if (shouldAnchorAndRescaleViewport) { | 1682 if (shouldAnchorAndRescaleViewport) { |
1682 float viewportWidthRatio = static_cast<float>(newSize.width) / oldSi
ze.width; | 1683 float viewportWidthRatio = static_cast<float>(newSize.width) / oldSi
ze.width; |
1683 float contentsWidthRatio = static_cast<float>(contentsSize().width()
) / oldContentsWidth; | 1684 float contentsWidthRatio = static_cast<float>(contentsSize().width()
) / oldContentsWidth; |
1684 float scaleMultiplier = viewportWidthRatio / contentsWidthRatio; | 1685 float scaleMultiplier = viewportWidthRatio / contentsWidthRatio; |
1685 | 1686 |
1686 IntSize viewportSize = view->visibleContentRect().size(); | 1687 IntSize viewportSize = view->visibleContentRect().size(); |
(...skipping 1270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2957 | 2958 |
2958 void WebViewImpl::refreshPageScaleFactorAfterLayout() | 2959 void WebViewImpl::refreshPageScaleFactorAfterLayout() |
2959 { | 2960 { |
2960 if (!mainFrame() || !page() || !page()->mainFrame() || !page()->mainFrame()-
>view()) | 2961 if (!mainFrame() || !page() || !page()->mainFrame() || !page()->mainFrame()-
>view()) |
2961 return; | 2962 return; |
2962 FrameView* view = page()->mainFrame()->view(); | 2963 FrameView* view = page()->mainFrame()->view(); |
2963 | 2964 |
2964 updatePageDefinedPageScaleConstraints(mainFrameImpl()->frame()->document()->
viewportArguments()); | 2965 updatePageDefinedPageScaleConstraints(mainFrameImpl()->frame()->document()->
viewportArguments()); |
2965 m_pageScaleConstraintsSet.computeFinalConstraints(); | 2966 m_pageScaleConstraintsSet.computeFinalConstraints(); |
2966 | 2967 |
2967 if (settings()->viewportEnabled()) { | 2968 if (settings()->viewportEnabled() && !m_fixedLayoutSizeLock) { |
2968 int verticalScrollbarWidth = 0; | 2969 int verticalScrollbarWidth = 0; |
2969 if (view->verticalScrollbar() && !view->verticalScrollbar()->isOverlaySc
rollbar()) | 2970 if (view->verticalScrollbar() && !view->verticalScrollbar()->isOverlaySc
rollbar()) |
2970 verticalScrollbarWidth = view->verticalScrollbar()->width(); | 2971 verticalScrollbarWidth = view->verticalScrollbar()->width(); |
2971 m_pageScaleConstraintsSet.adjustFinalConstraintsToContentsSize(m_size, c
ontentsSize(), verticalScrollbarWidth); | 2972 m_pageScaleConstraintsSet.adjustFinalConstraintsToContentsSize(m_size, c
ontentsSize(), verticalScrollbarWidth); |
2972 } | 2973 } |
2973 | 2974 |
2974 float newPageScaleFactor = pageScaleFactor(); | 2975 float newPageScaleFactor = pageScaleFactor(); |
2975 if (m_pageScaleConstraintsSet.needsReset() && m_pageScaleConstraintsSet.fina
lConstraints().initialScale != -1) { | 2976 if (m_pageScaleConstraintsSet.needsReset() && m_pageScaleConstraintsSet.fina
lConstraints().initialScale != -1) { |
2976 newPageScaleFactor = m_pageScaleConstraintsSet.finalConstraints().initia
lScale; | 2977 newPageScaleFactor = m_pageScaleConstraintsSet.finalConstraints().initia
lScale; |
2977 m_pageScaleConstraintsSet.setNeedsReset(false); | 2978 m_pageScaleConstraintsSet.setNeedsReset(false); |
(...skipping 21 matching lines...) Expand all Loading... |
2999 adjustedArguments.minHeight = adjustedArguments.maxHeight; | 3000 adjustedArguments.minHeight = adjustedArguments.maxHeight; |
3000 } | 3001 } |
3001 m_pageScaleConstraintsSet.updatePageDefinedConstraints(adjustedArguments, m_
size); | 3002 m_pageScaleConstraintsSet.updatePageDefinedConstraints(adjustedArguments, m_
size); |
3002 m_pageScaleConstraintsSet.adjustForAndroidWebViewQuirks(adjustedArguments, m
_size, page()->settings().layoutFallbackWidth(), deviceScaleFactor(), settingsIm
pl()->supportDeprecatedTargetDensityDPI(), page()->settings().wideViewportQuirkE
nabled(), page()->settings().useWideViewport(), page()->settings().loadWithOverv
iewMode()); | 3003 m_pageScaleConstraintsSet.adjustForAndroidWebViewQuirks(adjustedArguments, m
_size, page()->settings().layoutFallbackWidth(), deviceScaleFactor(), settingsIm
pl()->supportDeprecatedTargetDensityDPI(), page()->settings().wideViewportQuirkE
nabled(), page()->settings().useWideViewport(), page()->settings().loadWithOverv
iewMode()); |
3003 | 3004 |
3004 WebSize layoutSize = flooredIntSize(m_pageScaleConstraintsSet.pageDefinedCon
straints().layoutSize); | 3005 WebSize layoutSize = flooredIntSize(m_pageScaleConstraintsSet.pageDefinedCon
straints().layoutSize); |
3005 | 3006 |
3006 if (page()->settings().textAutosizingEnabled() && page()->mainFrame() && lay
outSize.width != fixedLayoutSize().width) | 3007 if (page()->settings().textAutosizingEnabled() && page()->mainFrame() && lay
outSize.width != fixedLayoutSize().width) |
3007 page()->mainFrame()->document()->textAutosizer()->recalculateMultipliers
(); | 3008 page()->mainFrame()->document()->textAutosizer()->recalculateMultipliers
(); |
3008 | 3009 |
3009 setFixedLayoutSize(layoutSize); | 3010 if (page()->mainFrame() && page()->mainFrame()->view() && !m_fixedLayoutSize
Lock) |
| 3011 page()->mainFrame()->view()->setFixedLayoutSize(layoutSize); |
3010 } | 3012 } |
3011 | 3013 |
3012 IntSize WebViewImpl::contentsSize() const | 3014 IntSize WebViewImpl::contentsSize() const |
3013 { | 3015 { |
3014 RenderView* root = page()->mainFrame()->contentRenderer(); | 3016 RenderView* root = page()->mainFrame()->contentRenderer(); |
3015 if (!root) | 3017 if (!root) |
3016 return IntSize(); | 3018 return IntSize(); |
3017 return root->documentRect().size(); | 3019 return root->documentRect().size(); |
3018 } | 3020 } |
3019 | 3021 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3088 | 3090 |
3089 return frame->view()->fixedLayoutSize(); | 3091 return frame->view()->fixedLayoutSize(); |
3090 } | 3092 } |
3091 | 3093 |
3092 void WebViewImpl::setFixedLayoutSize(const WebSize& layoutSize) | 3094 void WebViewImpl::setFixedLayoutSize(const WebSize& layoutSize) |
3093 { | 3095 { |
3094 if (!page()) | 3096 if (!page()) |
3095 return; | 3097 return; |
3096 | 3098 |
3097 Frame* frame = page()->mainFrame(); | 3099 Frame* frame = page()->mainFrame(); |
3098 if (!frame || !frame->view()) | 3100 if (!frame) |
3099 return; | 3101 return; |
3100 | 3102 |
3101 frame->view()->setFixedLayoutSize(layoutSize); | 3103 FrameView* view = frame->view(); |
| 3104 if (!view) |
| 3105 return; |
| 3106 |
| 3107 m_fixedLayoutSizeLock = layoutSize.width || layoutSize.height; |
| 3108 |
| 3109 if (m_fixedLayoutSizeLock) |
| 3110 view->setFixedLayoutSize(layoutSize); |
| 3111 else |
| 3112 view->setFixedLayoutSize(flooredIntSize(m_pageScaleConstraintsSet.pageDe
finedConstraints().layoutSize)); |
3102 } | 3113 } |
3103 | 3114 |
3104 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action, | 3115 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action, |
3105 const WebPoint& location) | 3116 const WebPoint& location) |
3106 { | 3117 { |
3107 HitTestResult result = hitTestResultForWindowPos(location); | 3118 HitTestResult result = hitTestResultForWindowPos(location); |
3108 RefPtr<Node> node = result.innerNonSharedNode(); | 3119 RefPtr<Node> node = result.innerNonSharedNode(); |
3109 if (!isHTMLVideoElement(node.get()) && !node->hasTagName(HTMLNames::audioTag
)) | 3120 if (!isHTMLVideoElement(node.get()) && !node->hasTagName(HTMLNames::audioTag
)) |
3110 return; | 3121 return; |
3111 | 3122 |
(...skipping 1001 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4113 // the initial viewport width. | 4124 // the initial viewport width. |
4114 // 2. The author has disabled viewport zoom. | 4125 // 2. The author has disabled viewport zoom. |
4115 | 4126 |
4116 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi
nedConstraints(); | 4127 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi
nedConstraints(); |
4117 | 4128 |
4118 return fixedLayoutSize().width == m_size.width | 4129 return fixedLayoutSize().width == m_size.width |
4119 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); | 4130 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); |
4120 } | 4131 } |
4121 | 4132 |
4122 } // namespace WebKit | 4133 } // namespace WebKit |
OLD | NEW |