OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2005 Frerich Raabe <raabe@kde.org> | 2 * Copyright (C) 2005 Frerich Raabe <raabe@kde.org> |
3 * Copyright (C) 2006, 2009 Apple Inc. All rights reserved. | 3 * Copyright (C) 2006, 2009 Apple Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * | 8 * |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 13 matching lines...) Expand all Loading... | |
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
25 */ | 25 */ |
26 | 26 |
27 #ifndef XPathResult_h | 27 #ifndef XPathResult_h |
28 #define XPathResult_h | 28 #define XPathResult_h |
29 | 29 |
30 #include "bindings/core/v8/ScriptWrappable.h" | 30 #include "bindings/core/v8/ScriptWrappable.h" |
31 #include "core/xml/XPathValue.h" | 31 #include "core/xml/XPathValue.h" |
32 #include "platform/heap/Handle.h" | 32 #include "platform/heap/Handle.h" |
33 #include "wtf/Forward.h" | 33 #include "wtf/Forward.h" |
34 #include "wtf/RefCounted.h" | |
35 | 34 |
36 namespace blink { | 35 namespace blink { |
37 | 36 |
38 class Document; | 37 class Document; |
39 class ExceptionState; | 38 class ExceptionState; |
40 class Node; | 39 class Node; |
41 | 40 |
42 namespace XPath { | 41 namespace XPath { |
43 struct EvaluationContext; | 42 struct EvaluationContext; |
44 } | 43 } |
45 | 44 |
46 class XPathResult final : public RefCountedWillBeGarbageCollected<XPathResult>, public ScriptWrappable { | 45 // TODO(Oilpan): remove Finalized when transition type for m_document is. |
haraken
2015/04/26 15:36:23
One thing we could do is to introduce GarbageColle
| |
47 DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(XPathResult); | 46 class XPathResult final : public GarbageCollectedFinalized<XPathResult>, public ScriptWrappable { |
48 DEFINE_WRAPPERTYPEINFO(); | 47 DEFINE_WRAPPERTYPEINFO(); |
49 public: | 48 public: |
50 enum XPathResultType { | 49 enum XPathResultType { |
51 ANY_TYPE = 0, | 50 ANY_TYPE = 0, |
52 NUMBER_TYPE = 1, | 51 NUMBER_TYPE = 1, |
53 STRING_TYPE = 2, | 52 STRING_TYPE = 2, |
54 BOOLEAN_TYPE = 3, | 53 BOOLEAN_TYPE = 3, |
55 UNORDERED_NODE_ITERATOR_TYPE = 4, | 54 UNORDERED_NODE_ITERATOR_TYPE = 4, |
56 ORDERED_NODE_ITERATOR_TYPE = 5, | 55 ORDERED_NODE_ITERATOR_TYPE = 5, |
57 UNORDERED_NODE_SNAPSHOT_TYPE = 6, | 56 UNORDERED_NODE_SNAPSHOT_TYPE = 6, |
58 ORDERED_NODE_SNAPSHOT_TYPE = 7, | 57 ORDERED_NODE_SNAPSHOT_TYPE = 7, |
59 ANY_UNORDERED_NODE_TYPE = 8, | 58 ANY_UNORDERED_NODE_TYPE = 8, |
60 FIRST_ORDERED_NODE_TYPE = 9 | 59 FIRST_ORDERED_NODE_TYPE = 9 |
61 }; | 60 }; |
62 | 61 |
63 static PassRefPtrWillBeRawPtr<XPathResult> create(XPath::EvaluationContext& context, const XPath::Value& value) | 62 static XPathResult* create(XPath::EvaluationContext& context, const XPath::V alue& value) |
64 { | 63 { |
65 return adoptRefWillBeNoop(new XPathResult(context, value)); | 64 return new XPathResult(context, value); |
66 } | 65 } |
67 | 66 |
67 ~XPathResult(); | |
68 | |
68 void convertTo(unsigned short type, ExceptionState&); | 69 void convertTo(unsigned short type, ExceptionState&); |
69 | 70 |
70 unsigned short resultType() const; | 71 unsigned short resultType() const; |
71 | 72 |
72 double numberValue(ExceptionState&) const; | 73 double numberValue(ExceptionState&) const; |
73 String stringValue(ExceptionState&) const; | 74 String stringValue(ExceptionState&) const; |
74 bool booleanValue(ExceptionState&) const; | 75 bool booleanValue(ExceptionState&) const; |
75 Node* singleNodeValue(ExceptionState&) const; | 76 Node* singleNodeValue(ExceptionState&) const; |
76 | 77 |
77 bool invalidIteratorState() const; | 78 bool invalidIteratorState() const; |
78 unsigned snapshotLength(ExceptionState&) const; | 79 unsigned snapshotLength(ExceptionState&) const; |
79 Node* iterateNext(ExceptionState&); | 80 Node* iterateNext(ExceptionState&); |
80 Node* snapshotItem(unsigned index, ExceptionState&); | 81 Node* snapshotItem(unsigned index, ExceptionState&); |
81 | 82 |
82 const XPath::Value& value() const { return m_value; } | 83 const XPath::Value& value() const { return m_value; } |
83 | 84 |
84 DECLARE_TRACE(); | 85 DECLARE_TRACE(); |
85 | 86 |
86 private: | 87 private: |
87 XPathResult(XPath::EvaluationContext&, const XPath::Value&); | 88 XPathResult(XPath::EvaluationContext&, const XPath::Value&); |
88 XPath::NodeSet& nodeSet() { return *m_nodeSet; } | 89 XPath::NodeSet& nodeSet() { return *m_nodeSet; } |
89 | 90 |
90 XPath::Value m_value; | 91 XPath::Value m_value; |
91 unsigned m_nodeSetPosition; | 92 unsigned m_nodeSetPosition; |
92 OwnPtrWillBeMember<XPath::NodeSet> m_nodeSet; // FIXME: why duplicate the no de set stored in m_value? | 93 Member<XPath::NodeSet> m_nodeSet; // FIXME: why duplicate the node set store d in m_value? |
93 unsigned short m_resultType; | 94 unsigned short m_resultType; |
94 RefPtrWillBeMember<Document> m_document; | 95 RefPtrWillBeMember<Document> m_document; |
95 uint64_t m_domTreeVersion; | 96 uint64_t m_domTreeVersion; |
96 }; | 97 }; |
97 | 98 |
98 } // namespace blink | 99 } // namespace blink |
99 | 100 |
100 #endif // XPathResult_h | 101 #endif // XPathResult_h |
OLD | NEW |