| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 2  * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 
| 3  * | 3  * | 
| 4  * This library is free software; you can redistribute it and/or | 4  * This library is free software; you can redistribute it and/or | 
| 5  * modify it under the terms of the GNU Library General Public | 5  * modify it under the terms of the GNU Library General Public | 
| 6  * License as published by the Free Software Foundation; either | 6  * License as published by the Free Software Foundation; either | 
| 7  * version 2 of the License, or (at your option) any later version. | 7  * version 2 of the License, or (at your option) any later version. | 
| 8  * | 8  * | 
| 9  * This library is distributed in the hope that it will be useful, | 9  * This library is distributed in the hope that it will be useful, | 
| 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 150 template <> | 150 template <> | 
| 151 bool IsResourceOfType<LayoutSVGResourceContainer>( | 151 bool IsResourceOfType<LayoutSVGResourceContainer>( | 
| 152     LayoutSVGResourceContainer* container) { | 152     LayoutSVGResourceContainer* container) { | 
| 153   return true; | 153   return true; | 
| 154 } | 154 } | 
| 155 | 155 | 
| 156 template <typename ContainerType> | 156 template <typename ContainerType> | 
| 157 ContainerType* AttachToResource(SVGTreeScopeResources& tree_scope_resources, | 157 ContainerType* AttachToResource(SVGTreeScopeResources& tree_scope_resources, | 
| 158                                 const AtomicString& id, | 158                                 const AtomicString& id, | 
| 159                                 SVGElement& element) { | 159                                 SVGElement& element) { | 
| 160   if (LayoutSVGResourceContainer* container = | 160   SVGTreeScopeResources::Resource* resource = | 
| 161           tree_scope_resources.ResourceById(id)) { | 161       tree_scope_resources.ResourceForId(id); | 
|  | 162   if (!resource) | 
|  | 163     return nullptr; | 
|  | 164   if (LayoutSVGResourceContainer* container = resource->ResourceContainer()) { | 
| 162     if (IsResourceOfType<ContainerType>(container)) | 165     if (IsResourceOfType<ContainerType>(container)) | 
| 163       return static_cast<ContainerType*>(container); | 166       return static_cast<ContainerType*>(container); | 
| 164   } | 167   } | 
| 165   tree_scope_resources.AddPendingResource(id, element); | 168   resource->AddWatch(element); | 
| 166   return nullptr; | 169   return nullptr; | 
| 167 } | 170 } | 
| 168 } | 171 } | 
| 169 | 172 | 
| 170 bool SVGResources::HasResourceData() const { | 173 bool SVGResources::HasResourceData() const { | 
| 171   return clipper_filter_masker_data_ || marker_data_ || fill_stroke_data_ || | 174   return clipper_filter_masker_data_ || marker_data_ || fill_stroke_data_ || | 
| 172          linked_resource_; | 175          linked_resource_; | 
| 173 } | 176 } | 
| 174 | 177 | 
| 175 static inline SVGResources& EnsureResources( | 178 static inline SVGResources& EnsureResources( | 
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 272     AtomicString id = TargetReferenceFromResource(element); | 275     AtomicString id = TargetReferenceFromResource(element); | 
| 273     EnsureResources(resources).SetLinkedResource( | 276     EnsureResources(resources).SetLinkedResource( | 
| 274         AttachToResource<LayoutSVGResourceContainer>(tree_scope_resources, id, | 277         AttachToResource<LayoutSVGResourceContainer>(tree_scope_resources, id, | 
| 275                                                      element)); | 278                                                      element)); | 
| 276   } | 279   } | 
| 277 | 280 | 
| 278   return (!resources || !resources->HasResourceData()) ? nullptr | 281   return (!resources || !resources->HasResourceData()) ? nullptr | 
| 279                                                        : std::move(resources); | 282                                                        : std::move(resources); | 
| 280 } | 283 } | 
| 281 | 284 | 
|  | 285 void SVGResources::RemoveUnreferencedResources(const LayoutObject& object) { | 
|  | 286   SVGTreeScopeResources& tree_scope_resources = | 
|  | 287       ToSVGElement(*object.GetNode()) | 
|  | 288           .TreeScopeForIdResolution() | 
|  | 289           .EnsureSVGTreeScopedResources(); | 
|  | 290   tree_scope_resources.RemoveUnreferencedResources(); | 
|  | 291 } | 
|  | 292 | 
|  | 293 void SVGResources::RemoveWatchesForElement(Element& element) { | 
|  | 294   SECURITY_DCHECK(element.IsSVGElement()); | 
|  | 295   SVGElement& svg_element = ToSVGElement(element); | 
|  | 296   SVGTreeScopeResources& tree_scope_resources = | 
|  | 297       svg_element.TreeScopeForIdResolution().EnsureSVGTreeScopedResources(); | 
|  | 298   tree_scope_resources.RemoveWatchesForElement(svg_element); | 
|  | 299 } | 
|  | 300 | 
| 282 void SVGResources::LayoutIfNeeded() { | 301 void SVGResources::LayoutIfNeeded() { | 
| 283   if (clipper_filter_masker_data_) { | 302   if (clipper_filter_masker_data_) { | 
| 284     if (LayoutSVGResourceClipper* clipper = | 303     if (LayoutSVGResourceClipper* clipper = | 
| 285             clipper_filter_masker_data_->clipper) | 304             clipper_filter_masker_data_->clipper) | 
| 286       clipper->LayoutIfNeeded(); | 305       clipper->LayoutIfNeeded(); | 
| 287     if (LayoutSVGResourceMasker* masker = clipper_filter_masker_data_->masker) | 306     if (LayoutSVGResourceMasker* masker = clipper_filter_masker_data_->masker) | 
| 288       masker->LayoutIfNeeded(); | 307       masker->LayoutIfNeeded(); | 
| 289     if (LayoutSVGResourceFilter* filter = clipper_filter_masker_data_->filter) | 308     if (LayoutSVGResourceFilter* filter = clipper_filter_masker_data_->filter) | 
| 290       filter->LayoutIfNeeded(); | 309       filter->LayoutIfNeeded(); | 
| 291   } | 310   } | 
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 654               stroke->GetElement()); | 673               stroke->GetElement()); | 
| 655   } | 674   } | 
| 656 | 675 | 
| 657   if (linked_resource_) | 676   if (linked_resource_) | 
| 658     fprintf(stderr, " |-> xlink:href : %p (node=%p)\n", linked_resource_, | 677     fprintf(stderr, " |-> xlink:href : %p (node=%p)\n", linked_resource_, | 
| 659             linked_resource_->GetElement()); | 678             linked_resource_->GetElement()); | 
| 660 } | 679 } | 
| 661 #endif | 680 #endif | 
| 662 | 681 | 
| 663 }  // namespace blink | 682 }  // namespace blink | 
| OLD | NEW | 
|---|