summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/web/PinchViewports.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/web/PinchViewports.cpp')
-rw-r--r--chromium/third_party/WebKit/Source/web/PinchViewports.cpp216
1 files changed, 0 insertions, 216 deletions
diff --git a/chromium/third_party/WebKit/Source/web/PinchViewports.cpp b/chromium/third_party/WebKit/Source/web/PinchViewports.cpp
deleted file mode 100644
index 98c85159eb7..00000000000
--- a/chromium/third_party/WebKit/Source/web/PinchViewports.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Copyright (C) 2013 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "PinchViewports.h"
-
-#include "WebSettingsImpl.h"
-#include "WebViewImpl.h"
-#include "core/frame/Frame.h"
-#include "core/frame/FrameView.h"
-#include "core/page/scrolling/ScrollingCoordinator.h"
-#include "core/rendering/RenderLayerCompositor.h"
-#include "platform/geometry/FloatSize.h"
-#include "platform/graphics/GraphicsLayer.h"
-#include "platform/scroll/Scrollbar.h"
-#include "public/platform/Platform.h"
-#include "public/platform/WebCompositorSupport.h"
-#include "public/platform/WebLayer.h"
-#include "public/platform/WebLayerTreeView.h"
-#include "public/platform/WebScrollbarLayer.h"
-
-using WebCore::GraphicsLayer;
-
-namespace blink {
-
-PassOwnPtr<PinchViewports> PinchViewports::create(WebViewImpl* owner)
-{
- return adoptPtr(new PinchViewports(owner));
-}
-
-PinchViewports::PinchViewports(WebViewImpl* owner)
- : m_owner(owner)
- , m_innerViewportContainerLayer(GraphicsLayer::create(m_owner->graphicsLayerFactory(), this))
- , m_pageScaleLayer(GraphicsLayer::create(m_owner->graphicsLayerFactory(), this))
- , m_innerViewportScrollLayer(GraphicsLayer::create(m_owner->graphicsLayerFactory(), this))
- , m_overlayScrollbarHorizontal(GraphicsLayer::create(m_owner->graphicsLayerFactory(), this))
- , m_overlayScrollbarVertical(GraphicsLayer::create(m_owner->graphicsLayerFactory(), this))
-{
- m_innerViewportContainerLayer->platformLayer()->setIsContainerForFixedPositionLayers(true);
- // No need for the inner viewport to clip, since the compositing
- // surface takes care of it -- and clipping here would interfere with
- // dynamically-sized viewports on Android.
- m_innerViewportContainerLayer->setMasksToBounds(false);
-
- m_innerViewportScrollLayer->platformLayer()->setScrollable(true);
- m_innerViewportScrollLayer->platformLayer()->setUserScrollable(true, true);
-
- m_innerViewportContainerLayer->addChild(m_pageScaleLayer.get());
- m_pageScaleLayer->addChild(m_innerViewportScrollLayer.get());
- m_innerViewportContainerLayer->addChild(m_overlayScrollbarHorizontal.get());
- m_innerViewportContainerLayer->addChild(m_overlayScrollbarVertical.get());
-
- // Setup the inner viewport overlay scrollbars.
- setupScrollbar(WebScrollbar::Horizontal);
- setupScrollbar(WebScrollbar::Vertical);
-}
-
-PinchViewports::~PinchViewports() { }
-
-void PinchViewports::setViewportSize(const WebCore::IntSize& newSize)
-{
- m_innerViewportContainerLayer->setSize(newSize);
-
- // Need to re-compute sizes for the overlay scrollbars.
- setupScrollbar(WebScrollbar::Horizontal);
- setupScrollbar(WebScrollbar::Vertical);
-}
-
-// Modifies the top of the graphics layer tree to add layers needed to support
-// the inner/outer viewport fixed-position model for pinch zoom. When finished,
-// the tree will look like this (with * denoting added layers):
-//
-// *innerViewportContainerLayer (fixed pos container)
-// +- *pageScaleLayer
-// | +- *innerViewportScrollLayer
-// | +-- overflowControlsHostLayer (root layer)
-// | +-- outerViewportContainerLayer (fixed pos container) [frame container layer in RenderLayerCompositor]
-// | | +-- outerViewportScrollLayer [frame scroll layer in RenderLayerCompositor]
-// | | +-- content layers ...
-// | +-- horizontal ScrollbarLayer (non-overlay)
-// | +-- verticalScrollbarLayer (non-overlay)
-// | +-- scroll corner (non-overlay)
-// +- *horizontalScrollbarLayer (overlay)
-// +- *verticalScrollbarLayer (overlay)
-//
-void PinchViewports::setOverflowControlsHostLayer(GraphicsLayer* layer)
-{
- if (layer) {
- ASSERT(!m_innerViewportScrollLayer->children().size());
- m_innerViewportScrollLayer->addChild(layer);
- } else {
- m_innerViewportScrollLayer->removeAllChildren();
- return;
- }
-
- WebCore::Page* page = m_owner->page();
- if (!page)
- return;
-
- // We only need to disable the existing (outer viewport) scrollbars
- // if the existing ones are already overlay.
- // FIXME: If we knew in advance before the overflowControlsHostLayer goes
- // away, we would re-enable the drawing of these scrollbars.
- if (GraphicsLayer* scrollbar = m_owner->compositor()->layerForHorizontalScrollbar())
- scrollbar->setDrawsContent(!page->mainFrame()->view()->hasOverlayScrollbars());
- if (GraphicsLayer* scrollbar = m_owner->compositor()->layerForVerticalScrollbar())
- scrollbar->setDrawsContent(!page->mainFrame()->view()->hasOverlayScrollbars());
-}
-
-void PinchViewports::setupScrollbar(WebScrollbar::Orientation orientation)
-{
- bool isHorizontal = orientation == WebScrollbar::Horizontal;
- GraphicsLayer* scrollbarGraphicsLayer = isHorizontal ?
- m_overlayScrollbarHorizontal.get() : m_overlayScrollbarVertical.get();
- OwnPtr<WebScrollbarLayer>& webScrollbarLayer = isHorizontal ?
- m_webOverlayScrollbarHorizontal : m_webOverlayScrollbarVertical;
-
- const int overlayScrollbarThickness = m_owner->settingsImpl()->pinchOverlayScrollbarThickness();
-
- if (!webScrollbarLayer) {
- WebCore::ScrollingCoordinator* coordinator = m_owner->page()->scrollingCoordinator();
- ASSERT(coordinator);
- WebCore::ScrollbarOrientation webcoreOrientation = isHorizontal ? WebCore::HorizontalScrollbar : WebCore::VerticalScrollbar;
- webScrollbarLayer = coordinator->createSolidColorScrollbarLayer(webcoreOrientation, overlayScrollbarThickness, false);
-
- webScrollbarLayer->setScrollLayer(m_innerViewportScrollLayer->platformLayer());
- scrollbarGraphicsLayer->setContentsToPlatformLayer(webScrollbarLayer->layer());
- scrollbarGraphicsLayer->setDrawsContent(false);
- }
-
- int xPosition = isHorizontal ? 0 : m_innerViewportContainerLayer->size().width() - overlayScrollbarThickness;
- int yPosition = isHorizontal ? m_innerViewportContainerLayer->size().height() - overlayScrollbarThickness : 0;
- int width = isHorizontal ? m_innerViewportContainerLayer->size().width() - overlayScrollbarThickness : overlayScrollbarThickness;
- int height = isHorizontal ? overlayScrollbarThickness : m_innerViewportContainerLayer->size().height() - overlayScrollbarThickness;
-
- scrollbarGraphicsLayer->setPosition(WebCore::IntPoint(xPosition, yPosition));
- scrollbarGraphicsLayer->setSize(WebCore::IntSize(width, height));
-}
-
-void PinchViewports::registerViewportLayersWithTreeView(WebLayerTreeView* layerTreeView) const
-{
- ASSERT(layerTreeView);
-
- WebCore::RenderLayerCompositor* compositor = m_owner->compositor();
- GraphicsLayer* scrollLayer = compositor->scrollLayer();
-
- ASSERT(compositor);
- layerTreeView->registerViewportLayers(
- m_pageScaleLayer->platformLayer(),
- m_innerViewportScrollLayer->platformLayer(),
- scrollLayer->platformLayer());
-}
-
-void PinchViewports::clearViewportLayersForTreeView(WebLayerTreeView* layerTreeView) const
-{
- ASSERT(layerTreeView);
-
- layerTreeView->clearViewportLayers();
-}
-
-void PinchViewports::notifyAnimationStarted(const GraphicsLayer*, double wallClockTime, double monotonicTime)
-{
-}
-
-void PinchViewports::paintContents(const GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect& inClip)
-{
-}
-
-String PinchViewports::debugName(const GraphicsLayer* graphicsLayer)
-{
- String name;
- if (graphicsLayer == m_innerViewportContainerLayer.get()) {
- name = "Inner Viewport Container Layer";
- } else if (graphicsLayer == m_pageScaleLayer.get()) {
- name = "Page Scale Layer";
- } else if (graphicsLayer == m_innerViewportScrollLayer.get()) {
- name = "Inner Viewport Scroll Layer";
- } else if (graphicsLayer == m_overlayScrollbarHorizontal.get()) {
- name = "Overlay Scrollbar Horizontal Layer";
- } else if (graphicsLayer == m_overlayScrollbarVertical.get()) {
- name = "Overlay Scrollbar Vertical Layer";
- } else {
- ASSERT_NOT_REACHED();
- }
-
- return name;
-}
-
-} // namespace blink