OLD | NEW |
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 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 static inline bool isAcceleratedCanvas(const LayoutObject* renderer) | 110 static inline bool isAcceleratedCanvas(const LayoutObject* renderer) |
111 { | 111 { |
112 if (renderer->isCanvas()) { | 112 if (renderer->isCanvas()) { |
113 HTMLCanvasElement* canvas = toHTMLCanvasElement(renderer->node()); | 113 HTMLCanvasElement* canvas = toHTMLCanvasElement(renderer->node()); |
114 if (CanvasRenderingContext* context = canvas->renderingContext()) | 114 if (CanvasRenderingContext* context = canvas->renderingContext()) |
115 return context->isAccelerated(); | 115 return context->isAccelerated(); |
116 } | 116 } |
117 return false; | 117 return false; |
118 } | 118 } |
119 | 119 |
120 static bool hasBoxDecorationsOrBackgroundImage(const LayoutStyle& style) | 120 static bool hasBoxDecorationsOrBackgroundImage(const ComputedStyle& style) |
121 { | 121 { |
122 return style.hasBoxDecorations() || style.hasBackgroundImage(); | 122 return style.hasBoxDecorations() || style.hasBackgroundImage(); |
123 } | 123 } |
124 | 124 |
125 static bool contentLayerSupportsDirectBackgroundComposition(const LayoutObject*
renderer) | 125 static bool contentLayerSupportsDirectBackgroundComposition(const LayoutObject*
renderer) |
126 { | 126 { |
127 // No support for decorations - border, border-radius or outline. | 127 // No support for decorations - border, border-radius or outline. |
128 // Only simple background - solid color or transparent. | 128 // Only simple background - solid color or transparent. |
129 if (hasBoxDecorationsOrBackgroundImage(renderer->styleRef())) | 129 if (hasBoxDecorationsOrBackgroundImage(renderer->styleRef())) |
130 return false; | 130 return false; |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 m_childContainmentLayer = nullptr; | 253 m_childContainmentLayer = nullptr; |
254 m_childTransformLayer = nullptr; | 254 m_childTransformLayer = nullptr; |
255 m_maskLayer = nullptr; | 255 m_maskLayer = nullptr; |
256 m_childClippingMaskLayer = nullptr; | 256 m_childClippingMaskLayer = nullptr; |
257 | 257 |
258 m_scrollingLayer = nullptr; | 258 m_scrollingLayer = nullptr; |
259 m_scrollingContentsLayer = nullptr; | 259 m_scrollingContentsLayer = nullptr; |
260 m_scrollingBlockSelectionLayer = nullptr; | 260 m_scrollingBlockSelectionLayer = nullptr; |
261 } | 261 } |
262 | 262 |
263 void CompositedDeprecatedPaintLayerMapping::updateOpacity(const LayoutStyle& sty
le) | 263 void CompositedDeprecatedPaintLayerMapping::updateOpacity(const ComputedStyle& s
tyle) |
264 { | 264 { |
265 m_graphicsLayer->setOpacity(compositingOpacity(style.opacity())); | 265 m_graphicsLayer->setOpacity(compositingOpacity(style.opacity())); |
266 } | 266 } |
267 | 267 |
268 void CompositedDeprecatedPaintLayerMapping::updateTransform(const LayoutStyle& s
tyle) | 268 void CompositedDeprecatedPaintLayerMapping::updateTransform(const ComputedStyle&
style) |
269 { | 269 { |
270 // FIXME: This could use m_owningLayer.transform(), but that currently has t
ransform-origin | 270 // FIXME: This could use m_owningLayer.transform(), but that currently has t
ransform-origin |
271 // baked into it, and we don't want that. | 271 // baked into it, and we don't want that. |
272 TransformationMatrix t; | 272 TransformationMatrix t; |
273 if (m_owningLayer.hasTransformRelatedProperty()) { | 273 if (m_owningLayer.hasTransformRelatedProperty()) { |
274 style.applyTransform(t, LayoutSize(toLayoutBox(layoutObject())->pixelSna
ppedSize()), LayoutStyle::ExcludeTransformOrigin); | 274 style.applyTransform(t, LayoutSize(toLayoutBox(layoutObject())->pixelSna
ppedSize()), ComputedStyle::ExcludeTransformOrigin); |
275 makeMatrixRenderable(t, compositor()->hasAcceleratedCompositing()); | 275 makeMatrixRenderable(t, compositor()->hasAcceleratedCompositing()); |
276 } | 276 } |
277 | 277 |
278 m_graphicsLayer->setTransform(t); | 278 m_graphicsLayer->setTransform(t); |
279 } | 279 } |
280 | 280 |
281 void CompositedDeprecatedPaintLayerMapping::updateFilters(const LayoutStyle& sty
le) | 281 void CompositedDeprecatedPaintLayerMapping::updateFilters(const ComputedStyle& s
tyle) |
282 { | 282 { |
283 m_graphicsLayer->setFilters(owningLayer().computeFilterOperations(style)); | 283 m_graphicsLayer->setFilters(owningLayer().computeFilterOperations(style)); |
284 } | 284 } |
285 | 285 |
286 void CompositedDeprecatedPaintLayerMapping::updateLayerBlendMode(const LayoutSty
le& style) | 286 void CompositedDeprecatedPaintLayerMapping::updateLayerBlendMode(const ComputedS
tyle& style) |
287 { | 287 { |
288 setBlendMode(style.blendMode()); | 288 setBlendMode(style.blendMode()); |
289 } | 289 } |
290 | 290 |
291 void CompositedDeprecatedPaintLayerMapping::updateIsRootForIsolatedGroup() | 291 void CompositedDeprecatedPaintLayerMapping::updateIsRootForIsolatedGroup() |
292 { | 292 { |
293 bool isolate = m_owningLayer.shouldIsolateCompositedDescendants(); | 293 bool isolate = m_owningLayer.shouldIsolateCompositedDescendants(); |
294 | 294 |
295 // non stacking context layers should never isolate | 295 // non stacking context layers should never isolate |
296 ASSERT(m_owningLayer.stackingNode()->isStackingContext() || !isolate); | 296 ASSERT(m_owningLayer.stackingNode()->isStackingContext() || !isolate); |
297 | 297 |
298 m_graphicsLayer->setIsRootForIsolatedGroup(isolate); | 298 m_graphicsLayer->setIsRootForIsolatedGroup(isolate); |
299 } | 299 } |
300 | 300 |
301 void CompositedDeprecatedPaintLayerMapping::updateScrollBlocksOn(const LayoutSty
le& style) | 301 void CompositedDeprecatedPaintLayerMapping::updateScrollBlocksOn(const ComputedS
tyle& style) |
302 { | 302 { |
303 // Note that blink determines the default scroll blocking policy, even | 303 // Note that blink determines the default scroll blocking policy, even |
304 // when the scroll-blocks-on CSS feature isn't enabled. | 304 // when the scroll-blocks-on CSS feature isn't enabled. |
305 WebScrollBlocksOn blockingMode = WebScrollBlocksOnStartTouch | WebScrollBloc
ksOnWheelEvent; | 305 WebScrollBlocksOn blockingMode = WebScrollBlocksOnStartTouch | WebScrollBloc
ksOnWheelEvent; |
306 | 306 |
307 if (RuntimeEnabledFeatures::cssScrollBlocksOnEnabled()) | 307 if (RuntimeEnabledFeatures::cssScrollBlocksOnEnabled()) |
308 blockingMode = style.scrollBlocksOn(); | 308 blockingMode = style.scrollBlocksOn(); |
309 | 309 |
310 m_graphicsLayer->setScrollBlocksOn(blockingMode); | 310 m_graphicsLayer->setScrollBlocksOn(blockingMode); |
311 } | 311 } |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 if (updateScrollingLayers(m_owningLayer.needsCompositedScrolling())) { | 443 if (updateScrollingLayers(m_owningLayer.needsCompositedScrolling())) { |
444 layerConfigChanged = true; | 444 layerConfigChanged = true; |
445 scrollingConfigChanged = true; | 445 scrollingConfigChanged = true; |
446 } | 446 } |
447 | 447 |
448 if (updateOverflowControlsLayers(requiresHorizontalScrollbarLayer(), require
sVerticalScrollbarLayer(), requiresScrollCornerLayer(), needsAncestorClip)) | 448 if (updateOverflowControlsLayers(requiresHorizontalScrollbarLayer(), require
sVerticalScrollbarLayer(), requiresScrollCornerLayer(), needsAncestorClip)) |
449 layerConfigChanged = true; | 449 layerConfigChanged = true; |
450 | 450 |
451 bool hasPerspective = false; | 451 bool hasPerspective = false; |
452 // FIXME: Can |style| be really null that late in the DocumentCycle? | 452 // FIXME: Can |style| be really null that late in the DocumentCycle? |
453 if (const LayoutStyle* style = renderer->style()) | 453 if (const ComputedStyle* style = renderer->style()) |
454 hasPerspective = style->hasPerspective(); | 454 hasPerspective = style->hasPerspective(); |
455 bool needsChildTransformLayer = hasPerspective && (layerForChildrenTransform
() == m_childTransformLayer.get()) && renderer->isBox(); | 455 bool needsChildTransformLayer = hasPerspective && (layerForChildrenTransform
() == m_childTransformLayer.get()) && renderer->isBox(); |
456 if (updateChildTransformLayer(needsChildTransformLayer)) | 456 if (updateChildTransformLayer(needsChildTransformLayer)) |
457 layerConfigChanged = true; | 457 layerConfigChanged = true; |
458 | 458 |
459 if (updateSquashingLayers(!m_squashedLayers.isEmpty())) | 459 if (updateSquashingLayers(!m_squashedLayers.isEmpty())) |
460 layerConfigChanged = true; | 460 layerConfigChanged = true; |
461 | 461 |
462 updateScrollParent(scrollParent); | 462 updateScrollParent(scrollParent); |
463 updateClipParent(); | 463 updateClipParent(); |
(...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1473 // should-flatten-transform value (the other layers' transforms don't matter
here). | 1473 // should-flatten-transform value (the other layers' transforms don't matter
here). |
1474 UpdateShouldFlattenTransformFunctor functor = { !m_owningLayer.shouldPreserv
e3D() }; | 1474 UpdateShouldFlattenTransformFunctor functor = { !m_owningLayer.shouldPreserv
e3D() }; |
1475 ApplyToGraphicsLayersMode mode = ApplyToLayersAffectedByPreserve3D; | 1475 ApplyToGraphicsLayersMode mode = ApplyToLayersAffectedByPreserve3D; |
1476 ApplyToGraphicsLayers(this, functor, mode); | 1476 ApplyToGraphicsLayers(this, functor, mode); |
1477 | 1477 |
1478 // Note, if we apply perspective, we have to set should flatten differently | 1478 // Note, if we apply perspective, we have to set should flatten differently |
1479 // so that the transform propagates to child layers correctly. | 1479 // so that the transform propagates to child layers correctly. |
1480 if (GraphicsLayer* childTransformLayer = layerForChildrenTransform()) { | 1480 if (GraphicsLayer* childTransformLayer = layerForChildrenTransform()) { |
1481 bool hasPerspective = false; | 1481 bool hasPerspective = false; |
1482 // FIXME: Can |style| be really null here? | 1482 // FIXME: Can |style| be really null here? |
1483 if (const LayoutStyle* style = m_owningLayer.layoutObject()->style()) | 1483 if (const ComputedStyle* style = m_owningLayer.layoutObject()->style()) |
1484 hasPerspective = style->hasPerspective(); | 1484 hasPerspective = style->hasPerspective(); |
1485 if (hasPerspective) | 1485 if (hasPerspective) |
1486 childTransformLayer->setShouldFlattenTransform(false); | 1486 childTransformLayer->setShouldFlattenTransform(false); |
1487 | 1487 |
1488 // Note, if the target is the scrolling layer, we need to ensure that th
e | 1488 // Note, if the target is the scrolling layer, we need to ensure that th
e |
1489 // scrolling content layer doesn't flatten the transform. (It would be n
ice | 1489 // scrolling content layer doesn't flatten the transform. (It would be n
ice |
1490 // if we could apply transform to the scrolling content layer, but that'
s | 1490 // if we could apply transform to the scrolling content layer, but that'
s |
1491 // too late, we need the children transform to be applied _before_ the | 1491 // too late, we need the children transform to be applied _before_ the |
1492 // scrolling offset.) | 1492 // scrolling offset.) |
1493 if (childTransformLayer == m_scrollingLayer.get()) { | 1493 if (childTransformLayer == m_scrollingLayer.get()) { |
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1916 updateDrawsContent(); | 1916 updateDrawsContent(); |
1917 | 1917 |
1918 // Image animation is "lazy", in that it automatically stops unless someone
is drawing | 1918 // Image animation is "lazy", in that it automatically stops unless someone
is drawing |
1919 // the image. So we have to kick the animation each time; this has the downs
ide that the | 1919 // the image. So we have to kick the animation each time; this has the downs
ide that the |
1920 // image will keep animating, even if its layer is not visible. | 1920 // image will keep animating, even if its layer is not visible. |
1921 image->startAnimation(); | 1921 image->startAnimation(); |
1922 } | 1922 } |
1923 | 1923 |
1924 FloatPoint3D CompositedDeprecatedPaintLayerMapping::computeTransformOrigin(const
IntRect& borderBox) const | 1924 FloatPoint3D CompositedDeprecatedPaintLayerMapping::computeTransformOrigin(const
IntRect& borderBox) const |
1925 { | 1925 { |
1926 const LayoutStyle& style = layoutObject()->styleRef(); | 1926 const ComputedStyle& style = layoutObject()->styleRef(); |
1927 | 1927 |
1928 FloatPoint3D origin; | 1928 FloatPoint3D origin; |
1929 origin.setX(floatValueForLength(style.transformOriginX(), borderBox.width())
); | 1929 origin.setX(floatValueForLength(style.transformOriginX(), borderBox.width())
); |
1930 origin.setY(floatValueForLength(style.transformOriginY(), borderBox.height()
)); | 1930 origin.setY(floatValueForLength(style.transformOriginY(), borderBox.height()
)); |
1931 origin.setZ(style.transformOriginZ()); | 1931 origin.setZ(style.transformOriginZ()); |
1932 | 1932 |
1933 return origin; | 1933 return origin; |
1934 } | 1934 } |
1935 | 1935 |
1936 // Return the offset from the top-left of this compositing layer at which the | 1936 // Return the offset from the top-left of this compositing layer at which the |
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2373 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) { | 2373 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) { |
2374 name = "Scrolling Block Selection Layer"; | 2374 name = "Scrolling Block Selection Layer"; |
2375 } else { | 2375 } else { |
2376 ASSERT_NOT_REACHED(); | 2376 ASSERT_NOT_REACHED(); |
2377 } | 2377 } |
2378 | 2378 |
2379 return name; | 2379 return name; |
2380 } | 2380 } |
2381 | 2381 |
2382 } // namespace blink | 2382 } // namespace blink |
OLD | NEW |