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) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r
ights reserved. |
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. |
9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. |
(...skipping 1099 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1110 | 1110 |
1111 String mimeType = suggestedMIMEType(); | 1111 String mimeType = suggestedMIMEType(); |
1112 if (!mimeType.isEmpty()) | 1112 if (!mimeType.isEmpty()) |
1113 return AtomicString(mimeType); | 1113 return AtomicString(mimeType); |
1114 | 1114 |
1115 return AtomicString("application/xml"); | 1115 return AtomicString("application/xml"); |
1116 } | 1116 } |
1117 | 1117 |
1118 Element* Document::elementFromPoint(int x, int y) const | 1118 Element* Document::elementFromPoint(int x, int y) const |
1119 { | 1119 { |
1120 if (!layoutView()) | 1120 if (layoutViewItem().isNull()) |
1121 return 0; | 1121 return 0; |
1122 | 1122 |
1123 return TreeScope::elementFromPoint(x, y); | 1123 return TreeScope::elementFromPoint(x, y); |
1124 } | 1124 } |
1125 | 1125 |
1126 HeapVector<Member<Element>> Document::elementsFromPoint(int x, int y) const | 1126 HeapVector<Member<Element>> Document::elementsFromPoint(int x, int y) const |
1127 { | 1127 { |
1128 if (!layoutView()) | 1128 if (layoutViewItem().isNull()) |
1129 return HeapVector<Member<Element>>(); | 1129 return HeapVector<Member<Element>>(); |
1130 return TreeScope::elementsFromPoint(x, y); | 1130 return TreeScope::elementsFromPoint(x, y); |
1131 } | 1131 } |
1132 | 1132 |
1133 Range* Document::caretRangeFromPoint(int x, int y) | 1133 Range* Document::caretRangeFromPoint(int x, int y) |
1134 { | 1134 { |
1135 if (!layoutView()) | 1135 if (layoutViewItem().isNull()) |
1136 return nullptr; | 1136 return nullptr; |
1137 | 1137 |
1138 HitTestResult result = hitTestInDocument(this, x, y); | 1138 HitTestResult result = hitTestInDocument(this, x, y); |
1139 PositionWithAffinity positionWithAffinity = result.position(); | 1139 PositionWithAffinity positionWithAffinity = result.position(); |
1140 if (positionWithAffinity.position().isNull()) | 1140 if (positionWithAffinity.position().isNull()) |
1141 return nullptr; | 1141 return nullptr; |
1142 | 1142 |
1143 Position rangeCompliantPosition = positionWithAffinity.position().parentAnch
oredEquivalent(); | 1143 Position rangeCompliantPosition = positionWithAffinity.position().parentAnch
oredEquivalent(); |
1144 return Range::createAdjustedToTreeScope(*this, rangeCompliantPosition); | 1144 return Range::createAdjustedToTreeScope(*this, rangeCompliantPosition); |
1145 } | 1145 } |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1421 bool Document::needsLayoutTreeUpdate() const | 1421 bool Document::needsLayoutTreeUpdate() const |
1422 { | 1422 { |
1423 if (!isActive() || !view()) | 1423 if (!isActive() || !view()) |
1424 return false; | 1424 return false; |
1425 if (needsFullLayoutTreeUpdate()) | 1425 if (needsFullLayoutTreeUpdate()) |
1426 return true; | 1426 return true; |
1427 if (childNeedsStyleRecalc()) | 1427 if (childNeedsStyleRecalc()) |
1428 return true; | 1428 return true; |
1429 if (childNeedsStyleInvalidation()) | 1429 if (childNeedsStyleInvalidation()) |
1430 return true; | 1430 return true; |
1431 if (layoutView()->wasNotifiedOfSubtreeChange()) | 1431 if (layoutViewItem().wasNotifiedOfSubtreeChange()) |
1432 return true; | 1432 return true; |
1433 return false; | 1433 return false; |
1434 } | 1434 } |
1435 | 1435 |
1436 bool Document::needsFullLayoutTreeUpdate() const | 1436 bool Document::needsFullLayoutTreeUpdate() const |
1437 { | 1437 { |
1438 if (!isActive() || !view()) | 1438 if (!isActive() || !view()) |
1439 return false; | 1439 return false; |
1440 if (!m_useElementsNeedingUpdate.isEmpty()) | 1440 if (!m_useElementsNeedingUpdate.isEmpty()) |
1441 return true; | 1441 return true; |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1598 if (overflowY == OverflowVisible) | 1598 if (overflowY == OverflowVisible) |
1599 overflowY = OverflowAuto; | 1599 overflowY = OverflowAuto; |
1600 // Column-gap is (ab)used by the current paged overflow implementation (
in lack of other | 1600 // Column-gap is (ab)used by the current paged overflow implementation (
in lack of other |
1601 // ways to specify gaps between pages), so we have to propagate it too. | 1601 // ways to specify gaps between pages), so we have to propagate it too. |
1602 columnGap = overflowStyle->columnGap(); | 1602 columnGap = overflowStyle->columnGap(); |
1603 } | 1603 } |
1604 | 1604 |
1605 ScrollSnapType snapType = overflowStyle->getScrollSnapType(); | 1605 ScrollSnapType snapType = overflowStyle->getScrollSnapType(); |
1606 const LengthPoint& snapDestination = overflowStyle->scrollSnapDestination(); | 1606 const LengthPoint& snapDestination = overflowStyle->scrollSnapDestination(); |
1607 | 1607 |
1608 RefPtr<ComputedStyle> documentStyle = layoutView()->mutableStyle(); | 1608 RefPtr<ComputedStyle> documentStyle = layoutViewItem().mutableStyle(); |
1609 if (documentStyle->getWritingMode() != rootWritingMode | 1609 if (documentStyle->getWritingMode() != rootWritingMode |
1610 || documentStyle->direction() != rootDirection | 1610 || documentStyle->direction() != rootDirection |
1611 || documentStyle->visitedDependentColor(CSSPropertyBackgroundColor) != b
ackgroundColor | 1611 || documentStyle->visitedDependentColor(CSSPropertyBackgroundColor) != b
ackgroundColor |
1612 || documentStyle->backgroundLayers() != backgroundLayers | 1612 || documentStyle->backgroundLayers() != backgroundLayers |
1613 || documentStyle->imageRendering() != imageRendering | 1613 || documentStyle->imageRendering() != imageRendering |
1614 || documentStyle->overflowX() != overflowX | 1614 || documentStyle->overflowX() != overflowX |
1615 || documentStyle->overflowY() != overflowY | 1615 || documentStyle->overflowY() != overflowY |
1616 || documentStyle->columnGap() != columnGap | 1616 || documentStyle->columnGap() != columnGap |
1617 || documentStyle->getScrollSnapType() != snapType | 1617 || documentStyle->getScrollSnapType() != snapType |
1618 || documentStyle->scrollSnapDestination() != snapDestination) { | 1618 || documentStyle->scrollSnapDestination() != snapDestination) { |
1619 RefPtr<ComputedStyle> newStyle = ComputedStyle::clone(*documentStyle); | 1619 RefPtr<ComputedStyle> newStyle = ComputedStyle::clone(*documentStyle); |
1620 newStyle->setWritingMode(rootWritingMode); | 1620 newStyle->setWritingMode(rootWritingMode); |
1621 newStyle->setDirection(rootDirection); | 1621 newStyle->setDirection(rootDirection); |
1622 newStyle->setBackgroundColor(backgroundColor); | 1622 newStyle->setBackgroundColor(backgroundColor); |
1623 newStyle->accessBackgroundLayers() = backgroundLayers; | 1623 newStyle->accessBackgroundLayers() = backgroundLayers; |
1624 newStyle->setImageRendering(imageRendering); | 1624 newStyle->setImageRendering(imageRendering); |
1625 newStyle->setOverflowX(overflowX); | 1625 newStyle->setOverflowX(overflowX); |
1626 newStyle->setOverflowY(overflowY); | 1626 newStyle->setOverflowY(overflowY); |
1627 newStyle->setColumnGap(columnGap); | 1627 newStyle->setColumnGap(columnGap); |
1628 newStyle->setScrollSnapType(snapType); | 1628 newStyle->setScrollSnapType(snapType); |
1629 newStyle->setScrollSnapDestination(snapDestination); | 1629 newStyle->setScrollSnapDestination(snapDestination); |
1630 layoutView()->setStyle(newStyle); | 1630 layoutViewItem().setStyle(newStyle); |
1631 setupFontBuilder(*newStyle); | 1631 setupFontBuilder(*newStyle); |
1632 } | 1632 } |
1633 | 1633 |
1634 if (body) { | 1634 if (body) { |
1635 if (const ComputedStyle* style = body->computedStyle()) { | 1635 if (const ComputedStyle* style = body->computedStyle()) { |
1636 if (style->direction() != rootDirection || style->getWritingMode() !
= rootWritingMode) | 1636 if (style->direction() != rootDirection || style->getWritingMode() !
= rootWritingMode) |
1637 body->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonF
orTracing::create(StyleChangeReason::WritingModeChange)); | 1637 body->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonF
orTracing::create(StyleChangeReason::WritingModeChange)); |
1638 } | 1638 } |
1639 } | 1639 } |
1640 | 1640 |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1728 notifyLayoutTreeOfSubtreeChanges(); | 1728 notifyLayoutTreeOfSubtreeChanges(); |
1729 | 1729 |
1730 // As a result of the style recalculation, the currently hovered element mig
ht have been | 1730 // As a result of the style recalculation, the currently hovered element mig
ht have been |
1731 // detached (for example, by setting display:none in the :hover style), sche
dule another mouseMove event | 1731 // detached (for example, by setting display:none in the :hover style), sche
dule another mouseMove event |
1732 // to check if any other elements ended up under the mouse pointer due to re
-layout. | 1732 // to check if any other elements ended up under the mouse pointer due to re
-layout. |
1733 if (hoverNode() && !hoverNode()->layoutObject() && frame()) | 1733 if (hoverNode() && !hoverNode()->layoutObject() && frame()) |
1734 frame()->eventHandler().dispatchFakeMouseMoveEventSoon(); | 1734 frame()->eventHandler().dispatchFakeMouseMoveEventSoon(); |
1735 | 1735 |
1736 if (m_focusedElement && !m_focusedElement->isFocusable()) | 1736 if (m_focusedElement && !m_focusedElement->isFocusable()) |
1737 clearFocusedElementSoon(); | 1737 clearFocusedElementSoon(); |
1738 layoutView()->clearHitTestCache(); | 1738 layoutViewItem().clearHitTestCache(); |
1739 | 1739 |
1740 DCHECK(!DocumentAnimations::needsAnimationTimingUpdate(*this)); | 1740 DCHECK(!DocumentAnimations::needsAnimationTimingUpdate(*this)); |
1741 | 1741 |
1742 unsigned elementCount = styleEngine().styleForElementCount() - startElementC
ount; | 1742 unsigned elementCount = styleEngine().styleForElementCount() - startElementC
ount; |
1743 | 1743 |
1744 TRACE_EVENT_END1("blink,devtools.timeline", "UpdateLayoutTree", "elementCoun
t", elementCount); | 1744 TRACE_EVENT_END1("blink,devtools.timeline", "UpdateLayoutTree", "elementCoun
t", elementCount); |
1745 | 1745 |
1746 #if DCHECK_IS_ON() | 1746 #if DCHECK_IS_ON() |
1747 assertLayoutTreeUpdated(*this); | 1747 assertLayoutTreeUpdated(*this); |
1748 #endif | 1748 #endif |
(...skipping 15 matching lines...) Expand all Loading... |
1764 NthIndexCache nthIndexCache(*this); | 1764 NthIndexCache nthIndexCache(*this); |
1765 | 1765 |
1766 // FIXME: Cannot access the ensureStyleResolver() before calling styleForDoc
ument below because | 1766 // FIXME: Cannot access the ensureStyleResolver() before calling styleForDoc
ument below because |
1767 // apparently the StyleResolver's constructor has side effects. We should fi
x it. | 1767 // apparently the StyleResolver's constructor has side effects. We should fi
x it. |
1768 // See printing/setPrinting.html, printing/width-overflow.html though they o
nly fail on | 1768 // See printing/setPrinting.html, printing/width-overflow.html though they o
nly fail on |
1769 // mac when accessing the resolver by what appears to be a viewport size dif
ference. | 1769 // mac when accessing the resolver by what appears to be a viewport size dif
ference. |
1770 | 1770 |
1771 if (change == Force) { | 1771 if (change == Force) { |
1772 m_hasNodesWithPlaceholderStyle = false; | 1772 m_hasNodesWithPlaceholderStyle = false; |
1773 RefPtr<ComputedStyle> documentStyle = StyleResolver::styleForDocument(*t
his); | 1773 RefPtr<ComputedStyle> documentStyle = StyleResolver::styleForDocument(*t
his); |
1774 StyleRecalcChange localChange = ComputedStyle::stylePropagationDiff(docu
mentStyle.get(), layoutView()->style()); | 1774 StyleRecalcChange localChange = ComputedStyle::stylePropagationDiff(docu
mentStyle.get(), layoutViewItem().style()); |
1775 if (localChange != NoChange) | 1775 if (localChange != NoChange) |
1776 layoutView()->setStyle(documentStyle.release()); | 1776 layoutViewItem().setStyle(documentStyle.release()); |
1777 } | 1777 } |
1778 | 1778 |
1779 clearNeedsStyleRecalc(); | 1779 clearNeedsStyleRecalc(); |
1780 | 1780 |
1781 StyleResolver& resolver = ensureStyleResolver(); | 1781 StyleResolver& resolver = ensureStyleResolver(); |
1782 | 1782 |
1783 bool shouldRecordStats; | 1783 bool shouldRecordStats; |
1784 TRACE_EVENT_CATEGORY_GROUP_ENABLED("blink,blink_style", &shouldRecordStats); | 1784 TRACE_EVENT_CATEGORY_GROUP_ENABLED("blink,blink_style", &shouldRecordStats); |
1785 styleEngine().setStatsEnabled(shouldRecordStats); | 1785 styleEngine().setStatsEnabled(shouldRecordStats); |
1786 | 1786 |
(...skipping 24 matching lines...) Expand all Loading... |
1811 "resolverAccessCount", styleEngine().styleForElementCount() - initia
lElementCount, | 1811 "resolverAccessCount", styleEngine().styleForElementCount() - initia
lElementCount, |
1812 "counters", styleEngine().stats()->toTracedValue()); | 1812 "counters", styleEngine().stats()->toTracedValue()); |
1813 } else { | 1813 } else { |
1814 TRACE_EVENT_END1("blink,blink_style", "Document::updateStyle", | 1814 TRACE_EVENT_END1("blink,blink_style", "Document::updateStyle", |
1815 "resolverAccessCount", styleEngine().styleForElementCount() - initia
lElementCount); | 1815 "resolverAccessCount", styleEngine().styleForElementCount() - initia
lElementCount); |
1816 } | 1816 } |
1817 } | 1817 } |
1818 | 1818 |
1819 void Document::notifyLayoutTreeOfSubtreeChanges() | 1819 void Document::notifyLayoutTreeOfSubtreeChanges() |
1820 { | 1820 { |
1821 if (!layoutView()->wasNotifiedOfSubtreeChange()) | 1821 if (!layoutViewItem().wasNotifiedOfSubtreeChange()) |
1822 return; | 1822 return; |
1823 | 1823 |
1824 m_lifecycle.advanceTo(DocumentLifecycle::InLayoutSubtreeChange); | 1824 m_lifecycle.advanceTo(DocumentLifecycle::InLayoutSubtreeChange); |
1825 | 1825 |
1826 layoutView()->handleSubtreeModifications(); | 1826 layoutViewItem().handleSubtreeModifications(); |
1827 DCHECK(!layoutView()->wasNotifiedOfSubtreeChange()); | 1827 DCHECK(!layoutViewItem().wasNotifiedOfSubtreeChange()); |
1828 | 1828 |
1829 m_lifecycle.advanceTo(DocumentLifecycle::LayoutSubtreeChangeClean); | 1829 m_lifecycle.advanceTo(DocumentLifecycle::LayoutSubtreeChangeClean); |
1830 } | 1830 } |
1831 | 1831 |
1832 bool Document::needsLayoutTreeUpdateForNode(const Node& node) const | 1832 bool Document::needsLayoutTreeUpdateForNode(const Node& node) const |
1833 { | 1833 { |
1834 if (!node.canParticipateInFlatTree()) | 1834 if (!node.canParticipateInFlatTree()) |
1835 return false; | 1835 return false; |
1836 if (!needsLayoutTreeUpdate()) | 1836 if (!needsLayoutTreeUpdate()) |
1837 return false; | 1837 return false; |
(...skipping 796 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2634 return; | 2634 return; |
2635 } | 2635 } |
2636 | 2636 |
2637 // We used to force a synchronous display and flush here. This really isn't | 2637 // We used to force a synchronous display and flush here. This really isn't |
2638 // necessary and can in fact be actively harmful if pages are loading at a r
ate of > 60fps | 2638 // necessary and can in fact be actively harmful if pages are loading at a r
ate of > 60fps |
2639 // (if your platform is syncing flushes and limiting them to 60fps). | 2639 // (if your platform is syncing flushes and limiting them to 60fps). |
2640 if (!localOwner() || (localOwner()->layoutObject() && !localOwner()->layoutO
bject()->needsLayout())) { | 2640 if (!localOwner() || (localOwner()->layoutObject() && !localOwner()->layoutO
bject()->needsLayout())) { |
2641 updateStyleAndLayoutTree(); | 2641 updateStyleAndLayoutTree(); |
2642 | 2642 |
2643 // Always do a layout after loading if needed. | 2643 // Always do a layout after loading if needed. |
2644 if (view() && layoutView() && (!layoutView()->firstChild() || layoutView
()->needsLayout())) | 2644 if (view() && !layoutViewItem().isNull() && (!layoutViewItem().firstChil
d() || layoutViewItem().needsLayout())) |
2645 view()->layout(); | 2645 view()->layout(); |
2646 } | 2646 } |
2647 | 2647 |
2648 m_loadEventProgress = LoadEventCompleted; | 2648 m_loadEventProgress = LoadEventCompleted; |
2649 | 2649 |
2650 if (frame() && layoutView() && settings()->accessibilityEnabled()) { | 2650 if (frame() && !layoutViewItem().isNull() && settings()->accessibilityEnable
d()) { |
2651 if (AXObjectCache* cache = axObjectCache()) { | 2651 if (AXObjectCache* cache = axObjectCache()) { |
2652 if (this == &axObjectCacheOwner()) | 2652 if (this == &axObjectCacheOwner()) |
2653 cache->handleLoadComplete(this); | 2653 cache->handleLoadComplete(this); |
2654 else | 2654 else |
2655 cache->handleLayoutComplete(this); | 2655 cache->handleLayoutComplete(this); |
2656 } | 2656 } |
2657 } | 2657 } |
2658 | 2658 |
2659 if (svgExtensions()) | 2659 if (svgExtensions()) |
2660 accessSVGExtensions().startAnimations(); | 2660 accessSVGExtensions().startAnimations(); |
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3150 MouseEventWithHitTestResults Document::prepareMouseEvent(const HitTestRequest& r
equest, const LayoutPoint& documentPoint, const PlatformMouseEvent& event) | 3150 MouseEventWithHitTestResults Document::prepareMouseEvent(const HitTestRequest& r
equest, const LayoutPoint& documentPoint, const PlatformMouseEvent& event) |
3151 { | 3151 { |
3152 DCHECK(!layoutView() || layoutView()->isLayoutView()); | 3152 DCHECK(!layoutView() || layoutView()->isLayoutView()); |
3153 | 3153 |
3154 // LayoutView::hitTest causes a layout, and we don't want to hit that until
the first | 3154 // LayoutView::hitTest causes a layout, and we don't want to hit that until
the first |
3155 // layout because until then, there is nothing shown on the screen - the use
r can't | 3155 // layout because until then, there is nothing shown on the screen - the use
r can't |
3156 // have intentionally clicked on something belonging to this page. Furthermo
re, | 3156 // have intentionally clicked on something belonging to this page. Furthermo
re, |
3157 // mousemove events before the first layout should not lead to a premature l
ayout() | 3157 // mousemove events before the first layout should not lead to a premature l
ayout() |
3158 // happening, which could show a flash of white. | 3158 // happening, which could show a flash of white. |
3159 // See also the similar code in EventHandler::hitTestResultAtPoint. | 3159 // See also the similar code in EventHandler::hitTestResultAtPoint. |
3160 if (!layoutView() || !view() || !view()->didFirstLayout()) | 3160 if (layoutViewItem().isNull() || !view() || !view()->didFirstLayout()) |
3161 return MouseEventWithHitTestResults(event, HitTestResult(request, Layout
Point())); | 3161 return MouseEventWithHitTestResults(event, HitTestResult(request, Layout
Point())); |
3162 | 3162 |
3163 HitTestResult result(request, documentPoint); | 3163 HitTestResult result(request, documentPoint); |
3164 layoutView()->hitTest(result); | 3164 layoutViewItem().hitTest(result); |
3165 | 3165 |
3166 if (!request.readOnly()) | 3166 if (!request.readOnly()) |
3167 updateHoverActiveState(request, result.innerElement()); | 3167 updateHoverActiveState(request, result.innerElement()); |
3168 | 3168 |
3169 if (isHTMLCanvasElement(result.innerNode())) { | 3169 if (isHTMLCanvasElement(result.innerNode())) { |
3170 PlatformMouseEvent eventWithRegion = event; | 3170 PlatformMouseEvent eventWithRegion = event; |
3171 std::pair<Element*, String> regionInfo = toHTMLCanvasElement(result.inne
rNode())->getControlAndIdIfHitRegionExists(result.pointInInnerNodeFrame()); | 3171 std::pair<Element*, String> regionInfo = toHTMLCanvasElement(result.inne
rNode())->getControlAndIdIfHitRegionExists(result.pointInInnerNodeFrame()); |
3172 if (regionInfo.first) | 3172 if (regionInfo.first) |
3173 result.setInnerNode(regionInfo.first); | 3173 result.setInnerNode(regionInfo.first); |
3174 eventWithRegion.setRegion(regionInfo.second); | 3174 eventWithRegion.setRegion(regionInfo.second); |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3411 | 3411 |
3412 void Document::styleResolverMayHaveChanged() | 3412 void Document::styleResolverMayHaveChanged() |
3413 { | 3413 { |
3414 styleEngine().resolverChanged(hasNodesWithPlaceholderStyle() ? FullStyleUpda
te : AnalyzedStyleUpdate); | 3414 styleEngine().resolverChanged(hasNodesWithPlaceholderStyle() ? FullStyleUpda
te : AnalyzedStyleUpdate); |
3415 | 3415 |
3416 if (didLayoutWithPendingStylesheets() && !styleEngine().hasPendingScriptBloc
kingSheets()) { | 3416 if (didLayoutWithPendingStylesheets() && !styleEngine().hasPendingScriptBloc
kingSheets()) { |
3417 // We need to manually repaint because we avoid doing all repaints in la
yout or style | 3417 // We need to manually repaint because we avoid doing all repaints in la
yout or style |
3418 // recalc while sheets are still loading to avoid FOUC. | 3418 // recalc while sheets are still loading to avoid FOUC. |
3419 m_pendingSheetLayout = IgnoreLayoutWithPendingSheets; | 3419 m_pendingSheetLayout = IgnoreLayoutWithPendingSheets; |
3420 | 3420 |
3421 DCHECK(layoutView() || importsController()); | 3421 DCHECK(!layoutViewItem().isNull() || importsController()); |
3422 if (layoutView()) | 3422 if (!layoutViewItem().isNull()) |
3423 layoutView()->invalidatePaintForViewAndCompositedLayers(); | 3423 layoutViewItem().invalidatePaintForViewAndCompositedLayers(); |
3424 } | 3424 } |
3425 } | 3425 } |
3426 | 3426 |
3427 void Document::setHoverNode(Node* newHoverNode) | 3427 void Document::setHoverNode(Node* newHoverNode) |
3428 { | 3428 { |
3429 m_hoverNode = newHoverNode; | 3429 m_hoverNode = newHoverNode; |
3430 } | 3430 } |
3431 | 3431 |
3432 void Document::setActiveHoverElement(Element* newActiveElement) | 3432 void Document::setActiveHoverElement(Element* newActiveElement) |
3433 { | 3433 { |
(...skipping 962 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4396 } | 4396 } |
4397 | 4397 |
4398 DCHECK(newData.encoding().isValid()); | 4398 DCHECK(newData.encoding().isValid()); |
4399 m_encodingData = newData; | 4399 m_encodingData = newData; |
4400 | 4400 |
4401 // FIXME: Should be removed as part of https://code.google.com/p/chromium/is
sues/detail?id=319643 | 4401 // FIXME: Should be removed as part of https://code.google.com/p/chromium/is
sues/detail?id=319643 |
4402 bool shouldUseVisualOrdering = m_encodingData.encoding().usesVisualOrdering(
); | 4402 bool shouldUseVisualOrdering = m_encodingData.encoding().usesVisualOrdering(
); |
4403 if (shouldUseVisualOrdering != m_visuallyOrdered) { | 4403 if (shouldUseVisualOrdering != m_visuallyOrdered) { |
4404 m_visuallyOrdered = shouldUseVisualOrdering; | 4404 m_visuallyOrdered = shouldUseVisualOrdering; |
4405 // FIXME: How is possible to not have a layoutObject here? | 4405 // FIXME: How is possible to not have a layoutObject here? |
4406 if (layoutView()) | 4406 if (!layoutViewItem().isNull()) |
4407 layoutView()->mutableStyleRef().setRTLOrdering(m_visuallyOrdered ? V
isualOrder : LogicalOrder); | 4407 layoutViewItem().mutableStyleRef().setRTLOrdering(m_visuallyOrdered
? VisualOrder : LogicalOrder); |
4408 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::cre
ate(StyleChangeReason::VisuallyOrdered)); | 4408 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::cre
ate(StyleChangeReason::VisuallyOrdered)); |
4409 } | 4409 } |
4410 } | 4410 } |
4411 | 4411 |
4412 KURL Document::completeURL(const String& url) const | 4412 KURL Document::completeURL(const String& url) const |
4413 { | 4413 { |
4414 return completeURLWithOverride(url, m_baseURL); | 4414 return completeURLWithOverride(url, m_baseURL); |
4415 } | 4415 } |
4416 | 4416 |
4417 KURL Document::completeURLWithOverride(const String& url, const KURL& baseURLOve
rride) const | 4417 KURL Document::completeURLWithOverride(const String& url, const KURL& baseURLOve
rride) const |
(...skipping 1617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6035 } | 6035 } |
6036 | 6036 |
6037 void showLiveDocumentInstances() | 6037 void showLiveDocumentInstances() |
6038 { | 6038 { |
6039 WeakDocumentSet& set = liveDocumentSet(); | 6039 WeakDocumentSet& set = liveDocumentSet(); |
6040 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); | 6040 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); |
6041 for (Document* document : set) | 6041 for (Document* document : set) |
6042 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().get
String().utf8().data()); | 6042 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().get
String().utf8().data()); |
6043 } | 6043 } |
6044 #endif | 6044 #endif |
OLD | NEW |