OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2010 Google Inc. All rights reserved. | 2 * Copyright (c) 2010 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 13 matching lines...) Expand all Loading... |
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 #ifndef CSSPropertySourceData_h | 31 #ifndef CSSPropertySourceData_h |
32 #define CSSPropertySourceData_h | 32 #define CSSPropertySourceData_h |
33 | 33 |
| 34 #include "heap/Handle.h" |
34 #include "wtf/Forward.h" | 35 #include "wtf/Forward.h" |
35 #include "wtf/RefCounted.h" | 36 #include "wtf/RefCounted.h" |
36 #include "wtf/Vector.h" | 37 #include "wtf/Vector.h" |
37 #include "wtf/text/WTFString.h" | 38 #include "wtf/text/WTFString.h" |
38 | 39 |
39 namespace WebCore { | 40 namespace WebCore { |
40 | 41 |
41 class StyleRuleBase; | 42 class StyleRuleBase; |
42 | 43 |
43 struct SourceRange { | 44 struct SourceRange { |
| 45 ALLOW_ONLY_INLINE_ALLOCATION(); |
| 46 public: |
44 SourceRange(); | 47 SourceRange(); |
45 SourceRange(unsigned start, unsigned end); | 48 SourceRange(unsigned start, unsigned end); |
46 unsigned length() const; | 49 unsigned length() const; |
47 | 50 |
| 51 void trace(Visitor*) { } |
| 52 |
48 unsigned start; | 53 unsigned start; |
49 unsigned end; | 54 unsigned end; |
50 }; | 55 }; |
51 | 56 |
52 struct CSSPropertySourceData { | 57 struct CSSPropertySourceData { |
53 static void init(); | 58 ALLOW_ONLY_INLINE_ALLOCATION(); |
54 | 59 public: |
55 CSSPropertySourceData(const String& name, const String& value, bool importan
t, bool disabled, bool parsedOk, const SourceRange& range); | 60 CSSPropertySourceData(const String& name, const String& value, bool importan
t, bool disabled, bool parsedOk, const SourceRange& range); |
56 CSSPropertySourceData(const CSSPropertySourceData& other); | 61 CSSPropertySourceData(const CSSPropertySourceData& other); |
57 CSSPropertySourceData(); | 62 CSSPropertySourceData(); |
58 | 63 |
59 String toString() const; | 64 String toString() const; |
60 unsigned hash() const; | 65 unsigned hash() const; |
61 | 66 |
| 67 void trace(Visitor* visitor) { visitor->trace(range); } |
| 68 |
62 String name; | 69 String name; |
63 String value; | 70 String value; |
64 bool important; | 71 bool important; |
65 bool disabled; | 72 bool disabled; |
66 bool parsedOk; | 73 bool parsedOk; |
67 SourceRange range; | 74 SourceRange range; |
68 }; | 75 }; |
69 | 76 |
70 #ifndef CSSPROPERTYSOURCEDATA_HIDE_GLOBALS | 77 struct CSSStyleSourceData : public RefCountedWillBeGarbageCollected<CSSStyleSour
ceData> { |
71 extern const CSSPropertySourceData emptyCSSPropertySourceData; | 78 static PassRefPtrWillBeRawPtr<CSSStyleSourceData> create() |
72 #endif | |
73 | |
74 struct CSSStyleSourceData : public RefCounted<CSSStyleSourceData> { | |
75 static PassRefPtr<CSSStyleSourceData> create() | |
76 { | 79 { |
77 return adoptRef(new CSSStyleSourceData()); | 80 return adoptRefWillBeNoop(new CSSStyleSourceData()); |
78 } | 81 } |
79 | 82 |
80 Vector<CSSPropertySourceData> propertyData; | 83 void trace(Visitor* visitor) { visitor->trace(propertyData); } |
| 84 |
| 85 WillBeHeapVector<CSSPropertySourceData> propertyData; |
81 }; | 86 }; |
82 | 87 |
83 struct CSSRuleSourceData; | 88 struct CSSRuleSourceData; |
84 typedef Vector<RefPtr<CSSRuleSourceData> > RuleSourceDataList; | 89 typedef WillBeHeapVector<RefPtrWillBeMember<CSSRuleSourceData> > RuleSourceDataL
ist; |
85 typedef Vector<SourceRange> SelectorRangeList; | 90 typedef WillBeHeapVector<SourceRange> SelectorRangeList; |
86 | 91 |
87 struct CSSRuleSourceData : public RefCounted<CSSRuleSourceData> { | 92 struct CSSRuleSourceData : public RefCountedWillBeGarbageCollected<CSSRuleSource
Data> { |
88 enum Type { | 93 enum Type { |
89 UNKNOWN_RULE, | 94 UNKNOWN_RULE, |
90 STYLE_RULE, | 95 STYLE_RULE, |
91 CHARSET_RULE, | 96 CHARSET_RULE, |
92 IMPORT_RULE, | 97 IMPORT_RULE, |
93 MEDIA_RULE, | 98 MEDIA_RULE, |
94 FONT_FACE_RULE, | 99 FONT_FACE_RULE, |
95 PAGE_RULE, | 100 PAGE_RULE, |
96 KEYFRAMES_RULE, | 101 KEYFRAMES_RULE, |
97 VIEWPORT_RULE, | 102 VIEWPORT_RULE, |
98 SUPPORTS_RULE, | 103 SUPPORTS_RULE, |
99 FILTER_RULE | 104 FILTER_RULE |
100 }; | 105 }; |
101 | 106 |
102 static PassRefPtr<CSSRuleSourceData> create(Type type) | 107 static PassRefPtrWillBeRawPtr<CSSRuleSourceData> create(Type type) |
103 { | 108 { |
104 return adoptRef(new CSSRuleSourceData(type)); | 109 return adoptRefWillBeNoop(new CSSRuleSourceData(type)); |
105 } | 110 } |
106 | 111 |
107 static PassRefPtr<CSSRuleSourceData> createUnknown() | 112 static PassRefPtrWillBeRawPtr<CSSRuleSourceData> createUnknown() |
108 { | 113 { |
109 return adoptRef(new CSSRuleSourceData(UNKNOWN_RULE)); | 114 return adoptRefWillBeNoop(new CSSRuleSourceData(UNKNOWN_RULE)); |
110 } | 115 } |
111 | 116 |
112 CSSRuleSourceData(Type type) | 117 CSSRuleSourceData(Type type) |
113 : type(type) | 118 : type(type) |
114 { | 119 { |
115 if (type == STYLE_RULE || type == FONT_FACE_RULE || type == PAGE_RULE) | 120 if (type == STYLE_RULE || type == FONT_FACE_RULE || type == PAGE_RULE) |
116 styleSourceData = CSSStyleSourceData::create(); | 121 styleSourceData = CSSStyleSourceData::create(); |
117 } | 122 } |
118 | 123 |
| 124 void trace(Visitor*); |
| 125 |
119 Type type; | 126 Type type; |
120 | 127 |
121 // Range of the selector list in the enclosing source. | 128 // Range of the selector list in the enclosing source. |
122 SourceRange ruleHeaderRange; | 129 SourceRange ruleHeaderRange; |
123 | 130 |
124 // Range of the rule body (e.g. style text for style rules) in the enclosing
source. | 131 // Range of the rule body (e.g. style text for style rules) in the enclosing
source. |
125 SourceRange ruleBodyRange; | 132 SourceRange ruleBodyRange; |
126 | 133 |
127 // Only for CSSStyleRules. | 134 // Only for CSSStyleRules. |
128 SelectorRangeList selectorRanges; | 135 SelectorRangeList selectorRanges; |
129 | 136 |
130 // Only for CSSStyleRules, CSSFontFaceRules, and CSSPageRules. | 137 // Only for CSSStyleRules, CSSFontFaceRules, and CSSPageRules. |
131 RefPtr<CSSStyleSourceData> styleSourceData; | 138 RefPtrWillBeMember<CSSStyleSourceData> styleSourceData; |
132 | 139 |
133 // Only for CSSMediaRules. | 140 // Only for CSSMediaRules. |
134 RuleSourceDataList childRules; | 141 RuleSourceDataList childRules; |
135 }; | 142 }; |
136 | 143 |
137 } // namespace WebCore | 144 } // namespace WebCore |
138 | 145 |
| 146 namespace WTF { |
| 147 |
| 148 template <> struct VectorTraits<WebCore::SourceRange> : VectorTraitsBase<WebCore
::SourceRange> { |
| 149 static const bool canInitializeWithMemset = true; |
| 150 static const bool canMoveWithMemcpy = true; |
| 151 }; |
| 152 |
| 153 template <> struct VectorTraits<WebCore::CSSPropertySourceData> : VectorTraitsBa
se<WebCore::CSSPropertySourceData> { |
| 154 static const bool canInitializeWithMemset = true; |
| 155 static const bool canMoveWithMemcpy = true; |
| 156 }; |
| 157 |
| 158 } |
| 159 |
139 #endif // CSSPropertySourceData_h | 160 #endif // CSSPropertySourceData_h |
OLD | NEW |