| 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 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 , m_fullscreenController(FullscreenController::create(this)) | 405 , m_fullscreenController(FullscreenController::create(this)) |
| 406 , m_showFPSCounter(false) | 406 , m_showFPSCounter(false) |
| 407 , m_showPaintRects(false) | 407 , m_showPaintRects(false) |
| 408 , m_showDebugBorders(false) | 408 , m_showDebugBorders(false) |
| 409 , m_continuousPaintingEnabled(false) | 409 , m_continuousPaintingEnabled(false) |
| 410 , m_showScrollBottleneckRects(false) | 410 , m_showScrollBottleneckRects(false) |
| 411 , m_baseBackgroundColor(Color::white) | 411 , m_baseBackgroundColor(Color::white) |
| 412 , m_backgroundColorOverride(Color::transparent) | 412 , m_backgroundColorOverride(Color::transparent) |
| 413 , m_zoomFactorOverride(0) | 413 , m_zoomFactorOverride(0) |
| 414 , m_userGestureObserved(false) | 414 , m_userGestureObserved(false) |
| 415 , m_topControlsContentOffset(0) | 415 , m_topControlsShownRatio(0) |
| 416 , m_topControlsLayoutHeight(0) | 416 , m_topControlsHeight(0) |
| 417 , m_topControlsShrinkLayoutSize(true) |
| 418 , m_topControlsOffsetIsNormalized(true) |
| 417 { | 419 { |
| 418 Page::PageClients pageClients; | 420 Page::PageClients pageClients; |
| 419 pageClients.chromeClient = &m_chromeClientImpl; | 421 pageClients.chromeClient = &m_chromeClientImpl; |
| 420 pageClients.contextMenuClient = &m_contextMenuClientImpl; | 422 pageClients.contextMenuClient = &m_contextMenuClientImpl; |
| 421 pageClients.editorClient = &m_editorClientImpl; | 423 pageClients.editorClient = &m_editorClientImpl; |
| 422 pageClients.dragClient = &m_dragClientImpl; | 424 pageClients.dragClient = &m_dragClientImpl; |
| 423 pageClients.inspectorClient = &m_inspectorClientImpl; | 425 pageClients.inspectorClient = &m_inspectorClientImpl; |
| 424 pageClients.spellCheckerClient = &m_spellCheckerClientImpl; | 426 pageClients.spellCheckerClient = &m_spellCheckerClientImpl; |
| 425 | 427 |
| 426 m_page = adoptPtrWillBeNoop(new Page(pageClients)); | 428 m_page = adoptPtrWillBeNoop(new Page(pageClients)); |
| (...skipping 1283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1710 // and thus will not be invalidated in |FrameView::performPreLayoutTasks|. | 1712 // and thus will not be invalidated in |FrameView::performPreLayoutTasks|. |
| 1711 // Therefore we should force explicit media queries invalidation here. | 1713 // Therefore we should force explicit media queries invalidation here. |
| 1712 if (page()->inspectorController().deviceEmulationEnabled()) { | 1714 if (page()->inspectorController().deviceEmulationEnabled()) { |
| 1713 if (Document* document = localFrameRootTemporary()->frame()->document())
{ | 1715 if (Document* document = localFrameRootTemporary()->frame()->document())
{ |
| 1714 document->styleResolverChanged(); | 1716 document->styleResolverChanged(); |
| 1715 document->mediaQueryAffectingValueChanged(); | 1717 document->mediaQueryAffectingValueChanged(); |
| 1716 } | 1718 } |
| 1717 } | 1719 } |
| 1718 } | 1720 } |
| 1719 | 1721 |
| 1720 void WebViewImpl::setTopControlsContentOffset(float offset) | 1722 void WebViewImpl::setTopControlsShownRatio(float offset) |
| 1721 { | 1723 { |
| 1722 m_topControlsContentOffset = offset; | 1724 m_topControlsShownRatio = offset; |
| 1725 // TODO(aelias): Rename this to ShownRatio after CC side lands. |
| 1723 m_layerTreeView->setTopControlsContentOffset(offset); | 1726 m_layerTreeView->setTopControlsContentOffset(offset); |
| 1724 didUpdateTopControls(); | 1727 didUpdateTopControls(); |
| 1725 } | 1728 } |
| 1726 | 1729 |
| 1727 void WebViewImpl::setTopControlsLayoutHeight(float height) | 1730 void WebViewImpl::setTopControlsLayoutHeight(float height) |
| 1728 { | 1731 { |
| 1729 m_topControlsLayoutHeight = height; | 1732 m_topControlsOffsetIsNormalized = false; |
| 1733 setTopControlsHeight(height, true); |
| 1734 } |
| 1735 |
| 1736 void WebViewImpl::setTopControlsHeight(float height, bool topControlsShrinkLayou
tSize) |
| 1737 { |
| 1738 if (m_topControlsHeight == height && m_topControlsShrinkLayoutSize == topCon
trolsShrinkLayoutSize) |
| 1739 return; |
| 1740 |
| 1741 m_topControlsHeight = height; |
| 1742 m_topControlsShrinkLayoutSize = topControlsShrinkLayoutSize; |
| 1730 didUpdateTopControls(); | 1743 didUpdateTopControls(); |
| 1731 } | 1744 } |
| 1732 | 1745 |
| 1733 void WebViewImpl::didUpdateTopControls() | 1746 void WebViewImpl::didUpdateTopControls() |
| 1734 { | 1747 { |
| 1735 WebLocalFrameImpl* localFrameRoot = localFrameRootTemporary(); | 1748 WebLocalFrameImpl* localFrameRoot = localFrameRootTemporary(); |
| 1736 if (!localFrameRoot) | 1749 if (!localFrameRoot) |
| 1737 return; | 1750 return; |
| 1738 | 1751 |
| 1739 FrameView* view = localFrameRoot->frameView(); | 1752 FrameView* view = localFrameRoot->frameView(); |
| 1740 if (!view) | 1753 if (!view) |
| 1741 return; | 1754 return; |
| 1742 | 1755 |
| 1743 float topControlsViewportAdjustment = m_topControlsLayoutHeight - m_topContr
olsContentOffset; | 1756 float topControlsViewportAdjustment = 0; |
| 1757 if (m_topControlsShrinkLayoutSize) |
| 1758 topControlsViewportAdjustment += m_topControlsHeight; |
| 1759 topControlsViewportAdjustment -= m_topControlsShownRatio * (m_topControlsOff
setIsNormalized ? m_topControlsHeight : 1); |
| 1760 |
| 1744 if (!pinchVirtualViewportEnabled()) { | 1761 if (!pinchVirtualViewportEnabled()) { |
| 1745 // The viewport bounds were adjusted on the compositor by this much due
to top controls. Tell | 1762 // The viewport bounds were adjusted on the compositor by this much due
to top controls. Tell |
| 1746 // the FrameView about it so it can make correct scroll offset clamping
decisions during compositor | 1763 // the FrameView about it so it can make correct scroll offset clamping
decisions during compositor |
| 1747 // commits. | 1764 // commits. |
| 1748 view->setTopControlsViewportAdjustment(topControlsViewportAdjustment); | 1765 view->setTopControlsViewportAdjustment(topControlsViewportAdjustment); |
| 1749 } else { | 1766 } else { |
| 1750 PinchViewport& pinchViewport = page()->frameHost().pinchViewport(); | 1767 PinchViewport& pinchViewport = page()->frameHost().pinchViewport(); |
| 1751 | 1768 |
| 1752 if (pinchViewport.visibleRect().isEmpty()) | 1769 if (pinchViewport.visibleRect().isEmpty()) |
| 1753 return; | 1770 return; |
| 1754 | 1771 |
| 1755 pinchViewport.setTopControlsAdjustment(topControlsViewportAdjustment); | 1772 pinchViewport.setTopControlsAdjustment(topControlsViewportAdjustment); |
| 1756 | 1773 |
| 1757 // On ChromeOS the pinch viewport can change size independent of the layout view
port due to the | 1774 // On ChromeOS the pinch viewport can change size independent of the layout view
port due to the |
| 1758 // on screen keyboard so we should only set the FrameView adjustment on Android. | 1775 // on screen keyboard so we should only set the FrameView adjustment on Android. |
| 1759 #if OS(ANDROID) | 1776 if (settings() && settings()->mainFrameResizesAreOrientationChanges()) { |
| 1760 // Shrink the FrameView by the amount that will maintain the aspect-rati
o with the PinchViewport. | 1777 // Shrink the FrameView by the amount that will maintain the aspect-
ratio with the PinchViewport. |
| 1761 float aspectRatio = pinchViewport.visibleRect().width() / pinchViewport.
visibleRect().height(); | 1778 float aspectRatio = pinchViewport.visibleRect().width() / pinchViewp
ort.visibleRect().height(); |
| 1762 float newHeight = view->unscaledVisibleContentSize(ExcludeScrollbars).wi
dth() / aspectRatio; | 1779 float newHeight = view->unscaledVisibleContentSize(ExcludeScrollbars
).width() / aspectRatio; |
| 1763 float adjustment = newHeight - view->unscaledVisibleContentSize(ExcludeS
crollbars).height(); | 1780 float adjustment = newHeight - view->unscaledVisibleContentSize(Excl
udeScrollbars).height(); |
| 1764 view->setTopControlsViewportAdjustment(adjustment); | 1781 view->setTopControlsViewportAdjustment(adjustment); |
| 1765 #endif | 1782 } |
| 1766 } | 1783 } |
| 1767 } | 1784 } |
| 1768 | 1785 |
| 1769 void WebViewImpl::resize(const WebSize& newSize) | 1786 void WebViewImpl::resize(const WebSize& newSize) |
| 1770 { | 1787 { |
| 1771 if (m_shouldAutoResize || m_size == newSize) | 1788 if (m_shouldAutoResize || m_size == newSize) |
| 1772 return; | 1789 return; |
| 1773 | 1790 |
| 1774 WebLocalFrameImpl* localFrameRoot = localFrameRootTemporary(); | 1791 WebLocalFrameImpl* localFrameRoot = localFrameRootTemporary(); |
| 1775 if (!localFrameRoot) | 1792 if (!localFrameRoot) |
| (...skipping 2605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4381 frameView->setInProgrammaticScroll(programmaticScroll); | 4398 frameView->setInProgrammaticScroll(programmaticScroll); |
| 4382 scrollableArea->notifyScrollPositionChanged(scrollPosition); | 4399 scrollableArea->notifyScrollPositionChanged(scrollPosition); |
| 4383 frameView->setInProgrammaticScroll(oldProgrammaticScroll); | 4400 frameView->setInProgrammaticScroll(oldProgrammaticScroll); |
| 4384 } | 4401 } |
| 4385 | 4402 |
| 4386 void WebViewImpl::applyViewportDeltas( | 4403 void WebViewImpl::applyViewportDeltas( |
| 4387 const WebSize& pinchViewportDelta, | 4404 const WebSize& pinchViewportDelta, |
| 4388 const WebSize& outerViewportDelta, | 4405 const WebSize& outerViewportDelta, |
| 4389 const WebFloatSize& elasticOverscrollDelta, | 4406 const WebFloatSize& elasticOverscrollDelta, |
| 4390 float pageScaleDelta, | 4407 float pageScaleDelta, |
| 4391 float topControlsDelta) | 4408 float topControlsShownRatioDelta) |
| 4392 { | 4409 { |
| 4393 applyViewportDeltas( | 4410 applyViewportDeltas( |
| 4394 WebFloatSize(pinchViewportDelta.width, pinchViewportDelta.height), | 4411 WebFloatSize(pinchViewportDelta.width, pinchViewportDelta.height), |
| 4395 WebFloatSize(outerViewportDelta.width, outerViewportDelta.height), | 4412 WebFloatSize(outerViewportDelta.width, outerViewportDelta.height), |
| 4396 elasticOverscrollDelta, | 4413 elasticOverscrollDelta, |
| 4397 pageScaleDelta, | 4414 pageScaleDelta, |
| 4398 topControlsDelta); | 4415 topControlsShownRatioDelta); |
| 4399 } | 4416 } |
| 4400 | 4417 |
| 4401 void WebViewImpl::applyViewportDeltas( | 4418 void WebViewImpl::applyViewportDeltas( |
| 4402 const WebFloatSize& pinchViewportDelta, | 4419 const WebFloatSize& pinchViewportDelta, |
| 4403 const WebFloatSize& outerViewportDelta, | 4420 const WebFloatSize& outerViewportDelta, |
| 4404 const WebFloatSize& elasticOverscrollDelta, | 4421 const WebFloatSize& elasticOverscrollDelta, |
| 4405 float pageScaleDelta, | 4422 float pageScaleDelta, |
| 4406 float topControlsDelta) | 4423 float topControlsShownRatioDelta) |
| 4407 { | 4424 { |
| 4408 ASSERT(pinchVirtualViewportEnabled()); | 4425 ASSERT(pinchVirtualViewportEnabled()); |
| 4409 | 4426 |
| 4410 if (!mainFrameImpl()) | 4427 if (!mainFrameImpl()) |
| 4411 return; | 4428 return; |
| 4412 FrameView* frameView = mainFrameImpl()->frameView(); | 4429 FrameView* frameView = mainFrameImpl()->frameView(); |
| 4413 if (!frameView) | 4430 if (!frameView) |
| 4414 return; | 4431 return; |
| 4415 | 4432 |
| 4416 setTopControlsContentOffset(m_topControlsContentOffset + topControlsDelta); | 4433 setTopControlsShownRatio(m_topControlsShownRatio + topControlsShownRatioDelt
a); |
| 4417 | 4434 |
| 4418 FloatPoint pinchViewportOffset = page()->frameHost().pinchViewport().visible
Rect().location(); | 4435 FloatPoint pinchViewportOffset = page()->frameHost().pinchViewport().visible
Rect().location(); |
| 4419 pinchViewportOffset.move(pinchViewportDelta.width, pinchViewportDelta.height
); | 4436 pinchViewportOffset.move(pinchViewportDelta.width, pinchViewportDelta.height
); |
| 4420 setPageScaleFactorAndLocation(pageScaleFactor() * pageScaleDelta, pinchViewp
ortOffset); | 4437 setPageScaleFactorAndLocation(pageScaleFactor() * pageScaleDelta, pinchViewp
ortOffset); |
| 4421 | 4438 |
| 4422 if (pageScaleDelta != 1) | 4439 if (pageScaleDelta != 1) |
| 4423 m_doubleTapZoomPending = false; | 4440 m_doubleTapZoomPending = false; |
| 4424 | 4441 |
| 4425 frameView->setElasticOverscroll(elasticOverscrollDelta + frameView->elasticO
verscroll()); | 4442 frameView->setElasticOverscroll(elasticOverscrollDelta + frameView->elasticO
verscroll()); |
| 4426 | 4443 |
| 4427 updateMainFrameScrollPosition(frameView->scrollableArea()->scrollPositionDou
ble() + | 4444 updateMainFrameScrollPosition(frameView->scrollableArea()->scrollPositionDou
ble() + |
| 4428 DoubleSize(outerViewportDelta.width, outerViewportDelta.height), /* prog
rammaticScroll */ false); | 4445 DoubleSize(outerViewportDelta.width, outerViewportDelta.height), /* prog
rammaticScroll */ false); |
| 4429 } | 4446 } |
| 4430 | 4447 |
| 4431 void WebViewImpl::applyViewportDeltas(const WebSize& scrollDelta, float pageScal
eDelta, float topControlsDelta) | 4448 void WebViewImpl::applyViewportDeltas(const WebSize& scrollDelta, float pageScal
eDelta, float topControlsShownRatioDelta) |
| 4432 { | 4449 { |
| 4433 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) | 4450 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) |
| 4434 return; | 4451 return; |
| 4435 | 4452 |
| 4436 setTopControlsContentOffset(m_topControlsContentOffset + topControlsDelta); | 4453 setTopControlsShownRatio(m_topControlsShownRatio + topControlsShownRatioDelt
a); |
| 4437 | 4454 |
| 4438 if (pageScaleDelta == 1) { | 4455 if (pageScaleDelta == 1) { |
| 4439 TRACE_EVENT_INSTANT2("blink", "WebViewImpl::applyScrollAndScale::scrollB
y", "x", scrollDelta.width, "y", scrollDelta.height); | 4456 TRACE_EVENT_INSTANT2("blink", "WebViewImpl::applyScrollAndScale::scrollB
y", "x", scrollDelta.width, "y", scrollDelta.height); |
| 4440 WebSize webScrollOffset = mainFrame()->scrollOffset(); | 4457 WebSize webScrollOffset = mainFrame()->scrollOffset(); |
| 4441 IntPoint scrollOffset(webScrollOffset.width + scrollDelta.width, webScro
llOffset.height + scrollDelta.height); | 4458 IntPoint scrollOffset(webScrollOffset.width + scrollDelta.width, webScro
llOffset.height + scrollDelta.height); |
| 4442 updateMainFrameScrollPosition(scrollOffset, false); | 4459 updateMainFrameScrollPosition(scrollOffset, false); |
| 4443 } else { | 4460 } else { |
| 4444 // The page scale changed, so apply a scale and scroll in a single | 4461 // The page scale changed, so apply a scale and scroll in a single |
| 4445 // operation. | 4462 // operation. |
| 4446 WebSize scrollOffset = mainFrame()->scrollOffset(); | 4463 WebSize scrollOffset = mainFrame()->scrollOffset(); |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4606 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width | 4623 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width |
| 4607 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); | 4624 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); |
| 4608 } | 4625 } |
| 4609 | 4626 |
| 4610 void WebViewImpl::forceNextWebGLContextCreationToFail() | 4627 void WebViewImpl::forceNextWebGLContextCreationToFail() |
| 4611 { | 4628 { |
| 4612 WebGLRenderingContext::forceNextWebGLContextCreationToFail(); | 4629 WebGLRenderingContext::forceNextWebGLContextCreationToFail(); |
| 4613 } | 4630 } |
| 4614 | 4631 |
| 4615 } // namespace blink | 4632 } // namespace blink |
| OLD | NEW |