| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. |
| 3 * | 3 * |
| 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
| 5 * | 5 * |
| 6 * Other contributors: | 6 * Other contributors: |
| 7 * Robert O'Callahan <roc+@cs.cmu.edu> | 7 * Robert O'Callahan <roc+@cs.cmu.edu> |
| 8 * David Baron <dbaron@fas.harvard.edu> | 8 * David Baron <dbaron@fas.harvard.edu> |
| 9 * Christian Biesinger <cbiesinger@web.de> | 9 * Christian Biesinger <cbiesinger@web.de> |
| 10 * Randall Jesup <rjesup@wgate.com> | 10 * Randall Jesup <rjesup@wgate.com> |
| (...skipping 1528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1539 // Now determine if the result is inside an anchor - if the urlElement isn't
already set. | 1539 // Now determine if the result is inside an anchor - if the urlElement isn't
already set. |
| 1540 Node* node = result.innerNode(); | 1540 Node* node = result.innerNode(); |
| 1541 if (node && !result.URLElement()) | 1541 if (node && !result.URLElement()) |
| 1542 result.setURLElement(node->enclosingLinkEventParentOrSelf()); | 1542 result.setURLElement(node->enclosingLinkEventParentOrSelf()); |
| 1543 | 1543 |
| 1544 // Now return whether we were inside this layer (this will always be true fo
r the root | 1544 // Now return whether we were inside this layer (this will always be true fo
r the root |
| 1545 // layer). | 1545 // layer). |
| 1546 return insideLayer; | 1546 return insideLayer; |
| 1547 } | 1547 } |
| 1548 | 1548 |
| 1549 Node* PaintLayer::enclosingElement() const | 1549 Node* PaintLayer::enclosingNode() const |
| 1550 { | 1550 { |
| 1551 for (LayoutObject* r = layoutObject(); r; r = r->parent()) { | 1551 for (LayoutObject* r = layoutObject(); r; r = r->parent()) { |
| 1552 if (Node* e = r->node()) | 1552 if (Node* e = r->node()) |
| 1553 return e; | 1553 return e; |
| 1554 } | 1554 } |
| 1555 ASSERT_NOT_REACHED(); | 1555 ASSERT_NOT_REACHED(); |
| 1556 return 0; | 1556 return 0; |
| 1557 } | 1557 } |
| 1558 | 1558 |
| 1559 bool PaintLayer::isInTopLayer() const | 1559 bool PaintLayer::isInTopLayer() const |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1905 // We hit something anonymous, and we didn't find a DOM node ancestor in
this layer. | 1905 // We hit something anonymous, and we didn't find a DOM node ancestor in
this layer. |
| 1906 | 1906 |
| 1907 if (layoutObject()->isLayoutFlowThread()) { | 1907 if (layoutObject()->isLayoutFlowThread()) { |
| 1908 // For a flow thread it's safe to just say that we didn't hit anythi
ng. That means that | 1908 // For a flow thread it's safe to just say that we didn't hit anythi
ng. That means that |
| 1909 // we'll continue as normally, and eventually hit a column set sibli
ng instead. Column | 1909 // we'll continue as normally, and eventually hit a column set sibli
ng instead. Column |
| 1910 // sets are also anonymous, but, unlike flow threads, they don't est
ablish layers, so | 1910 // sets are also anonymous, but, unlike flow threads, they don't est
ablish layers, so |
| 1911 // we'll fall back and hit the multicol container parent (which shou
ld have a DOM node). | 1911 // we'll fall back and hit the multicol container parent (which shou
ld have a DOM node). |
| 1912 return false; | 1912 return false; |
| 1913 } | 1913 } |
| 1914 | 1914 |
| 1915 Node* e = enclosingElement(); | 1915 Node* e = enclosingNode(); |
| 1916 // FIXME: should be a call to result.setNodeAndPosition. What we would r
eally want to do here is to | 1916 // FIXME: should be a call to result.setNodeAndPosition. What we would r
eally want to do here is to |
| 1917 // return and look for the nearest non-anonymous ancestor, and ignore au
nts and uncles on | 1917 // return and look for the nearest non-anonymous ancestor, and ignore au
nts and uncles on |
| 1918 // our way. It's bad to look for it manually like we do here, and give u
p on setting a local | 1918 // our way. It's bad to look for it manually like we do here, and give u
p on setting a local |
| 1919 // point in the result, because that has bad implications for text selec
tion and | 1919 // point in the result, because that has bad implications for text selec
tion and |
| 1920 // caretRangeFromPoint(). See crbug.com/461791 | 1920 // caretRangeFromPoint(). See crbug.com/461791 |
| 1921 if (!result.innerNode()) | 1921 if (!result.innerNode()) |
| 1922 result.setInnerNode(e); | 1922 result.setInnerNode(e); |
| 1923 | 1923 |
| 1924 } | 1924 } |
| 1925 return true; | 1925 return true; |
| (...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2548 bool PaintLayer::scrollsOverflow() const | 2548 bool PaintLayer::scrollsOverflow() const |
| 2549 { | 2549 { |
| 2550 if (PaintLayerScrollableArea* scrollableArea = this->scrollableArea()) | 2550 if (PaintLayerScrollableArea* scrollableArea = this->scrollableArea()) |
| 2551 return scrollableArea->scrollsOverflow(); | 2551 return scrollableArea->scrollsOverflow(); |
| 2552 | 2552 |
| 2553 return false; | 2553 return false; |
| 2554 } | 2554 } |
| 2555 | 2555 |
| 2556 namespace { | 2556 namespace { |
| 2557 | 2557 |
| 2558 FilterOperations computeFilterOperationsHandleReferenceFilters(const FilterOpera
tions& filters, float effectiveZoom, Node* enclosingElement) | 2558 FilterOperations computeFilterOperationsHandleReferenceFilters(const FilterOpera
tions& filters, float effectiveZoom, Node* enclosingNode) |
| 2559 { | 2559 { |
| 2560 if (filters.hasReferenceFilter()) { | 2560 if (filters.hasReferenceFilter()) { |
| 2561 for (size_t i = 0; i < filters.size(); ++i) { | 2561 for (size_t i = 0; i < filters.size(); ++i) { |
| 2562 FilterOperation* filterOperation = filters.operations().at(i).get(); | 2562 FilterOperation* filterOperation = filters.operations().at(i).get(); |
| 2563 if (filterOperation->type() != FilterOperation::REFERENCE) | 2563 if (filterOperation->type() != FilterOperation::REFERENCE) |
| 2564 continue; | 2564 continue; |
| 2565 ReferenceFilterOperation& referenceOperation = toReferenceFilterOper
ation(*filterOperation); | 2565 ReferenceFilterOperation& referenceOperation = toReferenceFilterOper
ation(*filterOperation); |
| 2566 // FIXME: Cache the Filter if it didn't change. | 2566 // FIXME: Cache the Filter if it didn't change. |
| 2567 RefPtrWillBeRawPtr<Filter> referenceFilter = ReferenceFilterBuilder:
:build(effectiveZoom, toElement(enclosingElement), nullptr, referenceOperation); | 2567 RefPtrWillBeRawPtr<Filter> referenceFilter = ReferenceFilterBuilder:
:build(effectiveZoom, toElement(enclosingNode), nullptr, referenceOperation); |
| 2568 referenceOperation.setFilter(referenceFilter.release()); | 2568 referenceOperation.setFilter(referenceFilter.release()); |
| 2569 } | 2569 } |
| 2570 } | 2570 } |
| 2571 | 2571 |
| 2572 return filters; | 2572 return filters; |
| 2573 } | 2573 } |
| 2574 | 2574 |
| 2575 } // unnamed namespace | 2575 } // unnamed namespace |
| 2576 | 2576 |
| 2577 FilterOperations PaintLayer::computeFilterOperations(const ComputedStyle& style)
const | 2577 FilterOperations PaintLayer::computeFilterOperations(const ComputedStyle& style)
const |
| 2578 { | 2578 { |
| 2579 return computeFilterOperationsHandleReferenceFilters(style.filter(), style.e
ffectiveZoom(), enclosingElement()); | 2579 return computeFilterOperationsHandleReferenceFilters(style.filter(), style.e
ffectiveZoom(), enclosingNode()); |
| 2580 } | 2580 } |
| 2581 | 2581 |
| 2582 FilterOperations PaintLayer::computeBackdropFilterOperations(const ComputedStyle
& style) const | 2582 FilterOperations PaintLayer::computeBackdropFilterOperations(const ComputedStyle
& style) const |
| 2583 { | 2583 { |
| 2584 return computeFilterOperationsHandleReferenceFilters(style.backdropFilter(),
style.effectiveZoom(), enclosingElement()); | 2584 return computeFilterOperationsHandleReferenceFilters(style.backdropFilter(),
style.effectiveZoom(), enclosingNode()); |
| 2585 } | 2585 } |
| 2586 | 2586 |
| 2587 void PaintLayer::updateOrRemoveFilterClients() | 2587 void PaintLayer::updateOrRemoveFilterClients() |
| 2588 { | 2588 { |
| 2589 if (!hasFilter()) { | 2589 if (!hasFilter()) { |
| 2590 removeFilterInfoIfNeeded(); | 2590 removeFilterInfoIfNeeded(); |
| 2591 return; | 2591 return; |
| 2592 } | 2592 } |
| 2593 | 2593 |
| 2594 if (layoutObject()->style()->filter().hasReferenceFilter()) | 2594 if (layoutObject()->style()->filter().hasReferenceFilter()) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2608 | 2608 |
| 2609 // Should have been added by updateOrRemoveFilterEffectBuilder(). | 2609 // Should have been added by updateOrRemoveFilterEffectBuilder(). |
| 2610 ASSERT(filterInfo); | 2610 ASSERT(filterInfo); |
| 2611 | 2611 |
| 2612 if (filterInfo->builder()) | 2612 if (filterInfo->builder()) |
| 2613 return filterInfo->builder(); | 2613 return filterInfo->builder(); |
| 2614 | 2614 |
| 2615 filterInfo->setBuilder(FilterEffectBuilder::create()); | 2615 filterInfo->setBuilder(FilterEffectBuilder::create()); |
| 2616 | 2616 |
| 2617 float zoom = layoutObject()->style() ? layoutObject()->style()->effectiveZoo
m() : 1.0f; | 2617 float zoom = layoutObject()->style() ? layoutObject()->style()->effectiveZoo
m() : 1.0f; |
| 2618 if (!filterInfo->builder()->build(toElement(enclosingElement()), computeFilt
erOperations(layoutObject()->styleRef()), zoom)) | 2618 if (!filterInfo->builder()->build(toElement(enclosingNode()), computeFilterO
perations(layoutObject()->styleRef()), zoom)) |
| 2619 filterInfo->setBuilder(nullptr); | 2619 filterInfo->setBuilder(nullptr); |
| 2620 | 2620 |
| 2621 return filterInfo->builder(); | 2621 return filterInfo->builder(); |
| 2622 } | 2622 } |
| 2623 | 2623 |
| 2624 FilterEffect* PaintLayer::lastFilterEffect() const | 2624 FilterEffect* PaintLayer::lastFilterEffect() const |
| 2625 { | 2625 { |
| 2626 FilterEffectBuilder* builder = updateFilterEffectBuilder(); | 2626 FilterEffectBuilder* builder = updateFilterEffectBuilder(); |
| 2627 if (!builder) | 2627 if (!builder) |
| 2628 return nullptr; | 2628 return nullptr; |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2780 | 2780 |
| 2781 void showLayerTree(const blink::LayoutObject* layoutObject) | 2781 void showLayerTree(const blink::LayoutObject* layoutObject) |
| 2782 { | 2782 { |
| 2783 if (!layoutObject) { | 2783 if (!layoutObject) { |
| 2784 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); | 2784 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); |
| 2785 return; | 2785 return; |
| 2786 } | 2786 } |
| 2787 showLayerTree(layoutObject->enclosingLayer()); | 2787 showLayerTree(layoutObject->enclosingLayer()); |
| 2788 } | 2788 } |
| 2789 #endif | 2789 #endif |
| OLD | NEW |