| 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 2468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2479 | 2479 |
| 2480 if (StyleImage* maskBoxImage = m_style->maskBoxImage().image()) | 2480 if (StyleImage* maskBoxImage = m_style->maskBoxImage().image()) |
| 2481 maskBoxImage->removeClient(this); | 2481 maskBoxImage->removeClient(this); |
| 2482 | 2482 |
| 2483 removeShapeImageClient(m_style->shapeOutside()); | 2483 removeShapeImageClient(m_style->shapeOutside()); |
| 2484 } | 2484 } |
| 2485 ResourceLoadPriorityOptimizer::resourceLoadPriorityOptimizer()->removeLayout
Object(this); | 2485 ResourceLoadPriorityOptimizer::resourceLoadPriorityOptimizer()->removeLayout
Object(this); |
| 2486 | 2486 |
| 2487 if (frameView()) | 2487 if (frameView()) |
| 2488 setIsSlowRepaintObject(false); | 2488 setIsSlowRepaintObject(false); |
| 2489 |
| 2490 if (view() && hasIntersectionObserver()) { |
| 2491 view()->removeIntersectionObserverTarget(this); |
| 2492 } |
| 2489 } | 2493 } |
| 2490 | 2494 |
| 2491 void LayoutObject::insertedIntoTree() | 2495 void LayoutObject::insertedIntoTree() |
| 2492 { | 2496 { |
| 2493 // FIXME: We should ASSERT(isRooted()) here but generated content makes some
out-of-order insertion. | 2497 // FIXME: We should ASSERT(isRooted()) here but generated content makes some
out-of-order insertion. |
| 2494 | 2498 |
| 2495 // Keep our layer hierarchy updated. Optimize for the common case where we d
on't have any children | 2499 // Keep our layer hierarchy updated. Optimize for the common case where we d
on't have any children |
| 2496 // and don't have a layer attached to ourselves. | 2500 // and don't have a layer attached to ourselves. |
| 2497 DeprecatedPaintLayer* layer = nullptr; | 2501 DeprecatedPaintLayer* layer = nullptr; |
| 2498 if (slowFirstChild() || hasLayer()) { | 2502 if (slowFirstChild() || hasLayer()) { |
| 2499 layer = parent()->enclosingLayer(); | 2503 layer = parent()->enclosingLayer(); |
| 2500 addLayers(layer); | 2504 addLayers(layer); |
| 2501 } | 2505 } |
| 2502 | 2506 |
| 2503 // If |this| is visible but this object was not, tell the layer it has some
visible content | 2507 // If |this| is visible but this object was not, tell the layer it has some
visible content |
| 2504 // that needs to be drawn and layer visibility optimization can't be used | 2508 // that needs to be drawn and layer visibility optimization can't be used |
| 2505 if (parent()->style()->visibility() != VISIBLE && style()->visibility() == V
ISIBLE && !hasLayer()) { | 2509 if (parent()->style()->visibility() != VISIBLE && style()->visibility() == V
ISIBLE && !hasLayer()) { |
| 2506 if (!layer) | 2510 if (!layer) |
| 2507 layer = parent()->enclosingLayer(); | 2511 layer = parent()->enclosingLayer(); |
| 2508 if (layer) | 2512 if (layer) |
| 2509 layer->dirtyVisibleContentStatus(); | 2513 layer->dirtyVisibleContentStatus(); |
| 2510 } | 2514 } |
| 2511 | 2515 |
| 2512 if (parent()->childrenInline()) | 2516 if (parent()->childrenInline()) |
| 2513 parent()->dirtyLinesFromChangedChild(this); | 2517 parent()->dirtyLinesFromChangedChild(this); |
| 2514 | 2518 |
| 2515 if (LayoutFlowThread* flowThread = flowThreadContainingBlock()) | 2519 if (LayoutFlowThread* flowThread = flowThreadContainingBlock()) |
| 2516 flowThread->flowThreadDescendantWasInserted(this); | 2520 flowThread->flowThreadDescendantWasInserted(this); |
| 2521 |
| 2522 if (view() && hasIntersectionObserver()) { |
| 2523 view()->addIntersectionObserverTarget(this); |
| 2524 } |
| 2517 } | 2525 } |
| 2518 | 2526 |
| 2519 void LayoutObject::willBeRemovedFromTree() | 2527 void LayoutObject::willBeRemovedFromTree() |
| 2520 { | 2528 { |
| 2521 // FIXME: We should ASSERT(isRooted()) but we have some out-of-order removal
s which would need to be fixed first. | 2529 // FIXME: We should ASSERT(isRooted()) but we have some out-of-order removal
s which would need to be fixed first. |
| 2522 | 2530 |
| 2523 // If we remove a visible child from an invisible parent, we don't know the
layer visibility any more. | 2531 // If we remove a visible child from an invisible parent, we don't know the
layer visibility any more. |
| 2524 DeprecatedPaintLayer* layer = nullptr; | 2532 DeprecatedPaintLayer* layer = nullptr; |
| 2525 if (parent()->style()->visibility() != VISIBLE && style()->visibility() == V
ISIBLE && !hasLayer()) { | 2533 if (parent()->style()->visibility() != VISIBLE && style()->visibility() == V
ISIBLE && !hasLayer()) { |
| 2526 layer = parent()->enclosingLayer(); | 2534 layer = parent()->enclosingLayer(); |
| 2527 if (layer) | 2535 if (layer) |
| 2528 layer->dirtyVisibleContentStatus(); | 2536 layer->dirtyVisibleContentStatus(); |
| 2529 } | 2537 } |
| 2530 | 2538 |
| 2531 // Keep our layer hierarchy updated. | 2539 // Keep our layer hierarchy updated. |
| 2532 if (slowFirstChild() || hasLayer()) { | 2540 if (slowFirstChild() || hasLayer()) { |
| 2533 if (!layer) | 2541 if (!layer) |
| 2534 layer = parent()->enclosingLayer(); | 2542 layer = parent()->enclosingLayer(); |
| 2535 removeLayers(layer); | 2543 removeLayers(layer); |
| 2536 } | 2544 } |
| 2537 | 2545 |
| 2538 if (isOutOfFlowPositioned() && parent()->childrenInline()) | 2546 if (isOutOfFlowPositioned() && parent()->childrenInline()) |
| 2539 parent()->dirtyLinesFromChangedChild(this); | 2547 parent()->dirtyLinesFromChangedChild(this); |
| 2540 | 2548 |
| 2541 removeFromLayoutFlowThread(); | 2549 removeFromLayoutFlowThread(); |
| 2542 | 2550 |
| 2543 // Update cached boundaries in SVG layoutObjects if a child is removed. | 2551 // Update cached boundaries in SVG layoutObjects if a child is removed. |
| 2544 if (parent()->isSVG()) | 2552 if (parent()->isSVG()) |
| 2545 parent()->setNeedsBoundariesUpdate(); | 2553 parent()->setNeedsBoundariesUpdate(); |
| 2554 |
| 2555 if (view() && hasIntersectionObserver()) { |
| 2556 view()->removeIntersectionObserverTarget(this); |
| 2557 } |
| 2546 } | 2558 } |
| 2547 | 2559 |
| 2548 void LayoutObject::removeFromLayoutFlowThread() | 2560 void LayoutObject::removeFromLayoutFlowThread() |
| 2549 { | 2561 { |
| 2550 if (!isInsideFlowThread()) | 2562 if (!isInsideFlowThread()) |
| 2551 return; | 2563 return; |
| 2552 | 2564 |
| 2553 // Sometimes we remove the element from the flow, but it's not destroyed at
that time. | 2565 // Sometimes we remove the element from the flow, but it's not destroyed at
that time. |
| 2554 // It's only until later when we actually destroy it and remove all the chil
dren from it. | 2566 // It's only until later when we actually destroy it and remove all the chil
dren from it. |
| 2555 // Currently, that happens for firstLetter elements and list markers. | 2567 // Currently, that happens for firstLetter elements and list markers. |
| (...skipping 852 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3408 const blink::LayoutObject* root = object1; | 3420 const blink::LayoutObject* root = object1; |
| 3409 while (root->parent()) | 3421 while (root->parent()) |
| 3410 root = root->parent(); | 3422 root = root->parent(); |
| 3411 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); | 3423 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); |
| 3412 } else { | 3424 } else { |
| 3413 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n"); | 3425 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n"); |
| 3414 } | 3426 } |
| 3415 } | 3427 } |
| 3416 | 3428 |
| 3417 #endif | 3429 #endif |
| OLD | NEW |