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

Side by Side Diff: Source/core/html/HTMLCollection.h

Issue 23983034: [oilpan] Handlify Node raw pointers in html/ and subclasses of dom/LiveNodeList. (Closed) Base URL: svn://svn.chromium.org/blink/branches/oilpan
Patch Set: Created 7 years, 3 months 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012 Apple Inc. All r ights reserved. 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012 Apple Inc. All r ights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 18 matching lines...) Expand all
29 #include <wtf/FastMalloc.h> 29 #include <wtf/FastMalloc.h>
30 #include <wtf/Forward.h> 30 #include <wtf/Forward.h>
31 #include <wtf/HashMap.h> 31 #include <wtf/HashMap.h>
32 #include <wtf/PassOwnPtr.h> 32 #include <wtf/PassOwnPtr.h>
33 #include <wtf/Vector.h> 33 #include <wtf/Vector.h>
34 34
35 namespace WebCore { 35 namespace WebCore {
36 36
37 class HTMLCollection : public LiveNodeListBase { 37 class HTMLCollection : public LiveNodeListBase {
38 public: 38 public:
39 static PassRefPtr<HTMLCollection> create(Node* base, CollectionType); 39 static PassRefPtr<HTMLCollection> create(const Handle<Node>& base, Collectio nType);
40 virtual ~HTMLCollection(); 40 virtual ~HTMLCollection();
41 41
42 // DOM API 42 // DOM API
43 virtual Result<Node> namedItem(const AtomicString& name) const; 43 virtual Result<Node> namedItem(const AtomicString& name) const;
44 PassRefPtr<NodeList> tags(const String&); 44 PassRefPtr<NodeList> tags(const String&);
45 45
46 // Non-DOM API 46 // Non-DOM API
47 virtual bool hasNamedItem(const AtomicString& name) const; 47 virtual bool hasNamedItem(const AtomicString& name) const;
48 void namedItems(const AtomicString& name, Vector<Member<Node> >&) const; 48 void namedItems(const AtomicString& name, Vector<Member<Node> >&) const;
49 bool isEmpty() const 49 bool isEmpty() const
(...skipping 12 matching lines...) Expand all
62 return cachedItem() && !cachedItemOffset() && !item(1); 62 return cachedItem() && !cachedItemOffset() && !item(1);
63 return item(0) && !item(1); 63 return item(0) && !item(1);
64 } 64 }
65 65
66 virtual Result<Element> virtualItemAfter(unsigned& offsetInArray, const Hand le<Element>&) const; 66 virtual Result<Element> virtualItemAfter(unsigned& offsetInArray, const Hand le<Element>&) const;
67 67
68 Result<Element> traverseFirstElement(unsigned& offsetInArray, const Handle<C ontainerNode>& root) const; 68 Result<Element> traverseFirstElement(unsigned& offsetInArray, const Handle<C ontainerNode>& root) const;
69 Result<Element> traverseForwardToOffset(unsigned offset, const Handle<Elemen t>& currentElement, unsigned& currentOffset, unsigned& offsetInArray, const Hand le<ContainerNode>& root) const; 69 Result<Element> traverseForwardToOffset(unsigned offset, const Handle<Elemen t>& currentElement, unsigned& currentOffset, unsigned& offsetInArray, const Hand le<ContainerNode>& root) const;
70 70
71 protected: 71 protected:
72 HTMLCollection(Node* base, CollectionType, ItemAfterOverrideType); 72 HTMLCollection(const Handle<Node>& base, CollectionType, ItemAfterOverrideTy pe);
73 73
74 virtual void updateNameCache() const; 74 virtual void updateNameCache() const;
75 75
76 // FIXME(oilpan): Move NodeList to the heap and visit members in NodeCacheMa p. 76 // FIXME(oilpan): Move NodeList to the heap and visit members in NodeCacheMa p.
77 // See more discussion in https://codereview.chromium.org/23005018/ 77 // See more discussion in https://codereview.chromium.org/23005018/
78 typedef HashMap<AtomicStringImpl*, OwnPtr<CollectionRoot<Vector<Member<Eleme nt> > > > > NodeCacheMap; 78 typedef HashMap<AtomicStringImpl*, OwnPtr<CollectionRoot<Vector<Member<Eleme nt> > > > > NodeCacheMap;
79 CollectionRoot<Vector<Member<Element> > >* idCache(const AtomicString& name) const { return m_idCache.get(name.impl()); } 79 CollectionRoot<Vector<Member<Element> > >* idCache(const AtomicString& name) const { return m_idCache.get(name.impl()); }
80 CollectionRoot<Vector<Member<Element> > >* nameCache(const AtomicString& nam e) const { return m_nameCache.get(name.impl()); } 80 CollectionRoot<Vector<Member<Element> > >* nameCache(const AtomicString& nam e) const { return m_nameCache.get(name.impl()); }
81 void appendIdCache(const AtomicString& name, const Handle<Element>& element) const { append(m_idCache, name, element); } 81 void appendIdCache(const AtomicString& name, const Handle<Element>& element) const { append(m_idCache, name, element); }
82 void appendNameCache(const AtomicString& name, const Handle<Element>& elemen t) const { append(m_nameCache, name, element); } 82 void appendNameCache(const AtomicString& name, const Handle<Element>& elemen t) const { append(m_nameCache, name, element); }
83 83
84 private: 84 private:
85 bool checkForNameMatch(const Handle<Element>&, bool checkName, const AtomicS tring& name) const; 85 bool checkForNameMatch(const Handle<Element>&, bool checkName, const AtomicS tring& name) const;
86 Result<Element> traverseNextElement(unsigned& offsetInArray, const Handle<El ement>& previous, const Handle<ContainerNode>& root) const; 86 Result<Element> traverseNextElement(unsigned& offsetInArray, const Handle<El ement>& previous, const Handle<ContainerNode>& root) const;
87 87
88 virtual bool isLiveNodeList() const OVERRIDE { ASSERT_NOT_REACHED(); return true; } 88 virtual bool isLiveNodeList() const OVERRIDE { ASSERT_NOT_REACHED(); return true; }
89 89
90 static void append(NodeCacheMap&, const AtomicString&, const Handle<Element> &); 90 static void append(NodeCacheMap&, const AtomicString&, const Handle<Element> &);
91 91
92 mutable NodeCacheMap m_idCache; 92 mutable NodeCacheMap m_idCache;
93 mutable NodeCacheMap m_nameCache; 93 mutable NodeCacheMap m_nameCache;
94 mutable unsigned m_cachedElementsArrayOffset; 94 mutable unsigned m_cachedElementsArrayOffset;
95 95
96 friend class LiveNodeListBase; 96 friend class LiveNodeListBase;
97 }; 97 };
98 98
99 } // namespace 99 } // namespace
100 100
101 #endif 101 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698