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

Side by Side Diff: Source/core/frame/PinchViewport.cpp

Issue 308183002: Made root translation layer the root when using pinch virtual viewport. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixed unit test Created 6 years, 6 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
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 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 setLocation(visibleRect().location()); 188 setLocation(visibleRect().location());
189 189
190 // TODO: We should probably be calling scaleDidChange type functions here. 190 // TODO: We should probably be calling scaleDidChange type functions here.
191 // see Page::setPageScaleFactor. 191 // see Page::setPageScaleFactor.
192 } 192 }
193 193
194 // Modifies the top of the graphics layer tree to add layers needed to support 194 // Modifies the top of the graphics layer tree to add layers needed to support
195 // the inner/outer viewport fixed-position model for pinch zoom. When finished, 195 // the inner/outer viewport fixed-position model for pinch zoom. When finished,
196 // the tree will look like this (with * denoting added layers): 196 // the tree will look like this (with * denoting added layers):
197 // 197 //
198 // *innerViewportContainerLayer (fixed pos container) 198 // *rootTransformLayer
199 // +- *pageScaleLayer 199 // +- *innerViewportContainerLayer (fixed pos container)
200 // | +- *innerViewportScrollLayer 200 // +- *pageScaleLayer
201 // | +-- overflowControlsHostLayer (root layer) 201 // | +- *innerViewportScrollLayer
202 // | +-- rootTransformLayer (optional) 202 // | +-- overflowControlsHostLayer (root layer)
203 // | +-- outerViewportContainerLayer (fixed pos container) [frame container layer in RenderLayerCompositor] 203 // | +-- outerViewportContainerLayer (fixed pos container) [frame container layer in RenderLayerCompositor]
204 // | | +-- outerViewportScrollLayer [frame scroll layer in Rend erLayerCompositor] 204 // | | +-- outerViewportScrollLayer [frame scroll layer in Rend erLayerCompositor]
205 // | | +-- content layers ... 205 // | | +-- content layers ...
206 // | +-- horizontal ScrollbarLayer (non-overlay) 206 // | +-- horizontal ScrollbarLayer (non-overlay)
207 // | +-- verticalScrollbarLayer (non-overlay) 207 // | +-- verticalScrollbarLayer (non-overlay)
208 // | +-- scroll corner (non-overlay) 208 // | +-- scroll corner (non-overlay)
209 // +- *horizontalScrollbarLayer (overlay) 209 // +- *horizontalScrollbarLayer (overlay)
210 // +- *verticalScrollbarLayer (overlay) 210 // +- *verticalScrollbarLayer (overlay)
211 // 211 //
212 void PinchViewport::attachToLayerTree(GraphicsLayer* currentLayerTreeRoot, Graph icsLayerFactory* graphicsLayerFactory) 212 void PinchViewport::attachToLayerTree(GraphicsLayer* currentLayerTreeRoot, Graph icsLayerFactory* graphicsLayerFactory)
213 { 213 {
214 TRACE_EVENT1("webkit", "PinchViewport::attachToLayerTree", "currentLayerTree Root", (bool)currentLayerTreeRoot); 214 TRACE_EVENT1("webkit", "PinchViewport::attachToLayerTree", "currentLayerTree Root", (bool)currentLayerTreeRoot);
215 if (!currentLayerTreeRoot) { 215 if (!currentLayerTreeRoot) {
216 m_innerViewportScrollLayer->removeAllChildren(); 216 m_innerViewportScrollLayer->removeAllChildren();
217 return; 217 return;
218 } 218 }
219 219
220 if (currentLayerTreeRoot->parent() && currentLayerTreeRoot->parent() == m_in nerViewportScrollLayer) 220 if (currentLayerTreeRoot->parent() && currentLayerTreeRoot->parent() == m_in nerViewportScrollLayer)
221 return; 221 return;
222 222
223 if (!m_innerViewportScrollLayer) { 223 if (!m_innerViewportScrollLayer) {
224 ASSERT(!m_overlayScrollbarHorizontal 224 ASSERT(!m_overlayScrollbarHorizontal
225 && !m_overlayScrollbarVertical 225 && !m_overlayScrollbarVertical
226 && !m_pageScaleLayer 226 && !m_pageScaleLayer
227 && !m_innerViewportContainerLayer); 227 && !m_innerViewportContainerLayer);
228 228
229 // FIXME: The root transform layer should only be created on demand.
230 m_rootTransformLayer = GraphicsLayer::create(graphicsLayerFactory, this) ;
229 m_innerViewportContainerLayer = GraphicsLayer::create(graphicsLayerFacto ry, this); 231 m_innerViewportContainerLayer = GraphicsLayer::create(graphicsLayerFacto ry, this);
230 m_pageScaleLayer = GraphicsLayer::create(graphicsLayerFactory, this); 232 m_pageScaleLayer = GraphicsLayer::create(graphicsLayerFactory, this);
231 m_innerViewportScrollLayer = GraphicsLayer::create(graphicsLayerFactory, this); 233 m_innerViewportScrollLayer = GraphicsLayer::create(graphicsLayerFactory, this);
232 m_overlayScrollbarHorizontal = GraphicsLayer::create(graphicsLayerFactor y, this); 234 m_overlayScrollbarHorizontal = GraphicsLayer::create(graphicsLayerFactor y, this);
233 m_overlayScrollbarVertical = GraphicsLayer::create(graphicsLayerFactory, this); 235 m_overlayScrollbarVertical = GraphicsLayer::create(graphicsLayerFactory, this);
234 236
235 WebCore::ScrollingCoordinator* coordinator = m_frameHost.page().scrollin gCoordinator(); 237 WebCore::ScrollingCoordinator* coordinator = m_frameHost.page().scrollin gCoordinator();
236 ASSERT(coordinator); 238 ASSERT(coordinator);
237 coordinator->setLayerIsContainerForFixedPositionLayers(m_innerViewportSc rollLayer.get(), true); 239 coordinator->setLayerIsContainerForFixedPositionLayers(m_innerViewportSc rollLayer.get(), true);
238 240
239 // Set masks to bounds so the compositor doesn't clobber a manually 241 // Set masks to bounds so the compositor doesn't clobber a manually
240 // set inner viewport container layer size. 242 // set inner viewport container layer size.
241 m_innerViewportContainerLayer->setMasksToBounds(m_frameHost.settings().m ainFrameClipsContent()); 243 m_innerViewportContainerLayer->setMasksToBounds(m_frameHost.settings().m ainFrameClipsContent());
242 m_innerViewportContainerLayer->setSize(m_size); 244 m_innerViewportContainerLayer->setSize(m_size);
243 245
244 m_innerViewportScrollLayer->platformLayer()->setScrollClipLayer( 246 m_innerViewportScrollLayer->platformLayer()->setScrollClipLayer(
245 m_innerViewportContainerLayer->platformLayer()); 247 m_innerViewportContainerLayer->platformLayer());
246 m_innerViewportScrollLayer->platformLayer()->setUserScrollable(true, tru e); 248 m_innerViewportScrollLayer->platformLayer()->setUserScrollable(true, tru e);
247 249
250 m_rootTransformLayer->addChild(m_innerViewportContainerLayer.get());
248 m_innerViewportContainerLayer->addChild(m_pageScaleLayer.get()); 251 m_innerViewportContainerLayer->addChild(m_pageScaleLayer.get());
249 m_pageScaleLayer->addChild(m_innerViewportScrollLayer.get()); 252 m_pageScaleLayer->addChild(m_innerViewportScrollLayer.get());
250 m_innerViewportContainerLayer->addChild(m_overlayScrollbarHorizontal.get ()); 253 m_innerViewportContainerLayer->addChild(m_overlayScrollbarHorizontal.get ());
251 m_innerViewportContainerLayer->addChild(m_overlayScrollbarVertical.get() ); 254 m_innerViewportContainerLayer->addChild(m_overlayScrollbarVertical.get() );
252 255
253 // Ensure this class is set as the scroll layer's ScrollableArea. 256 // Ensure this class is set as the scroll layer's ScrollableArea.
254 coordinator->scrollableAreaScrollLayerDidChange(this); 257 coordinator->scrollableAreaScrollLayerDidChange(this);
255 258
256 // Setup the inner viewport overlay scrollbars. 259 // Setup the inner viewport overlay scrollbars.
257 setupScrollbar(WebScrollbar::Horizontal); 260 setupScrollbar(WebScrollbar::Horizontal);
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 } else if (graphicsLayer == m_overlayScrollbarVertical.get()) { 443 } else if (graphicsLayer == m_overlayScrollbarVertical.get()) {
441 name = "Overlay Scrollbar Vertical Layer"; 444 name = "Overlay Scrollbar Vertical Layer";
442 } else { 445 } else {
443 ASSERT_NOT_REACHED(); 446 ASSERT_NOT_REACHED();
444 } 447 }
445 448
446 return name; 449 return name;
447 } 450 }
448 451
449 } // namespace WebCore 452 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/frame/PinchViewport.h ('k') | Source/core/rendering/compositing/RenderLayerCompositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698