OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef Values_h | 5 #ifndef Values_h |
6 #define Values_h | 6 #define Values_h |
7 | 7 |
8 #include "platform/PlatformExport.h" | 8 #include "platform/PlatformExport.h" |
9 #include "platform/inspector_protocol/Allocator.h" | 9 #include "platform/inspector_protocol/Allocator.h" |
10 #include "platform/inspector_protocol/Collections.h" | 10 #include "platform/inspector_protocol/Collections.h" |
| 11 #include "platform/inspector_protocol/String16.h" |
11 #include "wtf/PassOwnPtr.h" | 12 #include "wtf/PassOwnPtr.h" |
12 #include "wtf/text/StringHash.h" | |
13 #include "wtf/text/WTFString.h" | |
14 | 13 |
15 namespace blink { | 14 namespace blink { |
16 namespace protocol { | 15 namespace protocol { |
17 | 16 |
18 class ListValue; | 17 class ListValue; |
19 class DictionaryValue; | 18 class DictionaryValue; |
20 class Value; | 19 class Value; |
21 | 20 |
22 class PLATFORM_EXPORT Value { | 21 class PLATFORM_EXPORT Value { |
23 PROTOCOL_DISALLOW_COPY(Value); | 22 PROTOCOL_DISALLOW_COPY(Value); |
(...skipping 16 matching lines...) Expand all Loading... |
40 TypeArray | 39 TypeArray |
41 }; | 40 }; |
42 | 41 |
43 ValueType type() const { return m_type; } | 42 ValueType type() const { return m_type; } |
44 | 43 |
45 bool isNull() const { return m_type == TypeNull; } | 44 bool isNull() const { return m_type == TypeNull; } |
46 | 45 |
47 virtual bool asBoolean(bool* output) const; | 46 virtual bool asBoolean(bool* output) const; |
48 virtual bool asNumber(double* output) const; | 47 virtual bool asNumber(double* output) const; |
49 virtual bool asNumber(int* output) const; | 48 virtual bool asNumber(int* output) const; |
50 virtual bool asString(String* output) const; | 49 virtual bool asString(String16* output) const; |
51 | 50 |
52 String toJSONString() const; | 51 String16 toJSONString() const; |
53 virtual void writeJSON(StringBuilder* output) const; | 52 virtual void writeJSON(String16Builder* output) const; |
54 virtual PassOwnPtr<Value> clone() const; | 53 virtual PassOwnPtr<Value> clone() const; |
55 | 54 |
56 protected: | 55 protected: |
57 Value() : m_type(TypeNull) { } | 56 Value() : m_type(TypeNull) { } |
58 explicit Value(ValueType type) : m_type(type) { } | 57 explicit Value(ValueType type) : m_type(type) { } |
59 | 58 |
60 private: | 59 private: |
61 friend class DictionaryValue; | 60 friend class DictionaryValue; |
62 friend class ListValue; | 61 friend class ListValue; |
63 | 62 |
(...skipping 13 matching lines...) Expand all Loading... |
77 } | 76 } |
78 | 77 |
79 static PassOwnPtr<FundamentalValue> create(double value) | 78 static PassOwnPtr<FundamentalValue> create(double value) |
80 { | 79 { |
81 return adoptPtr(new FundamentalValue(value)); | 80 return adoptPtr(new FundamentalValue(value)); |
82 } | 81 } |
83 | 82 |
84 bool asBoolean(bool* output) const override; | 83 bool asBoolean(bool* output) const override; |
85 bool asNumber(double* output) const override; | 84 bool asNumber(double* output) const override; |
86 bool asNumber(int* output) const override; | 85 bool asNumber(int* output) const override; |
87 void writeJSON(StringBuilder* output) const override; | 86 void writeJSON(String16Builder* output) const override; |
88 PassOwnPtr<Value> clone() const override; | 87 PassOwnPtr<Value> clone() const override; |
89 | 88 |
90 private: | 89 private: |
91 explicit FundamentalValue(bool value) : Value(TypeBoolean), m_boolValue(valu
e) { } | 90 explicit FundamentalValue(bool value) : Value(TypeBoolean), m_boolValue(valu
e) { } |
92 explicit FundamentalValue(int value) : Value(TypeNumber), m_doubleValue((dou
ble)value) { } | 91 explicit FundamentalValue(int value) : Value(TypeNumber), m_doubleValue((dou
ble)value) { } |
93 explicit FundamentalValue(double value) : Value(TypeNumber), m_doubleValue(v
alue) { } | 92 explicit FundamentalValue(double value) : Value(TypeNumber), m_doubleValue(v
alue) { } |
94 | 93 |
95 union { | 94 union { |
96 bool m_boolValue; | 95 bool m_boolValue; |
97 double m_doubleValue; | 96 double m_doubleValue; |
98 }; | 97 }; |
99 }; | 98 }; |
100 | 99 |
101 class PLATFORM_EXPORT StringValue : public Value { | 100 class PLATFORM_EXPORT StringValue : public Value { |
102 public: | 101 public: |
103 static PassOwnPtr<StringValue> create(const String& value) | 102 static PassOwnPtr<StringValue> create(const String16& value) |
104 { | 103 { |
105 return adoptPtr(new StringValue(value)); | 104 return adoptPtr(new StringValue(value)); |
106 } | 105 } |
107 | 106 |
108 static PassOwnPtr<StringValue> create(const char* value) | 107 static PassOwnPtr<StringValue> create(const char* value) |
109 { | 108 { |
110 return adoptPtr(new StringValue(value)); | 109 return adoptPtr(new StringValue(value)); |
111 } | 110 } |
112 | 111 |
113 bool asString(String* output) const override; | 112 bool asString(String16* output) const override; |
114 void writeJSON(StringBuilder* output) const override; | 113 void writeJSON(String16Builder* output) const override; |
115 PassOwnPtr<Value> clone() const override; | 114 PassOwnPtr<Value> clone() const override; |
116 | 115 |
117 private: | 116 private: |
118 explicit StringValue(const String& value) : Value(TypeString), m_stringValue
(value) { } | 117 explicit StringValue(const String16& value) : Value(TypeString), m_stringVal
ue(value) { } |
119 explicit StringValue(const char* value) : Value(TypeString), m_stringValue(v
alue) { } | 118 explicit StringValue(const char* value) : Value(TypeString), m_stringValue(v
alue) { } |
120 | 119 |
121 String m_stringValue; | 120 String16 m_stringValue; |
122 }; | 121 }; |
123 | 122 |
124 class PLATFORM_EXPORT DictionaryValue : public Value { | 123 class PLATFORM_EXPORT DictionaryValue : public Value { |
125 public: | 124 public: |
126 using Entry = std::pair<String, Value*>; | 125 using Entry = std::pair<String16, Value*>; |
127 static PassOwnPtr<DictionaryValue> create() | 126 static PassOwnPtr<DictionaryValue> create() |
128 { | 127 { |
129 return adoptPtr(new DictionaryValue()); | 128 return adoptPtr(new DictionaryValue()); |
130 } | 129 } |
131 | 130 |
132 static DictionaryValue* cast(Value* value) | 131 static DictionaryValue* cast(Value* value) |
133 { | 132 { |
134 if (!value || value->type() != TypeObject) | 133 if (!value || value->type() != TypeObject) |
135 return nullptr; | 134 return nullptr; |
136 return static_cast<DictionaryValue*>(value); | 135 return static_cast<DictionaryValue*>(value); |
137 } | 136 } |
138 | 137 |
139 static PassOwnPtr<DictionaryValue> cast(PassOwnPtr<Value> value) | 138 static PassOwnPtr<DictionaryValue> cast(PassOwnPtr<Value> value) |
140 { | 139 { |
141 return adoptPtr(DictionaryValue::cast(value.leakPtr())); | 140 return adoptPtr(DictionaryValue::cast(value.leakPtr())); |
142 } | 141 } |
143 | 142 |
144 void writeJSON(StringBuilder* output) const override; | 143 void writeJSON(String16Builder* output) const override; |
145 PassOwnPtr<Value> clone() const override; | 144 PassOwnPtr<Value> clone() const override; |
146 | 145 |
147 size_t size() const { return m_data.size(); } | 146 size_t size() const { return m_data.size(); } |
148 | 147 |
149 void setBoolean(const String& name, bool); | 148 void setBoolean(const String16& name, bool); |
150 void setNumber(const String& name, double); | 149 void setNumber(const String16& name, double); |
151 void setString(const String& name, const String&); | 150 void setString(const String16& name, const String16&); |
152 void setValue(const String& name, PassOwnPtr<Value>); | 151 void setValue(const String16& name, PassOwnPtr<Value>); |
153 void setObject(const String& name, PassOwnPtr<DictionaryValue>); | 152 void setObject(const String16& name, PassOwnPtr<DictionaryValue>); |
154 void setArray(const String& name, PassOwnPtr<ListValue>); | 153 void setArray(const String16& name, PassOwnPtr<ListValue>); |
155 | 154 |
156 bool getBoolean(const String& name, bool* output) const; | 155 bool getBoolean(const String16& name, bool* output) const; |
157 template<class T> bool getNumber(const String& name, T* output) const | 156 template<class T> bool getNumber(const String16& name, T* output) const |
158 { | 157 { |
159 Value* value = get(name); | 158 Value* value = get(name); |
160 if (!value) | 159 if (!value) |
161 return false; | 160 return false; |
162 return value->asNumber(output); | 161 return value->asNumber(output); |
163 } | 162 } |
164 bool getString(const String& name, String* output) const; | 163 bool getString(const String16& name, String16* output) const; |
165 | 164 |
166 DictionaryValue* getObject(const String& name) const; | 165 DictionaryValue* getObject(const String16& name) const; |
167 ListValue* getArray(const String& name) const; | 166 ListValue* getArray(const String16& name) const; |
168 Value* get(const String& name) const; | 167 Value* get(const String16& name) const; |
169 Entry at(size_t index) const; | 168 Entry at(size_t index) const; |
170 | 169 |
171 bool booleanProperty(const String& name, bool defaultValue) const; | 170 bool booleanProperty(const String16& name, bool defaultValue) const; |
172 void remove(const String& name); | 171 void remove(const String16& name); |
173 | 172 |
174 ~DictionaryValue() override; | 173 ~DictionaryValue() override; |
175 | 174 |
176 private: | 175 private: |
177 DictionaryValue(); | 176 DictionaryValue(); |
178 | 177 |
179 using Dictionary = protocol::HashMap<String, OwnPtr<Value>>; | 178 using Dictionary = protocol::HashMap<String16, OwnPtr<Value>>; |
180 Dictionary m_data; | 179 Dictionary m_data; |
181 protocol::Vector<String> m_order; | 180 protocol::Vector<String16> m_order; |
182 }; | 181 }; |
183 | 182 |
184 class PLATFORM_EXPORT ListValue : public Value { | 183 class PLATFORM_EXPORT ListValue : public Value { |
185 public: | 184 public: |
186 static PassOwnPtr<ListValue> create() | 185 static PassOwnPtr<ListValue> create() |
187 { | 186 { |
188 return adoptPtr(new ListValue()); | 187 return adoptPtr(new ListValue()); |
189 } | 188 } |
190 | 189 |
191 static ListValue* cast(Value* value) | 190 static ListValue* cast(Value* value) |
192 { | 191 { |
193 if (!value || value->type() != TypeArray) | 192 if (!value || value->type() != TypeArray) |
194 return nullptr; | 193 return nullptr; |
195 return static_cast<ListValue*>(value); | 194 return static_cast<ListValue*>(value); |
196 } | 195 } |
197 | 196 |
198 static PassOwnPtr<ListValue> cast(PassOwnPtr<Value> value) | 197 static PassOwnPtr<ListValue> cast(PassOwnPtr<Value> value) |
199 { | 198 { |
200 return adoptPtr(ListValue::cast(value.leakPtr())); | 199 return adoptPtr(ListValue::cast(value.leakPtr())); |
201 } | 200 } |
202 | 201 |
203 ~ListValue() override; | 202 ~ListValue() override; |
204 | 203 |
205 void writeJSON(StringBuilder* output) const override; | 204 void writeJSON(String16Builder* output) const override; |
206 PassOwnPtr<Value> clone() const override; | 205 PassOwnPtr<Value> clone() const override; |
207 | 206 |
208 void pushValue(PassOwnPtr<Value>); | 207 void pushValue(PassOwnPtr<Value>); |
209 | 208 |
210 Value* at(size_t index); | 209 Value* at(size_t index); |
211 size_t size() const { return m_data.size(); } | 210 size_t size() const { return m_data.size(); } |
212 | 211 |
213 private: | 212 private: |
214 ListValue(); | 213 ListValue(); |
215 protocol::Vector<OwnPtr<Value>> m_data; | 214 protocol::Vector<OwnPtr<Value>> m_data; |
216 }; | 215 }; |
217 | 216 |
218 } // namespace protocol | 217 } // namespace protocol |
219 } // namespace blink | 218 } // namespace blink |
220 | 219 |
221 #endif // Values_h | 220 #endif // Values_h |
OLD | NEW |