BinaryValue support for NULL buffer.
* Apply original change from CL 10389088 (https://chromiumcodereview.appspot.com/10389088)
* Change BinaryValue to use "scoped_ptr<char[]>" instead of "scoped_ptr<char>". By contract, the memory owned should be deleted with the "delete[]" operator.
BUG=127630
Review URL: https://chromiumcodereview.appspot.com/11745016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@175482 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/base/values_unittest.cc b/base/values_unittest.cc
index 8a42f784..98bc73c 100644
--- a/base/values_unittest.cc
+++ b/base/values_unittest.cc
@@ -105,23 +105,15 @@
}
TEST(ValuesTest, BinaryValue) {
- char* buffer = NULL;
- // Passing a null buffer pointer doesn't yield a BinaryValue
- scoped_ptr<BinaryValue> binary(BinaryValue::Create(buffer, 0));
- ASSERT_FALSE(binary.get());
-
- // If you want to represent an empty binary value, use a zero-length buffer.
- buffer = new char[1];
- ASSERT_TRUE(buffer);
- binary.reset(BinaryValue::Create(buffer, 0));
+ // Default constructor creates a BinaryValue with a null buffer and size 0.
+ scoped_ptr<BinaryValue> binary(new BinaryValue());
ASSERT_TRUE(binary.get());
- ASSERT_TRUE(binary->GetBuffer());
- ASSERT_EQ(buffer, binary->GetBuffer());
+ ASSERT_EQ(NULL, binary->GetBuffer());
ASSERT_EQ(0U, binary->GetSize());
// Test the common case of a non-empty buffer
- buffer = new char[15];
- binary.reset(BinaryValue::Create(buffer, 15));
+ char* buffer = new char[15];
+ binary.reset(new BinaryValue(scoped_ptr<char[]>(buffer), 15));
ASSERT_TRUE(binary.get());
ASSERT_TRUE(binary->GetBuffer());
ASSERT_EQ(buffer, binary->GetBuffer());
@@ -348,9 +340,9 @@
StringValue* original_string16 = new StringValue(ASCIIToUTF16("hello16"));
original_dict.Set("string16", original_string16);
- char* original_buffer = new char[42];
- memset(original_buffer, '!', 42);
- BinaryValue* original_binary = BinaryValue::Create(original_buffer, 42);
+ scoped_ptr<char[]> original_buffer(new char[42]);
+ memset(original_buffer.get(), '!', 42);
+ BinaryValue* original_binary = new BinaryValue(original_buffer.Pass(), 42);
original_dict.Set("binary", original_binary);
ListValue* original_list = new ListValue();
@@ -555,9 +547,9 @@
StringValue* original_string16 = new StringValue(ASCIIToUTF16("hello16"));
original_dict.Set("string16", original_string16);
- char* original_buffer = new char[42];
- memset(original_buffer, '!', 42);
- BinaryValue* original_binary = BinaryValue::Create(original_buffer, 42);
+ scoped_ptr<char[]> original_buffer(new char[42]);
+ memset(original_buffer.get(), '!', 42);
+ BinaryValue* original_binary = new BinaryValue(original_buffer.Pass(), 42);
original_dict.Set("binary", original_binary);
ListValue* original_list = new ListValue();