Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/values.h" | 5 #include "base/values.h" |
| 6 | 6 |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <cmath> | 10 #include <cmath> |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 297 size_(0) { | 297 size_(0) { |
| 298 } | 298 } |
| 299 | 299 |
| 300 BinaryValue::BinaryValue(std::unique_ptr<char[]> buffer, size_t size) | 300 BinaryValue::BinaryValue(std::unique_ptr<char[]> buffer, size_t size) |
| 301 : Value(TYPE_BINARY), buffer_(std::move(buffer)), size_(size) {} | 301 : Value(TYPE_BINARY), buffer_(std::move(buffer)), size_(size) {} |
| 302 | 302 |
| 303 BinaryValue::~BinaryValue() { | 303 BinaryValue::~BinaryValue() { |
| 304 } | 304 } |
| 305 | 305 |
| 306 // static | 306 // static |
| 307 BinaryValue* BinaryValue::CreateWithCopiedBuffer(const char* buffer, | 307 std::unique_ptr<BinaryValue> BinaryValue::CreateWithCopiedBuffer( |
| 308 size_t size) { | 308 const char* buffer, |
| 309 char* buffer_copy = new char[size]; | 309 size_t size) { |
| 310 memcpy(buffer_copy, buffer, size); | 310 std::unique_ptr<char[]> buffer_copy(new char[size]); |
| 311 std::unique_ptr<char[]> scoped_buffer_copy(buffer_copy); | 311 memcpy(buffer_copy.get(), buffer, size); |
| 312 return new BinaryValue(std::move(scoped_buffer_copy), size); | 312 return base::MakeUnique<BinaryValue>(std::move(buffer_copy), size); |
| 313 } | 313 } |
| 314 | 314 |
| 315 bool BinaryValue::GetAsBinary(const BinaryValue** out_value) const { | 315 bool BinaryValue::GetAsBinary(const BinaryValue** out_value) const { |
| 316 if (out_value) | 316 if (out_value) |
| 317 *out_value = this; | 317 *out_value = this; |
| 318 return true; | 318 return true; |
| 319 } | 319 } |
| 320 | 320 |
| 321 BinaryValue* BinaryValue::DeepCopy() const { | 321 BinaryValue* BinaryValue::DeepCopy() const { |
| 322 return CreateWithCopiedBuffer(buffer_.get(), size_); | 322 return CreateWithCopiedBuffer(buffer_.get(), size_).release(); |
|
dcheng
2016/06/13 21:28:38
I wanted to change this to be CreateDeepCopy() bas
| |
| 323 } | 323 } |
| 324 | 324 |
| 325 bool BinaryValue::Equals(const Value* other) const { | 325 bool BinaryValue::Equals(const Value* other) const { |
| 326 if (other->GetType() != GetType()) | 326 if (other->GetType() != GetType()) |
| 327 return false; | 327 return false; |
| 328 const BinaryValue* other_binary = static_cast<const BinaryValue*>(other); | 328 const BinaryValue* other_binary = static_cast<const BinaryValue*>(other); |
| 329 if (other_binary->size_ != size_) | 329 if (other_binary->size_ != size_) |
| 330 return false; | 330 return false; |
| 331 return !memcmp(GetBuffer(), other_binary->GetBuffer(), size_); | 331 return !memcmp(GetBuffer(), other_binary->GetBuffer(), size_); |
| 332 } | 332 } |
| (...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1160 ValueDeserializer::~ValueDeserializer() { | 1160 ValueDeserializer::~ValueDeserializer() { |
| 1161 } | 1161 } |
| 1162 | 1162 |
| 1163 std::ostream& operator<<(std::ostream& out, const Value& value) { | 1163 std::ostream& operator<<(std::ostream& out, const Value& value) { |
| 1164 std::string json; | 1164 std::string json; |
| 1165 JSONWriter::WriteWithOptions(value, JSONWriter::OPTIONS_PRETTY_PRINT, &json); | 1165 JSONWriter::WriteWithOptions(value, JSONWriter::OPTIONS_PRETTY_PRINT, &json); |
| 1166 return out << json; | 1166 return out << json; |
| 1167 } | 1167 } |
| 1168 | 1168 |
| 1169 } // namespace base | 1169 } // namespace base |
| OLD | NEW |