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

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: 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 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 setLocation(visibleRect().location()); 157 setLocation(visibleRect().location());
158 158
159 // TODO: We should probably be calling scaleDidChange type functions here. 159 // TODO: We should probably be calling scaleDidChange type functions here.
160 // see Page::setPageScaleFactor. 160 // see Page::setPageScaleFactor.
161 } 161 }
162 162
163 // Modifies the top of the graphics layer tree to add layers needed to support 163 // Modifies the top of the graphics layer tree to add layers needed to support
164 // the inner/outer viewport fixed-position model for pinch zoom. When finished, 164 // the inner/outer viewport fixed-position model for pinch zoom. When finished,
165 // the tree will look like this (with * denoting added layers): 165 // the tree will look like this (with * denoting added layers):
166 // 166 //
167 // *innerViewportContainerLayer (fixed pos container) 167 // *rootTransformLayer
168 // +- *pageScaleLayer 168 // +- *innerViewportContainerLayer (fixed pos container)
169 // | +- *innerViewportScrollLayer 169 // +- *pageScaleLayer
170 // | +-- overflowControlsHostLayer (root layer) 170 // | +- *innerViewportScrollLayer
171 // | +-- rootTransformLayer (optional) 171 // | +-- overflowControlsHostLayer (root layer)
172 // | +-- outerViewportContainerLayer (fixed pos container) [frame container layer in RenderLayerCompositor] 172 // | +-- outerViewportContainerLayer (fixed pos container) [frame container layer in RenderLayerCompositor]
173 // | | +-- outerViewportScrollLayer [frame scroll layer in Rend erLayerCompositor] 173 // | | +-- outerViewportScrollLayer [frame scroll layer in Rend erLayerCompositor]
174 // | | +-- content layers ... 174 // | | +-- content layers ...
175 // | +-- horizontal ScrollbarLayer (non-overlay) 175 // | +-- horizontal ScrollbarLayer (non-overlay)
176 // | +-- verticalScrollbarLayer (non-overlay) 176 // | +-- verticalScrollbarLayer (non-overlay)
177 // | +-- scroll corner (non-overlay) 177 // | +-- scroll corner (non-overlay)
178 // +- *horizontalScrollbarLayer (overlay) 178 // +- *horizontalScrollbarLayer (overlay)
179 // +- *verticalScrollbarLayer (overlay) 179 // +- *verticalScrollbarLayer (overlay)
180 // 180 //
181 void PinchViewport::attachToLayerTree(GraphicsLayer* currentLayerTreeRoot, Graph icsLayerFactory* graphicsLayerFactory) 181 void PinchViewport::attachToLayerTree(GraphicsLayer* currentLayerTreeRoot, Graph icsLayerFactory* graphicsLayerFactory)
182 { 182 {
183 TRACE_EVENT1("webkit", "PinchViewport::attachToLayerTree", "currentLayerTree Root", (bool)currentLayerTreeRoot); 183 TRACE_EVENT1("webkit", "PinchViewport::attachToLayerTree", "currentLayerTree Root", (bool)currentLayerTreeRoot);
184 if (!currentLayerTreeRoot) { 184 if (!currentLayerTreeRoot) {
185 m_innerViewportScrollLayer->removeAllChildren(); 185 m_innerViewportScrollLayer->removeAllChildren();
186 return; 186 return;
187 } 187 }
188 188
189 if (currentLayerTreeRoot->parent() && currentLayerTreeRoot->parent() == m_in nerViewportScrollLayer) 189 if (currentLayerTreeRoot->parent() && currentLayerTreeRoot->parent() == m_in nerViewportScrollLayer)
190 return; 190 return;
191 191
192 if (!m_innerViewportScrollLayer) { 192 if (!m_innerViewportScrollLayer) {
193 ASSERT(!m_overlayScrollbarHorizontal 193 ASSERT(!m_overlayScrollbarHorizontal
194 && !m_overlayScrollbarVertical 194 && !m_overlayScrollbarVertical
195 && !m_pageScaleLayer 195 && !m_pageScaleLayer
196 && !m_innerViewportContainerLayer); 196 && !m_innerViewportContainerLayer);
197 197
198 m_rootTransformLayer = GraphicsLayer::create(graphicsLayerFactory, this) ;
198 m_innerViewportContainerLayer = GraphicsLayer::create(graphicsLayerFacto ry, this); 199 m_innerViewportContainerLayer = GraphicsLayer::create(graphicsLayerFacto ry, this);
199 m_pageScaleLayer = GraphicsLayer::create(graphicsLayerFactory, this); 200 m_pageScaleLayer = GraphicsLayer::create(graphicsLayerFactory, this);
200 m_innerViewportScrollLayer = GraphicsLayer::create(graphicsLayerFactory, this); 201 m_innerViewportScrollLayer = GraphicsLayer::create(graphicsLayerFactory, this);
201 m_overlayScrollbarHorizontal = GraphicsLayer::create(graphicsLayerFactor y, this); 202 m_overlayScrollbarHorizontal = GraphicsLayer::create(graphicsLayerFactor y, this);
202 m_overlayScrollbarVertical = GraphicsLayer::create(graphicsLayerFactory, this); 203 m_overlayScrollbarVertical = GraphicsLayer::create(graphicsLayerFactory, this);
203 204
204 WebCore::ScrollingCoordinator* coordinator = m_frameHost.page().scrollin gCoordinator(); 205 WebCore::ScrollingCoordinator* coordinator = m_frameHost.page().scrollin gCoordinator();
205 ASSERT(coordinator); 206 ASSERT(coordinator);
206 coordinator->setLayerIsContainerForFixedPositionLayers(m_innerViewportSc rollLayer.get(), true); 207 coordinator->setLayerIsContainerForFixedPositionLayers(m_innerViewportSc rollLayer.get(), true);
207 208
208 // Set masks to bounds so the compositor doesn't clobber a manually 209 // Set masks to bounds so the compositor doesn't clobber a manually
209 // set inner viewport container layer size. 210 // set inner viewport container layer size.
210 m_innerViewportContainerLayer->setMasksToBounds(m_frameHost.settings().m ainFrameClipsContent()); 211 m_innerViewportContainerLayer->setMasksToBounds(m_frameHost.settings().m ainFrameClipsContent());
211 m_innerViewportContainerLayer->setSize(m_size); 212 m_innerViewportContainerLayer->setSize(m_size);
212 213
213 m_innerViewportScrollLayer->platformLayer()->setScrollClipLayer( 214 m_innerViewportScrollLayer->platformLayer()->setScrollClipLayer(
214 m_innerViewportContainerLayer->platformLayer()); 215 m_innerViewportContainerLayer->platformLayer());
215 m_innerViewportScrollLayer->platformLayer()->setUserScrollable(true, tru e); 216 m_innerViewportScrollLayer->platformLayer()->setUserScrollable(true, tru e);
216 217
218 m_rootTransformLayer->addChild(m_innerViewportContainerLayer.get());
217 m_innerViewportContainerLayer->addChild(m_pageScaleLayer.get()); 219 m_innerViewportContainerLayer->addChild(m_pageScaleLayer.get());
218 m_pageScaleLayer->addChild(m_innerViewportScrollLayer.get()); 220 m_pageScaleLayer->addChild(m_innerViewportScrollLayer.get());
219 m_innerViewportContainerLayer->addChild(m_overlayScrollbarHorizontal.get ()); 221 m_innerViewportContainerLayer->addChild(m_overlayScrollbarHorizontal.get ());
220 m_innerViewportContainerLayer->addChild(m_overlayScrollbarVertical.get() ); 222 m_innerViewportContainerLayer->addChild(m_overlayScrollbarVertical.get() );
221 223
222 // Ensure this class is set as the scroll layer's ScrollableArea. 224 // Ensure this class is set as the scroll layer's ScrollableArea.
223 coordinator->scrollableAreaScrollLayerDidChange(this); 225 coordinator->scrollableAreaScrollLayerDidChange(this);
224 226
225 // Setup the inner viewport overlay scrollbars. 227 // Setup the inner viewport overlay scrollbars.
226 setupScrollbar(WebScrollbar::Horizontal); 228 setupScrollbar(WebScrollbar::Horizontal);
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 } else if (graphicsLayer == m_overlayScrollbarVertical.get()) { 411 } else if (graphicsLayer == m_overlayScrollbarVertical.get()) {
410 name = "Overlay Scrollbar Vertical Layer"; 412 name = "Overlay Scrollbar Vertical Layer";
411 } else { 413 } else {
412 ASSERT_NOT_REACHED(); 414 ASSERT_NOT_REACHED();
413 } 415 }
414 416
415 return name; 417 return name;
416 } 418 }
417 419
418 } // namespace WebCore 420 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698