OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved. |
3 * Copyright (C) 2013 Intel Corporation. All rights reserved. | 3 * Copyright (C) 2013 Intel Corporation. All rights reserved. |
4 * | 4 * |
5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
6 * | 6 * |
7 * Other contributors: | 7 * Other contributors: |
8 * Robert O'Callahan <roc+@cs.cmu.edu> | 8 * Robert O'Callahan <roc+@cs.cmu.edu> |
9 * David Baron <dbaron@fas.harvard.edu> | 9 * David Baron <dbaron@fas.harvard.edu> |
10 * Christian Biesinger <cbiesinger@web.de> | 10 * Christian Biesinger <cbiesinger@web.de> |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 void* operator new(size_t); | 351 void* operator new(size_t); |
352 // Only safe to call from RenderLayerModelObject::destroyLayer() | 352 // Only safe to call from RenderLayerModelObject::destroyLayer() |
353 void operator delete(void*); | 353 void operator delete(void*); |
354 | 354 |
355 CompositingState compositingState() const; | 355 CompositingState compositingState() const; |
356 | 356 |
357 // This returns true if our document is in a phase of its lifestyle during w
hich | 357 // This returns true if our document is in a phase of its lifestyle during w
hich |
358 // compositing state may legally be read. | 358 // compositing state may legally be read. |
359 bool isAllowedToQueryCompositingState() const; | 359 bool isAllowedToQueryCompositingState() const; |
360 | 360 |
| 361 // This returns true if our current phase is the compositing update. |
| 362 bool isInCompositingUpdate() const; |
| 363 |
361 CompositedLayerMappingPtr compositedLayerMapping() const; | 364 CompositedLayerMappingPtr compositedLayerMapping() const; |
362 CompositedLayerMappingPtr ensureCompositedLayerMapping(); | 365 CompositedLayerMappingPtr ensureCompositedLayerMapping(); |
363 | 366 |
364 // NOTE: If you are using hasCompositedLayerMapping to determine the state o
f compositing for this layer, | 367 // NOTE: If you are using hasCompositedLayerMapping to determine the state o
f compositing for this layer, |
365 // (and not just to do bookkeeping related to the mapping like, say, allocat
ing or deallocating a mapping), | 368 // (and not just to do bookkeeping related to the mapping like, say, allocat
ing or deallocating a mapping), |
366 // then you may have incorrect logic. Use compositingState() instead. | 369 // then you may have incorrect logic. Use compositingState() instead. |
367 bool hasCompositedLayerMapping() const { return m_compositedLayerMapping.get
(); } | 370 bool hasCompositedLayerMapping() const { return m_compositedLayerMapping.get
(); } |
368 void clearCompositedLayerMapping(bool layerBeingDestroyed = false); | 371 void clearCompositedLayerMapping(bool layerBeingDestroyed = false); |
369 | 372 |
370 CompositedLayerMapping* groupedMapping() const { return m_groupedMapping; } | 373 CompositedLayerMapping* groupedMapping() const { return m_groupedMapping; } |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 | 475 |
473 RenderLayerBlendInfo& blendInfo() { return m_blendInfo; } | 476 RenderLayerBlendInfo& blendInfo() { return m_blendInfo; } |
474 | 477 |
475 void setOffsetFromSquashingLayerOrigin(IntSize offset) { m_compositingProper
ties.offsetFromSquashingLayerOrigin = offset; } | 478 void setOffsetFromSquashingLayerOrigin(IntSize offset) { m_compositingProper
ties.offsetFromSquashingLayerOrigin = offset; } |
476 IntSize offsetFromSquashingLayerOrigin() const { return m_compositingPropert
ies.offsetFromSquashingLayerOrigin; } | 479 IntSize offsetFromSquashingLayerOrigin() const { return m_compositingPropert
ies.offsetFromSquashingLayerOrigin; } |
477 | 480 |
478 bool scrollsOverflow() const; | 481 bool scrollsOverflow() const; |
479 | 482 |
480 bool hasDirectReasonsForCompositing() const { return compositingReasons() &
CompositingReasonComboAllDirectReasons; } | 483 bool hasDirectReasonsForCompositing() const { return compositingReasons() &
CompositingReasonComboAllDirectReasons; } |
481 | 484 |
| 485 void clearAncestorDependentPropertyCache(); |
| 486 |
482 private: | 487 private: |
| 488 struct AncestorDependentPropertyCache { |
| 489 AncestorDependentPropertyCache(); |
| 490 RenderObject* containingBlock; |
| 491 RenderLayer* ancestorCompositedScrollingLayer; |
| 492 RenderLayer* scrollParent; |
| 493 }; |
| 494 |
| 495 void ensureAncestorDependentPropertyCache() const; |
| 496 |
483 bool hasOverflowControls() const; | 497 bool hasOverflowControls() const; |
484 | 498 |
485 void setIsUnclippedDescendant(bool isUnclippedDescendant) { m_isUnclippedDes
cendant = isUnclippedDescendant; } | 499 void setIsUnclippedDescendant(bool isUnclippedDescendant) { m_isUnclippedDes
cendant = isUnclippedDescendant; } |
486 | 500 |
487 void setAncestorChainHasSelfPaintingLayerDescendant(); | 501 void setAncestorChainHasSelfPaintingLayerDescendant(); |
488 void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus(); | 502 void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus(); |
489 | 503 |
490 void setAncestorChainHasOutOfFlowPositionedDescendant(); | 504 void setAncestorChainHasOutOfFlowPositionedDescendant(); |
491 void dirtyAncestorChainHasOutOfFlowPositionedDescendantStatus(); | 505 void dirtyAncestorChainHasOutOfFlowPositionedDescendantStatus(); |
492 | 506 |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
571 | 585 |
572 bool hitTestContents(const HitTestRequest&, HitTestResult&, const LayoutRect
& layerBounds, const HitTestLocation&, HitTestFilter) const; | 586 bool hitTestContents(const HitTestRequest&, HitTestResult&, const LayoutRect
& layerBounds, const HitTestLocation&, HitTestFilter) const; |
573 bool hitTestContentsForFragments(const LayerFragments&, const HitTestRequest
&, HitTestResult&, const HitTestLocation&, HitTestFilter, bool& insideClipRect)
const; | 587 bool hitTestContentsForFragments(const LayerFragments&, const HitTestRequest
&, HitTestResult&, const HitTestLocation&, HitTestFilter, bool& insideClipRect)
const; |
574 RenderLayer* hitTestTransformedLayerInFragments(RenderLayer* rootLayer, Rend
erLayer* containerLayer, const HitTestRequest&, HitTestResult&, | 588 RenderLayer* hitTestTransformedLayerInFragments(RenderLayer* rootLayer, Rend
erLayer* containerLayer, const HitTestRequest&, HitTestResult&, |
575 const LayoutRect& hitTestRect, const HitTestLocation&, const HitTestingT
ransformState* = 0, double* zOffset = 0); | 589 const LayoutRect& hitTestRect, const HitTestLocation&, const HitTestingT
ransformState* = 0, double* zOffset = 0); |
576 | 590 |
577 bool childBackgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const; | 591 bool childBackgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const; |
578 | 592 |
579 bool shouldBeSelfPaintingLayer() const; | 593 bool shouldBeSelfPaintingLayer() const; |
580 | 594 |
581 private: | |
582 // FIXME: We should only create the stacking node if needed. | 595 // FIXME: We should only create the stacking node if needed. |
583 bool requiresStackingNode() const { return true; } | 596 bool requiresStackingNode() const { return true; } |
584 void updateStackingNode(); | 597 void updateStackingNode(); |
585 | 598 |
586 void updateReflectionInfo(const RenderStyle*); | 599 void updateReflectionInfo(const RenderStyle*); |
587 | 600 |
588 // FIXME: We could lazily allocate our ScrollableArea based on style propert
ies ('overflow', ...) | 601 // FIXME: We could lazily allocate our ScrollableArea based on style propert
ies ('overflow', ...) |
589 // but for now, we are always allocating it for RenderBox as it's safer. | 602 // but for now, we are always allocating it for RenderBox as it's safer. |
590 bool requiresScrollableArea() const { return renderBox(); } | 603 bool requiresScrollableArea() const { return renderBox(); } |
591 void updateScrollableArea(); | 604 void updateScrollableArea(); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
623 bool lostGroupedMapping() const { return m_compositingProperties.lostGrouped
Mapping; } | 636 bool lostGroupedMapping() const { return m_compositingProperties.lostGrouped
Mapping; } |
624 void setLostGroupedMapping(bool b) { m_compositingProperties.lostGroupedMapp
ing = b; } | 637 void setLostGroupedMapping(bool b) { m_compositingProperties.lostGroupedMapp
ing = b; } |
625 | 638 |
626 void setCompositingReasons(CompositingReasons); | 639 void setCompositingReasons(CompositingReasons); |
627 CompositingReasons compositingReasons() const { return m_compositingProperti
es.compositingReasons; } | 640 CompositingReasons compositingReasons() const { return m_compositingProperti
es.compositingReasons; } |
628 | 641 |
629 friend class CompositedLayerMapping; | 642 friend class CompositedLayerMapping; |
630 friend class RenderLayerCompositor; | 643 friend class RenderLayerCompositor; |
631 friend class RenderLayerModelObject; | 644 friend class RenderLayerModelObject; |
632 | 645 |
633 private: | |
634 LayerType m_layerType; | 646 LayerType m_layerType; |
635 | 647 |
636 // Self-painting layer is an optimization where we avoid the heavy RenderLay
er painting | 648 // Self-painting layer is an optimization where we avoid the heavy RenderLay
er painting |
637 // machinery for a RenderLayer allocated only to handle the overflow clip ca
se. | 649 // machinery for a RenderLayer allocated only to handle the overflow clip ca
se. |
638 // FIXME(crbug.com/332791): Self-painting layer should be merged into the ov
erflow-only concept. | 650 // FIXME(crbug.com/332791): Self-painting layer should be merged into the ov
erflow-only concept. |
639 unsigned m_isSelfPaintingLayer : 1; | 651 unsigned m_isSelfPaintingLayer : 1; |
640 | 652 |
641 // If have no self-painting descendants, we don't have to walk our children
during painting. This can lead to | 653 // If have no self-painting descendants, we don't have to walk our children
during painting. This can lead to |
642 // significant savings, especially if the tree has lots of non-self-painting
layers grouped together (e.g. table cells). | 654 // significant savings, especially if the tree has lots of non-self-painting
layers grouped together (e.g. table cells). |
643 unsigned m_hasSelfPaintingLayerDescendant : 1; | 655 unsigned m_hasSelfPaintingLayerDescendant : 1; |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
749 IntSize offsetFromSquashingLayerOrigin; | 761 IntSize offsetFromSquashingLayerOrigin; |
750 }; | 762 }; |
751 | 763 |
752 CompositingProperties m_compositingProperties; | 764 CompositingProperties m_compositingProperties; |
753 | 765 |
754 IntRect m_blockSelectionGapsBounds; | 766 IntRect m_blockSelectionGapsBounds; |
755 | 767 |
756 OwnPtr<CompositedLayerMapping> m_compositedLayerMapping; | 768 OwnPtr<CompositedLayerMapping> m_compositedLayerMapping; |
757 OwnPtr<RenderLayerScrollableArea> m_scrollableArea; | 769 OwnPtr<RenderLayerScrollableArea> m_scrollableArea; |
758 | 770 |
| 771 mutable OwnPtr<AncestorDependentPropertyCache> m_ancestorDependentPropertyCa
che; |
| 772 |
759 CompositedLayerMapping* m_groupedMapping; | 773 CompositedLayerMapping* m_groupedMapping; |
760 | 774 |
761 RenderLayerRepainter m_repainter; | 775 RenderLayerRepainter m_repainter; |
762 RenderLayerClipper m_clipper; // FIXME: Lazily allocate? | 776 RenderLayerClipper m_clipper; // FIXME: Lazily allocate? |
763 OwnPtr<RenderLayerStackingNode> m_stackingNode; | 777 OwnPtr<RenderLayerStackingNode> m_stackingNode; |
764 OwnPtr<RenderLayerReflectionInfo> m_reflectionInfo; | 778 OwnPtr<RenderLayerReflectionInfo> m_reflectionInfo; |
765 RenderLayerBlendInfo m_blendInfo; | 779 RenderLayerBlendInfo m_blendInfo; |
766 }; | 780 }; |
767 | 781 |
768 } // namespace WebCore | 782 } // namespace WebCore |
769 | 783 |
770 #ifndef NDEBUG | 784 #ifndef NDEBUG |
771 // Outside the WebCore namespace for ease of invocation from gdb. | 785 // Outside the WebCore namespace for ease of invocation from gdb. |
772 void showLayerTree(const WebCore::RenderLayer*); | 786 void showLayerTree(const WebCore::RenderLayer*); |
773 void showLayerTree(const WebCore::RenderObject*); | 787 void showLayerTree(const WebCore::RenderObject*); |
774 #endif | 788 #endif |
775 | 789 |
776 #endif // RenderLayer_h | 790 #endif // RenderLayer_h |
OLD | NEW |