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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 80 #endif | 80 #endif |
| 81 , m_idTargetObserverRegistry(IdTargetObserverRegistry::create()) | 81 , m_idTargetObserverRegistry(IdTargetObserverRegistry::create()) |
| 82 { | 82 { |
| 83 m_rootNode.setTreeScope(this); | 83 m_rootNode.setTreeScope(this); |
| 84 } | 84 } |
| 85 | 85 |
| 86 TreeScope::~TreeScope() | 86 TreeScope::~TreeScope() |
| 87 { | 87 { |
| 88 #if !ENABLE(OILPAN) | 88 #if !ENABLE(OILPAN) |
| 89 ASSERT(!m_guardRefCount); | 89 ASSERT(!m_guardRefCount); |
| 90 #endif | |
| 91 m_rootNode.setTreeScope(0); | 90 m_rootNode.setTreeScope(0); |
|
haraken
2014/05/06 04:20:16
You can remove this code because the root Node is
Mads Ager (chromium)
2014/05/06 08:26:00
Yes, it would. m_rootNode is a reference at this p
| |
| 92 | 91 |
| 93 #if !ENABLE(OILPAN) | |
| 94 if (m_selection) { | 92 if (m_selection) { |
| 95 m_selection->clearTreeScope(); | 93 m_selection->clearTreeScope(); |
| 96 m_selection = nullptr; | 94 m_selection = nullptr; |
| 97 } | 95 } |
| 98 | 96 |
| 99 if (m_parentTreeScope) | 97 if (m_parentTreeScope) |
| 100 m_parentTreeScope->guardDeref(); | 98 m_parentTreeScope->guardDeref(); |
| 101 #endif | 99 #endif |
| 102 } | 100 } |
| 103 | 101 |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 331 | 329 |
| 332 bool TreeScope::applyAuthorStyles() const | 330 bool TreeScope::applyAuthorStyles() const |
| 333 { | 331 { |
| 334 return rootNode().isDocumentNode(); | 332 return rootNode().isDocumentNode(); |
| 335 } | 333 } |
| 336 | 334 |
| 337 void TreeScope::adoptIfNeeded(Node& node) | 335 void TreeScope::adoptIfNeeded(Node& node) |
| 338 { | 336 { |
| 339 ASSERT(this); | 337 ASSERT(this); |
| 340 ASSERT(!node.isDocumentNode()); | 338 ASSERT(!node.isDocumentNode()); |
| 339 #if !ENABLE(OILPAN) | |
| 341 ASSERT_WITH_SECURITY_IMPLICATION(!node.m_deletionHasBegun); | 340 ASSERT_WITH_SECURITY_IMPLICATION(!node.m_deletionHasBegun); |
| 341 #endif | |
| 342 TreeScopeAdopter adopter(node, *this); | 342 TreeScopeAdopter adopter(node, *this); |
| 343 if (adopter.needsScopeChange()) | 343 if (adopter.needsScopeChange()) |
| 344 adopter.execute(); | 344 adopter.execute(); |
| 345 } | 345 } |
| 346 | 346 |
| 347 static Element* focusedFrameOwnerElement(LocalFrame* focusedFrame, LocalFrame* c urrentFrame) | 347 static Element* focusedFrameOwnerElement(LocalFrame* focusedFrame, LocalFrame* c urrentFrame) |
| 348 { | 348 { |
| 349 for (; focusedFrame; focusedFrame = focusedFrame->tree().parent()) { | 349 for (; focusedFrame; focusedFrame = focusedFrame->tree().parent()) { |
| 350 if (focusedFrame->tree().parent() == currentFrame) | 350 if (focusedFrame->tree().parent() == currentFrame) |
| 351 return focusedFrame->ownerElement(); | 351 return focusedFrame->ownerElement(); |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 472 listTreeScopes(nodeB, treeScopesB); | 472 listTreeScopes(nodeB, treeScopesB); |
| 473 | 473 |
| 474 size_t indexA = treeScopesA.size(); | 474 size_t indexA = treeScopesA.size(); |
| 475 size_t indexB = treeScopesB.size(); | 475 size_t indexB = treeScopesB.size(); |
| 476 | 476 |
| 477 for (; indexA > 0 && indexB > 0 && treeScopesA[indexA - 1] == treeScopesB[in dexB - 1]; --indexA, --indexB) { } | 477 for (; indexA > 0 && indexB > 0 && treeScopesA[indexA - 1] == treeScopesB[in dexB - 1]; --indexA, --indexB) { } |
| 478 | 478 |
| 479 return treeScopesA[indexA] == treeScopesB[indexB] ? treeScopesA[indexA] : 0; | 479 return treeScopesA[indexA] == treeScopesB[indexB] ? treeScopesA[indexA] : 0; |
| 480 } | 480 } |
| 481 | 481 |
| 482 #if SECURITY_ASSERT_ENABLED | 482 #if SECURITY_ASSERT_ENABLED && !ENABLE(OILPAN) |
| 483 bool TreeScope::deletionHasBegun() | 483 bool TreeScope::deletionHasBegun() |
| 484 { | 484 { |
| 485 return rootNode().m_deletionHasBegun; | 485 return rootNode().m_deletionHasBegun; |
| 486 } | 486 } |
| 487 | 487 |
| 488 void TreeScope::beginDeletion() | 488 void TreeScope::beginDeletion() |
| 489 { | 489 { |
| 490 rootNode().m_deletionHasBegun = true; | 490 rootNode().m_deletionHasBegun = true; |
| 491 } | 491 } |
| 492 #endif | 492 #endif |
| 493 | 493 |
| 494 #if !ENABLE(OILPAN) | |
| 494 int TreeScope::refCount() const | 495 int TreeScope::refCount() const |
| 495 { | 496 { |
| 496 return rootNode().refCount(); | 497 return rootNode().refCount(); |
| 497 } | 498 } |
| 499 #endif | |
| 498 | 500 |
| 499 bool TreeScope::isInclusiveAncestorOf(const TreeScope& scope) const | 501 bool TreeScope::isInclusiveAncestorOf(const TreeScope& scope) const |
| 500 { | 502 { |
| 501 for (const TreeScope* current = &scope; current; current = current->parentTr eeScope()) { | 503 for (const TreeScope* current = &scope; current; current = current->parentTr eeScope()) { |
| 502 if (current == this) | 504 if (current == this) |
| 503 return true; | 505 return true; |
| 504 } | 506 } |
| 505 return false; | 507 return false; |
| 506 } | 508 } |
| 507 | 509 |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 528 for (ShadowRoot* root = element->youngestShadowRoot(); root; root = root ->olderShadowRoot()) | 530 for (ShadowRoot* root = element->youngestShadowRoot(); root; root = root ->olderShadowRoot()) |
| 529 root->setNeedsStyleRecalcForViewportUnits(); | 531 root->setNeedsStyleRecalcForViewportUnits(); |
| 530 RenderStyle* style = element->renderStyle(); | 532 RenderStyle* style = element->renderStyle(); |
| 531 if (style && style->hasViewportUnits()) | 533 if (style && style->hasViewportUnits()) |
| 532 element->setNeedsStyleRecalc(LocalStyleChange); | 534 element->setNeedsStyleRecalc(LocalStyleChange); |
| 533 } | 535 } |
| 534 } | 536 } |
| 535 | 537 |
| 536 void TreeScope::trace(Visitor* visitor) | 538 void TreeScope::trace(Visitor* visitor) |
| 537 { | 539 { |
| 540 visitor->trace(&m_rootNode); | |
|
haraken
2014/05/06 04:20:16
This looks weird. Shall we change the reference ba
Mads Ager (chromium)
2014/05/06 08:26:00
Yes, done.
| |
| 541 visitor->trace(m_document); | |
| 538 visitor->trace(m_parentTreeScope); | 542 visitor->trace(m_parentTreeScope); |
| 539 visitor->trace(m_selection); | 543 visitor->trace(m_selection); |
| 540 } | 544 } |
| 541 | 545 |
| 542 } // namespace WebCore | 546 } // namespace WebCore |
| OLD | NEW |