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

Side by Side Diff: Source/core/rendering/compositing/CompositedLayerMapping.cpp

Issue 784453003: Initial scroll-blocks-on compositor integration (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Eliminate scrollbars from iframe test for cross-platform output consistency Created 5 years, 11 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2009, 2010, 2011 Apple 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 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 #endif 229 #endif
230 230
231 updateOpacity(renderer()->style()); 231 updateOpacity(renderer()->style());
232 updateTransform(renderer()->style()); 232 updateTransform(renderer()->style());
233 updateFilters(renderer()->style()); 233 updateFilters(renderer()->style());
234 234
235 if (RuntimeEnabledFeatures::cssCompositingEnabled()) { 235 if (RuntimeEnabledFeatures::cssCompositingEnabled()) {
236 updateLayerBlendMode(renderer()->style()); 236 updateLayerBlendMode(renderer()->style());
237 updateIsRootForIsolatedGroup(); 237 updateIsRootForIsolatedGroup();
238 } 238 }
239
240 updateScrollBlocksOn(renderer()->style());
239 } 241 }
240 242
241 void CompositedLayerMapping::destroyGraphicsLayers() 243 void CompositedLayerMapping::destroyGraphicsLayers()
242 { 244 {
243 if (m_graphicsLayer) 245 if (m_graphicsLayer)
244 m_graphicsLayer->removeFromParent(); 246 m_graphicsLayer->removeFromParent();
245 247
246 m_ancestorClippingLayer = nullptr; 248 m_ancestorClippingLayer = nullptr;
247 m_graphicsLayer = nullptr; 249 m_graphicsLayer = nullptr;
248 m_foregroundLayer = nullptr; 250 m_foregroundLayer = nullptr;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 void CompositedLayerMapping::updateIsRootForIsolatedGroup() 290 void CompositedLayerMapping::updateIsRootForIsolatedGroup()
289 { 291 {
290 bool isolate = m_owningLayer.shouldIsolateCompositedDescendants(); 292 bool isolate = m_owningLayer.shouldIsolateCompositedDescendants();
291 293
292 // non stacking context layers should never isolate 294 // non stacking context layers should never isolate
293 ASSERT(m_owningLayer.stackingNode()->isStackingContext() || !isolate); 295 ASSERT(m_owningLayer.stackingNode()->isStackingContext() || !isolate);
294 296
295 m_graphicsLayer->setIsRootForIsolatedGroup(isolate); 297 m_graphicsLayer->setIsRootForIsolatedGroup(isolate);
296 } 298 }
297 299
300 void CompositedLayerMapping::updateScrollBlocksOn(const RenderStyle* style)
301 {
302 // Note that blink determines the default scroll blocking policy, even
303 // when the scroll-blocks-on CSS feature isn't enabled.
304 WebScrollBlocksOn blockingMode = WebScrollBlocksOnStartTouch | WebScrollBloc ksOnWheelEvent;
305
306 if (RuntimeEnabledFeatures::cssScrollBlocksOnEnabled())
307 blockingMode = style->scrollBlocksOn();
308
309 m_graphicsLayer->setScrollBlocksOn(blockingMode);
310 }
311
298 void CompositedLayerMapping::updateContentsOpaque() 312 void CompositedLayerMapping::updateContentsOpaque()
299 { 313 {
300 ASSERT(m_isMainFrameRenderViewLayer || !m_backgroundLayer); 314 ASSERT(m_isMainFrameRenderViewLayer || !m_backgroundLayer);
301 if (isAcceleratedCanvas(renderer())) { 315 if (isAcceleratedCanvas(renderer())) {
302 // Determine whether the rendering context's external texture layer is o paque. 316 // Determine whether the rendering context's external texture layer is o paque.
303 CanvasRenderingContext* context = toHTMLCanvasElement(renderer()->node() )->renderingContext(); 317 CanvasRenderingContext* context = toHTMLCanvasElement(renderer()->node() )->renderingContext();
304 if (!context->hasAlpha()) 318 if (!context->hasAlpha())
305 m_graphicsLayer->setContentsOpaque(true); 319 m_graphicsLayer->setContentsOpaque(true);
306 else if (WebLayer* layer = context->platformLayer()) 320 else if (WebLayer* layer = context->platformLayer())
307 m_graphicsLayer->setContentsOpaque(!Color(layer->backgroundColor()). hasAlpha()); 321 m_graphicsLayer->setContentsOpaque(!Color(layer->backgroundColor()). hasAlpha());
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 updateBackgroundColor(); 722 updateBackgroundColor();
709 updateDrawsContent(); 723 updateDrawsContent();
710 updateContentsOpaque(); 724 updateContentsOpaque();
711 updateAfterPartResize(); 725 updateAfterPartResize();
712 updateRenderingContext(); 726 updateRenderingContext();
713 updateShouldFlattenTransform(); 727 updateShouldFlattenTransform();
714 updateChildrenTransform(); 728 updateChildrenTransform();
715 updateScrollParent(compositor()->preferCompositingToLCDTextEnabled() ? m_own ingLayer.scrollParent() : 0); 729 updateScrollParent(compositor()->preferCompositingToLCDTextEnabled() ? m_own ingLayer.scrollParent() : 0);
716 registerScrollingLayers(); 730 registerScrollingLayers();
717 731
732 updateScrollBlocksOn(renderer()->style());
733
718 updateCompositingReasons(); 734 updateCompositingReasons();
719 } 735 }
720 736
721 void CompositedLayerMapping::updateMainGraphicsLayerGeometry(const IntRect& rela tiveCompositingBounds, const IntRect& localCompositingBounds, const IntPoint& gr aphicsLayerParentLocation) 737 void CompositedLayerMapping::updateMainGraphicsLayerGeometry(const IntRect& rela tiveCompositingBounds, const IntRect& localCompositingBounds, const IntPoint& gr aphicsLayerParentLocation)
722 { 738 {
723 m_graphicsLayer->setPosition(FloatPoint(relativeCompositingBounds.location() - graphicsLayerParentLocation)); 739 m_graphicsLayer->setPosition(FloatPoint(relativeCompositingBounds.location() - graphicsLayerParentLocation));
724 m_graphicsLayer->setOffsetFromRenderer(toIntSize(localCompositingBounds.loca tion())); 740 m_graphicsLayer->setOffsetFromRenderer(toIntSize(localCompositingBounds.loca tion()));
725 741
726 FloatSize oldSize = m_graphicsLayer->size(); 742 FloatSize oldSize = m_graphicsLayer->size();
727 const IntSize& contentsSize = relativeCompositingBounds.size(); 743 const IntSize& contentsSize = relativeCompositingBounds.size();
(...skipping 1590 matching lines...) Expand 10 before | Expand all | Expand 10 after
2318 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) { 2334 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) {
2319 name = "Scrolling Block Selection Layer"; 2335 name = "Scrolling Block Selection Layer";
2320 } else { 2336 } else {
2321 ASSERT_NOT_REACHED(); 2337 ASSERT_NOT_REACHED();
2322 } 2338 }
2323 2339
2324 return name; 2340 return name;
2325 } 2341 }
2326 2342
2327 } // namespace blink 2343 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698