OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) | 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2009 Google Inc. All rights reserved. | 7 * Copyright (C) 2009 Google Inc. All rights reserved. |
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
988 | 988 |
989 IntRect result = rects[0]; | 989 IntRect result = rects[0]; |
990 for (size_t i = 1; i < n; ++i) | 990 for (size_t i = 1; i < n; ++i) |
991 result.unite(rects[i]); | 991 result.unite(rects[i]); |
992 return result; | 992 return result; |
993 } | 993 } |
994 | 994 |
995 IntRect LayoutObject::absoluteFocusRingBoundingBoxRect() const | 995 IntRect LayoutObject::absoluteFocusRingBoundingBoxRect() const |
996 { | 996 { |
997 Vector<LayoutRect> rects; | 997 Vector<LayoutRect> rects; |
998 const LayoutBoxModelObject* container = enclosingLayer()->renderer(); | 998 const LayoutBoxModelObject* container = enclosingLayer()->layoutObject(); |
999 addFocusRingRects(rects, LayoutPoint(localToContainerPoint(FloatPoint(), con
tainer))); | 999 addFocusRingRects(rects, LayoutPoint(localToContainerPoint(FloatPoint(), con
tainer))); |
1000 return container->localToAbsoluteQuad(FloatQuad(unionRect(rects))).enclosing
BoundingBox(); | 1000 return container->localToAbsoluteQuad(FloatQuad(unionRect(rects))).enclosing
BoundingBox(); |
1001 } | 1001 } |
1002 | 1002 |
1003 FloatRect LayoutObject::absoluteBoundingBoxRectForRange(const Range* range) | 1003 FloatRect LayoutObject::absoluteBoundingBoxRectForRange(const Range* range) |
1004 { | 1004 { |
1005 if (!range || !range->startContainer()) | 1005 if (!range || !range->startContainer()) |
1006 return FloatRect(); | 1006 return FloatRect(); |
1007 | 1007 |
1008 range->ownerDocument().updateLayout(); | 1008 range->ownerDocument().updateLayout(); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1043 return adjustCompositedContainerForSpecialAncestors(enclosingCompositedConta
iner()); | 1043 return adjustCompositedContainerForSpecialAncestors(enclosingCompositedConta
iner()); |
1044 } | 1044 } |
1045 | 1045 |
1046 const LayoutBoxModelObject* LayoutObject::enclosingCompositedContainer() const | 1046 const LayoutBoxModelObject* LayoutObject::enclosingCompositedContainer() const |
1047 { | 1047 { |
1048 LayoutBoxModelObject* container = 0; | 1048 LayoutBoxModelObject* container = 0; |
1049 // FIXME: CompositingState is not necessarily up to date for many callers of
this function. | 1049 // FIXME: CompositingState is not necessarily up to date for many callers of
this function. |
1050 DisableCompositingQueryAsserts disabler; | 1050 DisableCompositingQueryAsserts disabler; |
1051 | 1051 |
1052 if (Layer* compositingLayer = enclosingLayer()->enclosingLayerForPaintInvali
dationCrossingFrameBoundaries()) | 1052 if (Layer* compositingLayer = enclosingLayer()->enclosingLayerForPaintInvali
dationCrossingFrameBoundaries()) |
1053 container = compositingLayer->renderer(); | 1053 container = compositingLayer->layoutObject(); |
1054 return container; | 1054 return container; |
1055 } | 1055 } |
1056 | 1056 |
1057 const LayoutBoxModelObject* LayoutObject::adjustCompositedContainerForSpecialAnc
estors(const LayoutBoxModelObject* paintInvalidationContainer) const | 1057 const LayoutBoxModelObject* LayoutObject::adjustCompositedContainerForSpecialAnc
estors(const LayoutBoxModelObject* paintInvalidationContainer) const |
1058 { | 1058 { |
1059 if (paintInvalidationContainer) | 1059 if (paintInvalidationContainer) |
1060 return paintInvalidationContainer; | 1060 return paintInvalidationContainer; |
1061 | 1061 |
1062 LayoutView* layoutView = view(); | 1062 LayoutView* layoutView = view(); |
1063 while (layoutView->frame()->ownerLayoutObject()) | 1063 while (layoutView->frame()->ownerLayoutObject()) |
(...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1749 if (RuntimeEnabledFeatures::fastMobileScrollingEnabled()) { | 1749 if (RuntimeEnabledFeatures::fastMobileScrollingEnabled()) { |
1750 // On low-powered/mobile devices, preventing blitting on a scroll ca
n cause noticeable delays | 1750 // On low-powered/mobile devices, preventing blitting on a scroll ca
n cause noticeable delays |
1751 // when scrolling a page with a fixed background image. As an optimi
zation, assuming there are | 1751 // when scrolling a page with a fixed background image. As an optimi
zation, assuming there are |
1752 // no fixed positoned elements on the page, we can acclerate scrolli
ng (via blitting) if we | 1752 // no fixed positoned elements on the page, we can acclerate scrolli
ng (via blitting) if we |
1753 // ignore the CSS property "background-attachment: fixed". | 1753 // ignore the CSS property "background-attachment: fixed". |
1754 shouldBlitOnFixedBackgroundImage = true; | 1754 shouldBlitOnFixedBackgroundImage = true; |
1755 } | 1755 } |
1756 bool newStyleSlowScroll = !shouldBlitOnFixedBackgroundImage && newStyle.
hasFixedBackgroundImage(); | 1756 bool newStyleSlowScroll = !shouldBlitOnFixedBackgroundImage && newStyle.
hasFixedBackgroundImage(); |
1757 bool oldStyleSlowScroll = m_style && !shouldBlitOnFixedBackgroundImage &
& m_style->hasFixedBackgroundImage(); | 1757 bool oldStyleSlowScroll = m_style && !shouldBlitOnFixedBackgroundImage &
& m_style->hasFixedBackgroundImage(); |
1758 | 1758 |
1759 bool drawsRootBackground = isDocumentElement() || (isBody() && !renderer
HasBackground(document().documentElement()->renderer())); | 1759 bool drawsRootBackground = isDocumentElement() || (isBody() && !renderer
HasBackground(document().documentElement()->layoutObject())); |
1760 if (drawsRootBackground && !shouldBlitOnFixedBackgroundImage) { | 1760 if (drawsRootBackground && !shouldBlitOnFixedBackgroundImage) { |
1761 if (view()->compositor()->supportsFixedRootBackgroundCompositing())
{ | 1761 if (view()->compositor()->supportsFixedRootBackgroundCompositing())
{ |
1762 if (newStyleSlowScroll && newStyle.hasEntirelyFixedBackground()) | 1762 if (newStyleSlowScroll && newStyle.hasEntirelyFixedBackground()) |
1763 newStyleSlowScroll = false; | 1763 newStyleSlowScroll = false; |
1764 | 1764 |
1765 if (oldStyleSlowScroll && m_style->hasEntirelyFixedBackground()) | 1765 if (oldStyleSlowScroll && m_style->hasEntirelyFixedBackground()) |
1766 oldStyleSlowScroll = false; | 1766 oldStyleSlowScroll = false; |
1767 } | 1767 } |
1768 } | 1768 } |
1769 | 1769 |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2109 void LayoutObject::computeLayerHitTestRects(LayerHitTestRects& layerRects) const | 2109 void LayoutObject::computeLayerHitTestRects(LayerHitTestRects& layerRects) const |
2110 { | 2110 { |
2111 // Figure out what layer our container is in. Any offset (or new layer) for
this | 2111 // Figure out what layer our container is in. Any offset (or new layer) for
this |
2112 // renderer within it's container will be applied in addLayerHitTestRects. | 2112 // renderer within it's container will be applied in addLayerHitTestRects. |
2113 LayoutPoint layerOffset; | 2113 LayoutPoint layerOffset; |
2114 const Layer* currentLayer = 0; | 2114 const Layer* currentLayer = 0; |
2115 | 2115 |
2116 if (!hasLayer()) { | 2116 if (!hasLayer()) { |
2117 LayoutObject* container = this->container(); | 2117 LayoutObject* container = this->container(); |
2118 currentLayer = container->enclosingLayer(); | 2118 currentLayer = container->enclosingLayer(); |
2119 if (container && currentLayer->renderer() != container) { | 2119 if (container && currentLayer->layoutObject() != container) { |
2120 layerOffset.move(container->offsetFromAncestorContainer(currentLayer
->renderer())); | 2120 layerOffset.move(container->offsetFromAncestorContainer(currentLayer
->layoutObject())); |
2121 // If the layer itself is scrolled, we have to undo the subtraction
of its scroll | 2121 // If the layer itself is scrolled, we have to undo the subtraction
of its scroll |
2122 // offset since we want the offset relative to the scrolling content
, not the | 2122 // offset since we want the offset relative to the scrolling content
, not the |
2123 // element itself. | 2123 // element itself. |
2124 if (currentLayer->renderer()->hasOverflowClip()) | 2124 if (currentLayer->layoutObject()->hasOverflowClip()) |
2125 layerOffset.move(currentLayer->layoutBox()->scrolledContentOffse
t()); | 2125 layerOffset.move(currentLayer->layoutBox()->scrolledContentOffse
t()); |
2126 } | 2126 } |
2127 } | 2127 } |
2128 | 2128 |
2129 this->addLayerHitTestRects(layerRects, currentLayer, layerOffset, LayoutRect
()); | 2129 this->addLayerHitTestRects(layerRects, currentLayer, layerOffset, LayoutRect
()); |
2130 } | 2130 } |
2131 | 2131 |
2132 void LayoutObject::addLayerHitTestRects(LayerHitTestRects& layerRects, const Lay
er* currentLayer, const LayoutPoint& layerOffset, const LayoutRect& containerRec
t) const | 2132 void LayoutObject::addLayerHitTestRects(LayerHitTestRects& layerRects, const Lay
er* currentLayer, const LayoutPoint& layerOffset, const LayoutRect& containerRec
t) const |
2133 { | 2133 { |
2134 ASSERT(currentLayer); | 2134 ASSERT(currentLayer); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2196 | 2196 |
2197 LayoutObject* LayoutObject::rendererForRootBackground() | 2197 LayoutObject* LayoutObject::rendererForRootBackground() |
2198 { | 2198 { |
2199 ASSERT(isDocumentElement()); | 2199 ASSERT(isDocumentElement()); |
2200 if (!hasBackground() && isHTMLHtmlElement(node())) { | 2200 if (!hasBackground() && isHTMLHtmlElement(node())) { |
2201 // Locate the <body> element using the DOM. This is easier than trying | 2201 // Locate the <body> element using the DOM. This is easier than trying |
2202 // to crawl around a render tree with potential :before/:after content a
nd | 2202 // to crawl around a render tree with potential :before/:after content a
nd |
2203 // anonymous blocks created by inline <body> tags etc. We can locate the
<body> | 2203 // anonymous blocks created by inline <body> tags etc. We can locate the
<body> |
2204 // render object very easily via the DOM. | 2204 // render object very easily via the DOM. |
2205 HTMLElement* body = document().body(); | 2205 HTMLElement* body = document().body(); |
2206 LayoutObject* bodyObject = isHTMLBodyElement(body) ? body->renderer() :
0; | 2206 LayoutObject* bodyObject = isHTMLBodyElement(body) ? body->layoutObject(
) : 0; |
2207 if (bodyObject) | 2207 if (bodyObject) |
2208 return bodyObject; | 2208 return bodyObject; |
2209 } | 2209 } |
2210 | 2210 |
2211 return this; | 2211 return this; |
2212 } | 2212 } |
2213 | 2213 |
2214 RespectImageOrientationEnum LayoutObject::shouldRespectImageOrientation() const | 2214 RespectImageOrientationEnum LayoutObject::shouldRespectImageOrientation() const |
2215 { | 2215 { |
2216 // Respect the image's orientation if it's being used as a full-page image o
r it's | 2216 // Respect the image's orientation if it's being used as a full-page image o
r it's |
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2706 } | 2706 } |
2707 | 2707 |
2708 PassRefPtr<LayoutStyle> LayoutObject::getUncachedPseudoStyleFromParentOrShadowHo
st() const | 2708 PassRefPtr<LayoutStyle> LayoutObject::getUncachedPseudoStyleFromParentOrShadowHo
st() const |
2709 { | 2709 { |
2710 if (!node()) | 2710 if (!node()) |
2711 return nullptr; | 2711 return nullptr; |
2712 | 2712 |
2713 if (ShadowRoot* root = node()->containingShadowRoot()) { | 2713 if (ShadowRoot* root = node()->containingShadowRoot()) { |
2714 if (root->type() == ShadowRoot::ClosedShadowRoot) { | 2714 if (root->type() == ShadowRoot::ClosedShadowRoot) { |
2715 if (Element* shadowHost = node()->shadowHost()) { | 2715 if (Element* shadowHost = node()->shadowHost()) { |
2716 return shadowHost->renderer()->getUncachedPseudoStyle(PseudoStyl
eRequest(SELECTION)); | 2716 return shadowHost->layoutObject()->getUncachedPseudoStyle(Pseudo
StyleRequest(SELECTION)); |
2717 } | 2717 } |
2718 } | 2718 } |
2719 } | 2719 } |
2720 | 2720 |
2721 return getUncachedPseudoStyle(PseudoStyleRequest(SELECTION)); | 2721 return getUncachedPseudoStyle(PseudoStyleRequest(SELECTION)); |
2722 } | 2722 } |
2723 | 2723 |
2724 void LayoutObject::getTextDecorations(unsigned decorations, AppliedTextDecoratio
n& underline, AppliedTextDecoration& overline, AppliedTextDecoration& linethroug
h, bool quirksMode, bool firstlineStyle) | 2724 void LayoutObject::getTextDecorations(unsigned decorations, AppliedTextDecoratio
n& underline, AppliedTextDecoration& overline, AppliedTextDecoration& linethroug
h, bool quirksMode, bool firstlineStyle) |
2725 { | 2725 { |
2726 LayoutObject* curr = this; | 2726 LayoutObject* curr = this; |
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3193 { | 3193 { |
3194 if (object1) { | 3194 if (object1) { |
3195 const blink::LayoutObject* root = object1; | 3195 const blink::LayoutObject* root = object1; |
3196 while (root->parent()) | 3196 while (root->parent()) |
3197 root = root->parent(); | 3197 root = root->parent(); |
3198 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); | 3198 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); |
3199 } | 3199 } |
3200 } | 3200 } |
3201 | 3201 |
3202 #endif | 3202 #endif |
OLD | NEW |