Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All Rights Reserved. | 2 * Copyright (C) 2011 Google Inc. All Rights Reserved. |
| 3 * Copyright (C) 2012 Apple Inc. All rights reserved. | 3 * Copyright (C) 2012 Apple Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 53 #include "wtf/Vector.h" | 53 #include "wtf/Vector.h" |
| 54 | 54 |
| 55 namespace blink { | 55 namespace blink { |
| 56 | 56 |
| 57 using namespace HTMLNames; | 57 using namespace HTMLNames; |
| 58 | 58 |
| 59 TreeScope::TreeScope(ContainerNode& rootNode, Document& document) | 59 TreeScope::TreeScope(ContainerNode& rootNode, Document& document) |
| 60 : m_rootNode(&rootNode) | 60 : m_rootNode(&rootNode) |
| 61 , m_document(&document) | 61 , m_document(&document) |
| 62 , m_parentTreeScope(&document) | 62 , m_parentTreeScope(&document) |
| 63 , m_composedParent(nullptr) | |
| 63 #if !ENABLE(OILPAN) | 64 #if !ENABLE(OILPAN) |
| 64 , m_guardRefCount(0) | 65 , m_guardRefCount(0) |
| 65 #endif | 66 #endif |
| 66 , m_idTargetObserverRegistry(IdTargetObserverRegistry::create()) | 67 , m_idTargetObserverRegistry(IdTargetObserverRegistry::create()) |
| 67 { | 68 { |
| 68 ASSERT(rootNode != document); | 69 ASSERT(rootNode != document); |
| 69 #if !ENABLE(OILPAN) | 70 #if !ENABLE(OILPAN) |
| 70 m_parentTreeScope->guardRef(); | 71 m_parentTreeScope->guardRef(); |
| 71 #endif | 72 #endif |
| 72 m_rootNode->setTreeScope(this); | 73 m_rootNode->setTreeScope(this); |
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 561 { | 562 { |
| 562 for (Element* element = ElementTraversal::firstWithin(rootNode()); element; element = ElementTraversal::nextIncludingPseudo(*element)) { | 563 for (Element* element = ElementTraversal::firstWithin(rootNode()); element; element = ElementTraversal::nextIncludingPseudo(*element)) { |
| 563 for (ShadowRoot* root = element->youngestShadowRoot(); root; root = root ->olderShadowRoot()) | 564 for (ShadowRoot* root = element->youngestShadowRoot(); root; root = root ->olderShadowRoot()) |
| 564 root->setNeedsStyleRecalcForViewportUnits(); | 565 root->setNeedsStyleRecalcForViewportUnits(); |
| 565 const ComputedStyle* style = element->computedStyle(); | 566 const ComputedStyle* style = element->computedStyle(); |
| 566 if (style && style->hasViewportUnits()) | 567 if (style && style->hasViewportUnits()) |
| 567 element->setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForT racing::create(StyleChangeReason::ViewportUnits)); | 568 element->setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForT racing::create(StyleChangeReason::ViewportUnits)); |
| 568 } | 569 } |
| 569 } | 570 } |
| 570 | 571 |
| 572 TreeScope* TreeScope::composedParent() | |
| 573 { | |
| 574 if (rootNode().isDocumentNode()) | |
| 575 return nullptr; | |
| 576 if (!m_composedParent) { | |
| 577 ShadowRoot& root = toShadowRoot(rootNode()); | |
| 578 if (root.olderShadowRoot()) | |
| 579 m_composedParent = root.olderShadowRoot(); | |
| 580 else if (ContainerNode* host = rootNode().parentOrShadowHostNode()) | |
| 581 m_composedParent = treeScopeInComposedTree(*host); | |
|
esprehn
2015/05/19 02:37:56
Can we update these pointers inside the updateDist
rune
2015/05/19 11:08:18
Maybe, I need to look closer at the distribution c
| |
| 582 } | |
| 583 return m_composedParent; | |
| 584 } | |
| 585 | |
| 586 TreeScope* TreeScope::treeScopeInComposedTree(const Node& node) | |
| 587 { | |
| 588 for (Node* composedParent = ComposedTreeTraversal::parent(node); composedPar ent; composedParent = ComposedTreeTraversal::parent(*composedParent)) { | |
| 589 if (composedParent && isShadowHost(composedParent)) | |
|
esprehn
2015/05/19 02:37:56
This null check doesn't make sense, you're in a lo
rune
2015/05/19 11:08:18
Done.
| |
| 590 return toElement(composedParent)->shadow()->youngestShadowRoot(); | |
|
esprehn
2015/05/19 02:37:56
there's a getter right on Node for this, just do c
rune
2015/05/19 11:08:18
Done.
| |
| 591 } | |
| 592 return &node.document(); | |
| 593 } | |
| 594 | |
| 571 DEFINE_TRACE(TreeScope) | 595 DEFINE_TRACE(TreeScope) |
| 572 { | 596 { |
| 573 visitor->trace(m_rootNode); | 597 visitor->trace(m_rootNode); |
| 574 visitor->trace(m_document); | 598 visitor->trace(m_document); |
| 575 visitor->trace(m_parentTreeScope); | 599 visitor->trace(m_parentTreeScope); |
| 600 visitor->trace(m_composedParent); | |
| 576 visitor->trace(m_idTargetObserverRegistry); | 601 visitor->trace(m_idTargetObserverRegistry); |
| 577 visitor->trace(m_selection); | 602 visitor->trace(m_selection); |
| 578 visitor->trace(m_elementsById); | 603 visitor->trace(m_elementsById); |
| 579 visitor->trace(m_imageMapsByName); | 604 visitor->trace(m_imageMapsByName); |
| 580 visitor->trace(m_labelsByForAttribute); | 605 visitor->trace(m_labelsByForAttribute); |
| 581 visitor->trace(m_scopedStyleResolver); | 606 visitor->trace(m_scopedStyleResolver); |
| 582 } | 607 } |
| 583 | 608 |
| 584 } // namespace blink | 609 } // namespace blink |
| OLD | NEW |