Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: third_party/WebKit/Source/core/svg/SVGDocumentExtensions.h

Issue 2473483004: Simplify SVG pending resource (re)validation (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/svg/SVGDocumentExtensions.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Apple Inc. All rights reserved. 2 * Copyright (C) 2006 Apple Inc. All rights reserved.
3 * Copyright (C) 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org> 3 * Copyright (C) 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org>
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 85
86 private: 86 private:
87 Member<Document> m_document; 87 Member<Document> m_document;
88 // For SVG 1.2 support this will need to be made more general. 88 // For SVG 1.2 support this will need to be made more general.
89 HeapHashSet<Member<SVGSVGElement>> m_timeContainers; 89 HeapHashSet<Member<SVGSVGElement>> m_timeContainers;
90 using SVGElementSet = HeapHashSet<Member<SVGElement>>; 90 using SVGElementSet = HeapHashSet<Member<SVGElement>>;
91 SVGElementSet m_webAnimationsPendingSVGElements; 91 SVGElementSet m_webAnimationsPendingSVGElements;
92 HashMap<AtomicString, LayoutSVGResourceContainer*> m_resources; 92 HashMap<AtomicString, LayoutSVGResourceContainer*> m_resources;
93 // Resources that are pending. 93 // Resources that are pending.
94 HeapHashMap<AtomicString, Member<SVGPendingElements>> m_pendingResources; 94 HeapHashMap<AtomicString, Member<SVGPendingElements>> m_pendingResources;
95 // Resources that are pending and scheduled for removal.
96 HeapHashMap<AtomicString, Member<SVGPendingElements>>
97 m_pendingResourcesForRemoval;
98 SVGResourcesCache m_resourcesCache; 95 SVGResourcesCache m_resourcesCache;
99 // Root SVG elements with relative length descendants. 96 // Root SVG elements with relative length descendants.
100 HeapHashSet<Member<SVGSVGElement>> m_relativeLengthSVGRoots; 97 HeapHashSet<Member<SVGSVGElement>> m_relativeLengthSVGRoots;
101 FloatPoint m_translate; 98 FloatPoint m_translate;
102 #if ENABLE(ASSERT) 99 #if ENABLE(ASSERT)
103 bool m_inRelativeLengthSVGRootsInvalidation; 100 bool m_inRelativeLengthSVGRootsInvalidation;
104 #endif 101 #endif
105 102
106 public: 103 public:
107 // This HashMap contains a list of pending resources. Pending resources, are 104 // This HashMap contains a list of pending resources. Pending resources, are
108 // such which are referenced by any object in the SVG document, but do NOT 105 // such which are referenced by any object in the SVG document, but do NOT
109 // exist yet. 106 // exist yet.
110 // For instance, dynamically build gradients / patterns / clippers... 107 // For instance, dynamically build gradients / patterns / clippers...
111 void addPendingResource(const AtomicString& id, Element*); 108 void addPendingResource(const AtomicString& id, Element*);
112 bool hasPendingResource(const AtomicString& id) const; 109 bool hasPendingResource(const AtomicString& id) const;
113 bool isElementPendingResources(Element*) const; 110 bool isElementPendingResources(Element*) const;
114 bool isElementPendingResource(Element*, const AtomicString& id) const; 111 bool isElementPendingResource(Element*, const AtomicString& id) const;
115 void clearHasPendingResourcesIfPossible(Element*); 112 void clearHasPendingResourcesIfPossible(Element*);
116 void removeElementFromPendingResources(Element*); 113 void removeElementFromPendingResources(Element*);
117 SVGPendingElements* removePendingResource(const AtomicString& id); 114 SVGPendingElements* removePendingResource(const AtomicString& id);
118 115
119 void serviceAnimations(); 116 void serviceAnimations();
120
121 // The following two functions are used for scheduling a pending resource to
122 // be removed.
123 void markPendingResourcesForRemoval(const AtomicString&);
124 Element* removeElementFromPendingResourcesForRemoval(const AtomicString&);
125
126 private:
127 SVGPendingElements* removePendingResourceForRemoval(const AtomicString&);
128 }; 117 };
129 118
130 } // namespace blink 119 } // namespace blink
131 120
132 #endif 121 #endif
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/svg/SVGDocumentExtensions.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698