Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: Source/web/PinchViewports.cpp

Issue 19019004: Set root clip layer not to maskToBounds. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Another ClipLayer rename Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/web/PinchViewports.h ('k') | public/platform/WebLayerTreeView.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 namespace WebKit { 47 namespace WebKit {
48 48
49 PassOwnPtr<PinchViewports> PinchViewports::create(WebViewImpl* owner) 49 PassOwnPtr<PinchViewports> PinchViewports::create(WebViewImpl* owner)
50 { 50 {
51 return adoptPtr(new PinchViewports(owner)); 51 return adoptPtr(new PinchViewports(owner));
52 } 52 }
53 53
54 PinchViewports::PinchViewports(WebViewImpl* owner) 54 PinchViewports::PinchViewports(WebViewImpl* owner)
55 : m_owner(owner) 55 : m_owner(owner)
56 , m_innerViewportClipLayer(GraphicsLayer::create(m_owner->graphicsLayerFacto ry(), this)) 56 , m_innerViewportContainerLayer(GraphicsLayer::create(m_owner->graphicsLayer Factory(), this))
57 , m_pageScaleLayer(GraphicsLayer::create(m_owner->graphicsLayerFactory(), th is)) 57 , m_pageScaleLayer(GraphicsLayer::create(m_owner->graphicsLayerFactory(), th is))
58 , m_innerViewportScrollLayer(GraphicsLayer::create(m_owner->graphicsLayerFac tory(), this)) 58 , m_innerViewportScrollLayer(GraphicsLayer::create(m_owner->graphicsLayerFac tory(), this))
59 , m_overlayScrollbarHorizontal(GraphicsLayer::create(m_owner->graphicsLayerF actory(), this)) 59 , m_overlayScrollbarHorizontal(GraphicsLayer::create(m_owner->graphicsLayerF actory(), this))
60 , m_overlayScrollbarVertical(GraphicsLayer::create(m_owner->graphicsLayerFac tory(), this)) 60 , m_overlayScrollbarVertical(GraphicsLayer::create(m_owner->graphicsLayerFac tory(), this))
61 { 61 {
62 m_innerViewportClipLayer->setMasksToBounds(true); 62 m_innerViewportContainerLayer->platformLayer()->setIsContainerForFixedPositi onLayers(true);
63 m_innerViewportClipLayer->platformLayer()->setIsContainerForFixedPositionLay ers(true); 63 // No need for the inner viewport to clip, since the compositing
64 // surface takes care of it -- and clipping here would interfere with
65 // dynamically-sized viewports on Android.
66 m_innerViewportContainerLayer->setMasksToBounds(false);
64 67
65 m_innerViewportScrollLayer->platformLayer()->setScrollable(true); 68 m_innerViewportScrollLayer->platformLayer()->setScrollable(true);
66 69
67 #ifndef NDEBUG 70 #ifndef NDEBUG
68 m_innerViewportClipLayer->setName("inner viewport clip layer"); 71 m_innerViewportContainerLayer->setName("inner viewport container layer");
69 m_pageScaleLayer->setName("page scale layer"); 72 m_pageScaleLayer->setName("page scale layer");
70 m_innerViewportScrollLayer->setName("inner viewport scroll layer"); 73 m_innerViewportScrollLayer->setName("inner viewport scroll layer");
71 m_overlayScrollbarHorizontal->setName("overlay scrollbar horizontal"); 74 m_overlayScrollbarHorizontal->setName("overlay scrollbar horizontal");
72 m_overlayScrollbarVertical->setName("overlay scrollbar vertical"); 75 m_overlayScrollbarVertical->setName("overlay scrollbar vertical");
73 #endif 76 #endif
74 77
75 m_innerViewportClipLayer->addChild(m_pageScaleLayer.get()); 78 m_innerViewportContainerLayer->addChild(m_pageScaleLayer.get());
76 m_pageScaleLayer->addChild(m_innerViewportScrollLayer.get()); 79 m_pageScaleLayer->addChild(m_innerViewportScrollLayer.get());
77 m_innerViewportClipLayer->addChild(m_overlayScrollbarHorizontal.get()); 80 m_innerViewportContainerLayer->addChild(m_overlayScrollbarHorizontal.get());
78 m_innerViewportClipLayer->addChild(m_overlayScrollbarVertical.get()); 81 m_innerViewportContainerLayer->addChild(m_overlayScrollbarVertical.get());
79 82
80 // Setup the inner viewport overlay scrollbars. 83 // Setup the inner viewport overlay scrollbars.
81 setupScrollbar(WebScrollbar::Horizontal); 84 setupScrollbar(WebScrollbar::Horizontal);
82 setupScrollbar(WebScrollbar::Vertical); 85 setupScrollbar(WebScrollbar::Vertical);
83 } 86 }
84 87
85 PinchViewports::~PinchViewports() { } 88 PinchViewports::~PinchViewports() { }
86 89
87 void PinchViewports::setViewportSize(const WebCore::IntSize& newSize) 90 void PinchViewports::setViewportSize(const WebCore::IntSize& newSize)
88 { 91 {
89 m_innerViewportClipLayer->setSize(newSize); 92 m_innerViewportContainerLayer->setSize(newSize);
90 93
91 // Need to re-compute sizes for the overlay scrollbars. 94 // Need to re-compute sizes for the overlay scrollbars.
92 setupScrollbar(WebScrollbar::Horizontal); 95 setupScrollbar(WebScrollbar::Horizontal);
93 setupScrollbar(WebScrollbar::Vertical); 96 setupScrollbar(WebScrollbar::Vertical);
94 } 97 }
95 98
96 // Modifies the top of the graphics layer tree to add layers needed to support 99 // Modifies the top of the graphics layer tree to add layers needed to support
97 // the inner/outer viewport fixed-position model for pinch zoom. When finished, 100 // the inner/outer viewport fixed-position model for pinch zoom. When finished,
98 // the tree will look like this (with * denoting added layers): 101 // the tree will look like this (with * denoting added layers):
99 // 102 //
100 // *innerViewportClipLayer (fixed pos container) 103 // *innerViewportContainerLayer (fixed pos container)
101 // +- *pageScaleLayer 104 // +- *pageScaleLayer
102 // | +- *innerViewportScrollLayer 105 // | +- *innerViewportScrollLayer
103 // | +-- overflowControlsHostLayer (root layer) 106 // | +-- overflowControlsHostLayer (root layer)
104 // | +-- outerViewportClipLayer (fixed pos container) [frame clip lay er in RenderLayerCompositor] 107 // | +-- outerViewportContainerLayer (fixed pos container) [frame con tainer layer in RenderLayerCompositor]
105 // | | +-- outerViewportScrollLayer [frame scroll layer in RenderLa yerCompositor] 108 // | | +-- outerViewportScrollLayer [frame scroll layer in RenderLa yerCompositor]
106 // | | +-- content layers ... 109 // | | +-- content layers ...
107 // | +-- horizontal ScrollbarLayer (non-overlay) 110 // | +-- horizontal ScrollbarLayer (non-overlay)
108 // | +-- verticalScrollbarLayer (non-overlay) 111 // | +-- verticalScrollbarLayer (non-overlay)
109 // | +-- scroll corner (non-overlay) 112 // | +-- scroll corner (non-overlay)
110 // +- *horizontalScrollbarLayer (overlay) 113 // +- *horizontalScrollbarLayer (overlay)
111 // +- *verticalScrollbarLayer (overlay) 114 // +- *verticalScrollbarLayer (overlay)
112 // 115 //
113 void PinchViewports::setOverflowControlsHostLayer(GraphicsLayer* layer) 116 void PinchViewports::setOverflowControlsHostLayer(GraphicsLayer* layer)
114 { 117 {
(...skipping 20 matching lines...) Expand all
135 } 138 }
136 139
137 void PinchViewports::setupScrollbar(WebScrollbar::Orientation orientation) 140 void PinchViewports::setupScrollbar(WebScrollbar::Orientation orientation)
138 { 141 {
139 bool isHorizontal = orientation == WebScrollbar::Horizontal; 142 bool isHorizontal = orientation == WebScrollbar::Horizontal;
140 GraphicsLayer* scrollbarGraphicsLayer = isHorizontal ? 143 GraphicsLayer* scrollbarGraphicsLayer = isHorizontal ?
141 m_overlayScrollbarHorizontal.get() : m_overlayScrollbarVertical.get(); 144 m_overlayScrollbarHorizontal.get() : m_overlayScrollbarVertical.get();
142 145
143 const int overlayScrollbarThickness = m_owner->settingsImpl()->pinchOverlayS crollbarThickness(); 146 const int overlayScrollbarThickness = m_owner->settingsImpl()->pinchOverlayS crollbarThickness();
144 147
145 int xPosition = isHorizontal ? 0 : m_innerViewportClipLayer->size().width() - overlayScrollbarThickness; 148 int xPosition = isHorizontal ? 0 : m_innerViewportContainerLayer->size().wid th() - overlayScrollbarThickness;
146 int yPosition = isHorizontal ? m_innerViewportClipLayer->size().height() - o verlayScrollbarThickness : 0; 149 int yPosition = isHorizontal ? m_innerViewportContainerLayer->size().height( ) - overlayScrollbarThickness : 0;
147 int width = isHorizontal ? m_innerViewportClipLayer->size().width() - overla yScrollbarThickness : overlayScrollbarThickness; 150 int width = isHorizontal ? m_innerViewportContainerLayer->size().width() - o verlayScrollbarThickness : overlayScrollbarThickness;
148 int height = isHorizontal ? overlayScrollbarThickness : m_innerViewportClipL ayer->size().height() - overlayScrollbarThickness; 151 int height = isHorizontal ? overlayScrollbarThickness : m_innerViewportConta inerLayer->size().height() - overlayScrollbarThickness;
149 152
150 scrollbarGraphicsLayer->setPosition(WebCore::IntPoint(xPosition, yPosition)) ; 153 scrollbarGraphicsLayer->setPosition(WebCore::IntPoint(xPosition, yPosition)) ;
151 scrollbarGraphicsLayer->setSize(WebCore::IntSize(width, height)); 154 scrollbarGraphicsLayer->setSize(WebCore::IntSize(width, height));
152 } 155 }
153 156
154 void PinchViewports::registerViewportLayersWithTreeView(WebLayerTreeView* layerT reeView) const 157 void PinchViewports::registerViewportLayersWithTreeView(WebLayerTreeView* layerT reeView) const
155 { 158 {
156 if (!layerTreeView) 159 if (!layerTreeView)
157 return; 160 return;
158 161
159 WebCore::RenderLayerCompositor* compositor = m_owner->compositor(); 162 WebCore::RenderLayerCompositor* compositor = m_owner->compositor();
160 ASSERT(compositor); 163 ASSERT(compositor);
161 layerTreeView->registerPinchViewportLayers( 164 layerTreeView->registerPinchViewportLayers(
162 m_innerViewportClipLayer->platformLayer(), 165 m_innerViewportContainerLayer->platformLayer(),
163 m_pageScaleLayer->platformLayer(), 166 m_pageScaleLayer->platformLayer(),
164 m_innerViewportScrollLayer->platformLayer(), 167 m_innerViewportScrollLayer->platformLayer(),
165 compositor->scrollLayer()->platformLayer(), 168 compositor->scrollLayer()->platformLayer(),
166 m_overlayScrollbarHorizontal->platformLayer(), 169 m_overlayScrollbarHorizontal->platformLayer(),
167 m_overlayScrollbarVertical->platformLayer()); 170 m_overlayScrollbarVertical->platformLayer());
168 } 171 }
169 172
170 void PinchViewports::clearViewportLayersForTreeView(WebLayerTreeView* layerTreeV iew) const 173 void PinchViewports::clearViewportLayersForTreeView(WebLayerTreeView* layerTreeV iew) const
171 { 174 {
172 if (!layerTreeView) 175 if (!layerTreeView)
173 return; 176 return;
174 177
175 layerTreeView->clearPinchViewportLayers(); 178 layerTreeView->clearPinchViewportLayers();
176 } 179 }
177 180
178 void PinchViewports::notifyAnimationStarted(const GraphicsLayer*, double time) 181 void PinchViewports::notifyAnimationStarted(const GraphicsLayer*, double time)
179 { 182 {
180 } 183 }
181 184
182 void PinchViewports::paintContents(const GraphicsLayer*, WebCore::GraphicsContex t&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect& inClip) 185 void PinchViewports::paintContents(const GraphicsLayer*, WebCore::GraphicsContex t&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect& inClip)
183 { 186 {
184 } 187 }
185 188
186 } // namespace WebKit 189 } // namespace WebKit
OLDNEW
« no previous file with comments | « Source/web/PinchViewports.h ('k') | public/platform/WebLayerTreeView.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698