| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Neither the name of Google Inc. nor the names of its | 10 * * Neither the name of Google Inc. nor the names of its |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 void ShadowRoot::recalcStyle(StyleRecalcChange change) | 133 void ShadowRoot::recalcStyle(StyleRecalcChange change) |
| 134 { | 134 { |
| 135 // ShadowRoot doesn't support custom callbacks. | 135 // ShadowRoot doesn't support custom callbacks. |
| 136 ASSERT(!hasCustomStyleCallbacks()); | 136 ASSERT(!hasCustomStyleCallbacks()); |
| 137 | 137 |
| 138 StyleResolverParentScope parentScope(*this); | 138 StyleResolverParentScope parentScope(*this); |
| 139 | 139 |
| 140 if (styleChangeType() >= SubtreeStyleChange) | 140 if (styleChangeType() >= SubtreeStyleChange) |
| 141 change = Force; | 141 change = Force; |
| 142 | 142 |
| 143 if (change < Force && hasRareData() && childNeedsStyleRecalc()) | |
| 144 checkForChildrenAdjacentRuleChanges(); | |
| 145 | |
| 146 // There's no style to update so just calling recalcStyle means we're update
d. | 143 // There's no style to update so just calling recalcStyle means we're update
d. |
| 147 clearNeedsStyleRecalc(); | 144 clearNeedsStyleRecalc(); |
| 148 | 145 |
| 149 // FIXME: This doesn't handle :hover + div properly like Element::recalcStyl
e does. | 146 recalcChildStyle(change); |
| 150 Text* lastTextNode = 0; | |
| 151 for (Node* child = lastChild(); child; child = child->previousSibling()) { | |
| 152 if (child->isTextNode()) { | |
| 153 toText(child)->recalcTextStyle(change, lastTextNode); | |
| 154 lastTextNode = toText(child); | |
| 155 } else if (child->isElementNode()) { | |
| 156 if (child->shouldCallRecalcStyle(change)) | |
| 157 toElement(child)->recalcStyle(change, lastTextNode); | |
| 158 if (child->renderer()) | |
| 159 lastTextNode = 0; | |
| 160 } | |
| 161 } | |
| 162 | |
| 163 clearChildNeedsStyleRecalc(); | 147 clearChildNeedsStyleRecalc(); |
| 164 } | 148 } |
| 165 | 149 |
| 166 void ShadowRoot::attach(const AttachContext& context) | 150 void ShadowRoot::attach(const AttachContext& context) |
| 167 { | 151 { |
| 168 StyleResolverParentScope parentScope(*this); | 152 StyleResolverParentScope parentScope(*this); |
| 169 DocumentFragment::attach(context); | 153 DocumentFragment::attach(context); |
| 170 } | 154 } |
| 171 | 155 |
| 172 Node::InsertionNotificationRequest ShadowRoot::insertedInto(ContainerNode* inser
tionPoint) | 156 Node::InsertionNotificationRequest ShadowRoot::insertedInto(ContainerNode* inser
tionPoint) |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 void ShadowRoot::trace(Visitor* visitor) | 320 void ShadowRoot::trace(Visitor* visitor) |
| 337 { | 321 { |
| 338 visitor->trace(m_prev); | 322 visitor->trace(m_prev); |
| 339 visitor->trace(m_next); | 323 visitor->trace(m_next); |
| 340 visitor->trace(m_shadowRootRareData); | 324 visitor->trace(m_shadowRootRareData); |
| 341 TreeScope::trace(visitor); | 325 TreeScope::trace(visitor); |
| 342 DocumentFragment::trace(visitor); | 326 DocumentFragment::trace(visitor); |
| 343 } | 327 } |
| 344 | 328 |
| 345 } | 329 } |
| OLD | NEW |