Chromium Code Reviews| 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 RefCountedWillBeGarbageCollectedFinalized<CSSR uleSourceData> { |
|
haraken
2014/03/28 14:15:00
Can this be RefCountedWillBeGarbageCollected?
wibling-chromium
2014/03/31 09:38:28
Yes, done.
| |
| 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; | |
|
haraken
2014/03/28 14:15:00
Why don't you need:
static const bool canMoveWi
wibling-chromium
2014/03/31 09:38:28
We cannot use memcpy to copy the CSSPropertySource
| |
| 155 }; | |
| 156 | |
| 157 } | |
| 158 | |
| 139 #endif // CSSPropertySourceData_h | 159 #endif // CSSPropertySourceData_h |
| OLD | NEW |