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

Side by Side Diff: third_party/WebKit/Source/platform/inspector_protocol/Values.cpp

Issue 2087953004: Switch v8 inspector to stl collections (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 5 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
OLDNEW
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 #include "platform/inspector_protocol/Values.h" 5 #include "platform/inspector_protocol/Values.h"
6 6
7 #include "platform/inspector_protocol/Parser.h" 7 #include "platform/inspector_protocol/Parser.h"
8 #include "platform/inspector_protocol/String16.h" 8 #include "platform/inspector_protocol/String16.h"
9
10 #include <algorithm>
9 #include <cmath> 11 #include <cmath>
10 12
11 namespace blink { 13 namespace blink {
12 namespace protocol { 14 namespace protocol {
13 15
14 namespace { 16 namespace {
15 17
16 const char* const nullString = "null"; 18 const char* const nullString = "null";
17 const char* const trueString = "true"; 19 const char* const trueString = "true";
18 const char* const falseString = "false"; 20 const char* const falseString = "false";
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 setValue(name, FundamentalValue::create(value)); 188 setValue(name, FundamentalValue::create(value));
187 } 189 }
188 190
189 void DictionaryValue::setString(const String16& name, const String16& value) 191 void DictionaryValue::setString(const String16& name, const String16& value)
190 { 192 {
191 setValue(name, StringValue::create(value)); 193 setValue(name, StringValue::create(value));
192 } 194 }
193 195
194 void DictionaryValue::setValue(const String16& name, std::unique_ptr<Value> valu e) 196 void DictionaryValue::setValue(const String16& name, std::unique_ptr<Value> valu e)
195 { 197 {
196 DCHECK(value); 198 set(name, value);
197 if (m_data.set(name, std::move(value)))
198 m_order.append(name);
199 } 199 }
200 200
201 void DictionaryValue::setObject(const String16& name, std::unique_ptr<Dictionary Value> value) 201 void DictionaryValue::setObject(const String16& name, std::unique_ptr<Dictionary Value> value)
202 { 202 {
203 DCHECK(value); 203 set(name, value);
204 if (m_data.set(name, std::move(value)))
205 m_order.append(name);
206 } 204 }
207 205
208 void DictionaryValue::setArray(const String16& name, std::unique_ptr<ListValue> value) 206 void DictionaryValue::setArray(const String16& name, std::unique_ptr<ListValue> value)
209 { 207 {
210 DCHECK(value); 208 set(name, value);
211 if (m_data.set(name, std::move(value)))
212 m_order.append(name);
213 } 209 }
214 210
215 bool DictionaryValue::getBoolean(const String16& name, bool* output) const 211 bool DictionaryValue::getBoolean(const String16& name, bool* output) const
216 { 212 {
217 protocol::Value* value = get(name); 213 protocol::Value* value = get(name);
218 if (!value) 214 if (!value)
219 return false; 215 return false;
220 return value->asBoolean(output); 216 return value->asBoolean(output);
221 } 217 }
222 218
(...skipping 13 matching lines...) Expand all
236 protocol::ListValue* DictionaryValue::getArray(const String16& name) const 232 protocol::ListValue* DictionaryValue::getArray(const String16& name) const
237 { 233 {
238 return ListValue::cast(get(name)); 234 return ListValue::cast(get(name));
239 } 235 }
240 236
241 protocol::Value* DictionaryValue::get(const String16& name) const 237 protocol::Value* DictionaryValue::get(const String16& name) const
242 { 238 {
243 Dictionary::const_iterator it = m_data.find(name); 239 Dictionary::const_iterator it = m_data.find(name);
244 if (it == m_data.end()) 240 if (it == m_data.end())
245 return nullptr; 241 return nullptr;
246 return it->second; 242 return it->second.get();
247 } 243 }
248 244
249 DictionaryValue::Entry DictionaryValue::at(size_t index) const 245 DictionaryValue::Entry DictionaryValue::at(size_t index) const
250 { 246 {
251 String16 key = m_order[index]; 247 const String16 key = m_order[index];
252 return std::make_pair(key, m_data.get(key)); 248 return std::make_pair(key, m_data.find(key)->second.get());
253 } 249 }
254 250
255 bool DictionaryValue::booleanProperty(const String16& name, bool defaultValue) c onst 251 bool DictionaryValue::booleanProperty(const String16& name, bool defaultValue) c onst
256 { 252 {
257 bool result = defaultValue; 253 bool result = defaultValue;
258 getBoolean(name, &result); 254 getBoolean(name, &result);
259 return result; 255 return result;
260 } 256 }
261 257
262 double DictionaryValue::numberProperty(const String16& name, double defaultValue ) const 258 double DictionaryValue::numberProperty(const String16& name, double defaultValue ) const
263 { 259 {
264 double result = defaultValue; 260 double result = defaultValue;
265 getNumber(name, &result); 261 getNumber(name, &result);
266 return result; 262 return result;
267 } 263 }
268 264
269 void DictionaryValue::remove(const String16& name) 265 void DictionaryValue::remove(const String16& name)
270 { 266 {
271 m_data.remove(name); 267 m_data.erase(name);
272 for (size_t i = 0; i < m_order.size(); ++i) { 268 m_order.erase(std::remove(m_order.begin(), m_order.end(), name), m_order.end ());
273 if (m_order[i] == name) {
274 m_order.remove(i);
275 break;
276 }
277 }
278 } 269 }
279 270
280 void DictionaryValue::writeJSON(String16Builder* output) const 271 void DictionaryValue::writeJSON(String16Builder* output) const
281 { 272 {
282 output->append('{'); 273 output->append('{');
283 for (size_t i = 0; i < m_order.size(); ++i) { 274 for (size_t i = 0; i < m_order.size(); ++i) {
284 Dictionary::const_iterator it = m_data.find(m_order[i]); 275 Dictionary::const_iterator it = m_data.find(m_order[i]);
285 CHECK(it != m_data.end()); 276 CHECK(it != m_data.end());
286 if (i) 277 if (i)
287 output->append(','); 278 output->append(',');
288 doubleQuoteStringForJSON(it->first, output); 279 doubleQuoteStringForJSON(it->first, output);
289 output->append(':'); 280 output->append(':');
290 it->second->writeJSON(output); 281 it->second->writeJSON(output);
291 } 282 }
292 output->append('}'); 283 output->append('}');
293 } 284 }
294 285
295 std::unique_ptr<Value> DictionaryValue::clone() const 286 std::unique_ptr<Value> DictionaryValue::clone() const
296 { 287 {
297 std::unique_ptr<DictionaryValue> result = DictionaryValue::create(); 288 std::unique_ptr<DictionaryValue> result = DictionaryValue::create();
298 for (size_t i = 0; i < m_order.size(); ++i) { 289 for (size_t i = 0; i < m_order.size(); ++i) {
299 String16 key = m_order[i]; 290 String16 key = m_order[i];
300 Value* value = m_data.get(key); 291 Dictionary::const_iterator value = m_data.find(key);
301 DCHECK(value); 292 DCHECK(value != m_data.cend() && value->second);
302 result->setValue(key, value->clone()); 293 result->setValue(key, value->second->clone());
303 } 294 }
304 return std::move(result); 295 return std::move(result);
305 } 296 }
306 297
307 DictionaryValue::DictionaryValue() 298 DictionaryValue::DictionaryValue()
308 : Value(TypeObject) 299 : Value(TypeObject)
309 { 300 {
310 } 301 }
311 302
312 ListValue::~ListValue() 303 ListValue::~ListValue()
313 { 304 {
314 } 305 }
315 306
316 void ListValue::writeJSON(String16Builder* output) const 307 void ListValue::writeJSON(String16Builder* output) const
317 { 308 {
318 output->append('['); 309 output->append('[');
319 for (Vector<std::unique_ptr<protocol::Value>>::const_iterator it = m_data.be gin(); it != m_data.end(); ++it) { 310 bool first = true;
320 if (it != m_data.begin()) 311 for (const std::unique_ptr<protocol::Value>& value : m_data) {
312 if (!first)
321 output->append(','); 313 output->append(',');
322 (*it)->writeJSON(output); 314 value->writeJSON(output);
315 first = false;
323 } 316 }
324 output->append(']'); 317 output->append(']');
325 } 318 }
326 319
327 std::unique_ptr<Value> ListValue::clone() const 320 std::unique_ptr<Value> ListValue::clone() const
328 { 321 {
329 std::unique_ptr<ListValue> result = ListValue::create(); 322 std::unique_ptr<ListValue> result = ListValue::create();
330 for (Vector<std::unique_ptr<protocol::Value>>::const_iterator it = m_data.be gin(); it != m_data.end(); ++it) 323 for (const std::unique_ptr<protocol::Value>& value : m_data)
331 result->pushValue((*it)->clone()); 324 result->pushValue(value->clone());
332 return std::move(result); 325 return std::move(result);
333 } 326 }
334 327
335 ListValue::ListValue() 328 ListValue::ListValue()
336 : Value(TypeArray) 329 : Value(TypeArray)
337 { 330 {
338 } 331 }
339 332
340 void ListValue::pushValue(std::unique_ptr<protocol::Value> value) 333 void ListValue::pushValue(std::unique_ptr<protocol::Value> value)
341 { 334 {
342 DCHECK(value); 335 DCHECK(value);
343 m_data.append(std::move(value)); 336 m_data.push_back(std::move(value));
344 } 337 }
345 338
346 protocol::Value* ListValue::at(size_t index) 339 protocol::Value* ListValue::at(size_t index)
347 { 340 {
348 DCHECK_LT(index, m_data.size()); 341 DCHECK_LT(index, m_data.size());
349 return m_data[index]; 342 return m_data[index].get();
350 } 343 }
351 344
352 } // namespace protocol 345 } // namespace protocol
353 } // namespace blink 346 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698