OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 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 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 NodeToDestinationInsertionPoints::const_iterator it = m_nodeToInsertionPoint
s.find(key); | 269 NodeToDestinationInsertionPoints::const_iterator it = m_nodeToInsertionPoint
s.find(key); |
270 #if ENABLE(OILPAN) | 270 #if ENABLE(OILPAN) |
271 return it == m_nodeToInsertionPoints.end() ? nullptr : it->value.get(); | 271 return it == m_nodeToInsertionPoints.end() ? nullptr : it->value.get(); |
272 #else | 272 #else |
273 return it == m_nodeToInsertionPoints.end() ? nullptr : &it->value; | 273 return it == m_nodeToInsertionPoints.end() ? nullptr : &it->value; |
274 #endif | 274 #endif |
275 } | 275 } |
276 | 276 |
277 void ElementShadow::distribute() | 277 void ElementShadow::distribute() |
278 { | 278 { |
| 279 if (isV1()) |
| 280 distributeV1(); |
| 281 else |
| 282 distributeV0(); |
| 283 } |
| 284 |
| 285 void ElementShadow::distributeV0() |
| 286 { |
279 host()->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing:
:create(StyleChangeReason::Shadow)); | 287 host()->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing:
:create(StyleChangeReason::Shadow)); |
280 WillBeHeapVector<RawPtrWillBeMember<HTMLShadowElement>, 32> shadowInsertionP
oints; | 288 WillBeHeapVector<RawPtrWillBeMember<HTMLShadowElement>, 32> shadowInsertionP
oints; |
281 DistributionPool pool(*host()); | 289 DistributionPool pool(*host()); |
282 | 290 |
283 for (ShadowRoot* root = &youngestShadowRoot(); root; root = root->olderShado
wRoot()) { | 291 for (ShadowRoot* root = &youngestShadowRoot(); root; root = root->olderShado
wRoot()) { |
284 HTMLShadowElement* shadowInsertionPoint = 0; | 292 HTMLShadowElement* shadowInsertionPoint = 0; |
285 const WillBeHeapVector<RefPtrWillBeMember<InsertionPoint>>& insertionPoi
nts = root->descendantInsertionPoints(); | 293 const WillBeHeapVector<RefPtrWillBeMember<InsertionPoint>>& insertionPoi
nts = root->descendantInsertionPoints(); |
286 for (size_t i = 0; i < insertionPoints.size(); ++i) { | 294 for (size_t i = 0; i < insertionPoints.size(); ++i) { |
287 InsertionPoint* point = insertionPoints[i].get(); | 295 InsertionPoint* point = insertionPoints[i].get(); |
288 if (!point->isActive()) | 296 if (!point->isActive()) |
(...skipping 22 matching lines...) Expand all Loading... |
311 DistributionPool olderShadowRootPool(*root->olderShadowRoot()); | 319 DistributionPool olderShadowRootPool(*root->olderShadowRoot()); |
312 olderShadowRootPool.distributeTo(shadowInsertionPoint, this); | 320 olderShadowRootPool.distributeTo(shadowInsertionPoint, this); |
313 root->olderShadowRoot()->setShadowInsertionPointOfYoungerShadowRoot(
shadowInsertionPoint); | 321 root->olderShadowRoot()->setShadowInsertionPointOfYoungerShadowRoot(
shadowInsertionPoint); |
314 } | 322 } |
315 if (ElementShadow* shadow = shadowWhereNodeCanBeDistributed(*shadowInser
tionPoint)) | 323 if (ElementShadow* shadow = shadowWhereNodeCanBeDistributed(*shadowInser
tionPoint)) |
316 shadow->setNeedsDistributionRecalc(); | 324 shadow->setNeedsDistributionRecalc(); |
317 } | 325 } |
318 InspectorInstrumentation::didPerformElementShadowDistribution(host()); | 326 InspectorInstrumentation::didPerformElementShadowDistribution(host()); |
319 } | 327 } |
320 | 328 |
| 329 void ElementShadow::distributeV1() |
| 330 { |
| 331 // TODO(hayato): Implement this |
| 332 } |
| 333 |
321 void ElementShadow::didDistributeNode(const Node* node, InsertionPoint* insertio
nPoint) | 334 void ElementShadow::didDistributeNode(const Node* node, InsertionPoint* insertio
nPoint) |
322 { | 335 { |
323 #if ENABLE(OILPAN) | 336 #if ENABLE(OILPAN) |
324 NodeToDestinationInsertionPoints::AddResult result = m_nodeToInsertionPoints
.add(node, nullptr); | 337 NodeToDestinationInsertionPoints::AddResult result = m_nodeToInsertionPoints
.add(node, nullptr); |
325 if (result.isNewEntry) | 338 if (result.isNewEntry) |
326 result.storedValue->value = adoptPtrWillBeNoop(new DestinationInsertionP
oints()); | 339 result.storedValue->value = adoptPtrWillBeNoop(new DestinationInsertionP
oints()); |
327 result.storedValue->value->append(insertionPoint); | 340 result.storedValue->value->append(insertionPoint); |
328 #else | 341 #else |
329 NodeToDestinationInsertionPoints::AddResult result = m_nodeToInsertionPoints
.add(node, DestinationInsertionPoints()); | 342 NodeToDestinationInsertionPoints::AddResult result = m_nodeToInsertionPoints
.add(node, DestinationInsertionPoints()); |
330 result.storedValue->value.append(insertionPoint); | 343 result.storedValue->value.append(insertionPoint); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 visitor->trace(m_nodeToInsertionPoints); | 395 visitor->trace(m_nodeToInsertionPoints); |
383 visitor->trace(m_selectFeatures); | 396 visitor->trace(m_selectFeatures); |
384 // Shadow roots are linked with previous and next pointers which are traced. | 397 // Shadow roots are linked with previous and next pointers which are traced. |
385 // It is therefore enough to trace one of the shadow roots here and the | 398 // It is therefore enough to trace one of the shadow roots here and the |
386 // rest will be traced from there. | 399 // rest will be traced from there. |
387 visitor->trace(m_shadowRoots.head()); | 400 visitor->trace(m_shadowRoots.head()); |
388 #endif | 401 #endif |
389 } | 402 } |
390 | 403 |
391 } // namespace | 404 } // namespace |
OLD | NEW |