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

Unified Diff: base/values.h

Issue 2689673002: Inline base::BinaryValue into base::Value (Closed)
Patch Set: Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | base/values.cc » ('j') | content/child/v8_value_converter_impl.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/values.h
diff --git a/base/values.h b/base/values.h
index 5c74eb82ab5b1b3682d5a4bb07a3df16653b64b9..9b4ebefe3d2a844fd6ec9d0892bdf4bc7e51474b 100644
--- a/base/values.h
+++ b/base/values.h
@@ -36,12 +36,12 @@
namespace base {
-class BinaryValue;
class DictionaryValue;
class ListValue;
class Value;
using FundamentalValue = Value;
using StringValue = Value;
+using BinaryValue = Value;
// The Value class is the base class for Values. A Value can be instantiated
// via the Create*Value() factory methods, or by directly creating instances of
@@ -64,6 +64,14 @@ class BASE_EXPORT Value {
static std::unique_ptr<Value> CreateNullValue();
+ // For situations where you want to keep ownership of your buffer, this
+ // factory method creates a new BinaryValue by copying the contents of the
+ // buffer that's passed in.
+ // DEPRECATED, use MakeUnique<Value>(const std::vector<char>&) instead.
+ // TODO(crbug.com/646113): Delete this and migrate callsites.
+ static std::unique_ptr<BinaryValue> CreateWithCopiedBuffer(const char* buffer,
+ size_t size);
+
Value(const Value& that);
Value(Value&& that);
Value(); // A null value.
@@ -85,6 +93,9 @@ class BASE_EXPORT Value {
explicit Value(const string16& in_string);
explicit Value(StringPiece in_string);
+ explicit Value(const std::vector<char>& in_blob);
+ explicit Value(std::vector<char>&& in_blob);
+
Value& operator=(const Value& that);
Value& operator=(Value&& that);
@@ -116,6 +127,10 @@ class BASE_EXPORT Value {
int GetInt() const;
double GetDouble() const; // Implicitly converts from int if necessary.
const std::string& GetString() const;
+ const std::vector<char>& GetBlob() const;
+
+ size_t GetSize() const; // DEPRECATED, use GetBlob().size() instead.
+ const char* GetBuffer() const; // DEPRECATED, use GetBlob().data() instead.
// These methods allow the convenient retrieval of the contents of the Value.
// If the current object can be converted into the given type, the value is
@@ -167,44 +182,10 @@ class BASE_EXPORT Value {
int int_value_;
double double_value_;
ManualConstructor<std::string> string_value_;
+ ManualConstructor<std::vector<char>> binary_value_;
};
};
-class BASE_EXPORT BinaryValue: public Value {
- public:
- // Creates a BinaryValue with a null buffer and size of 0.
- BinaryValue();
jdoerrie 2017/02/10 11:00:35 Having the empty constructor create BinaryValues i
-
- // Creates a BinaryValue, taking ownership of the bytes pointed to by
- // |buffer|.
- BinaryValue(std::unique_ptr<char[]> buffer, size_t size);
jdoerrie 2017/02/10 11:00:35 This constructor was rarely used, and is completel
-
- ~BinaryValue() override;
-
- // For situations where you want to keep ownership of your buffer, this
- // factory method creates a new BinaryValue by copying the contents of the
- // buffer that's passed in.
- static std::unique_ptr<BinaryValue> CreateWithCopiedBuffer(const char* buffer,
- size_t size);
-
- size_t GetSize() const { return size_; }
-
- // May return NULL.
- char* GetBuffer() { return buffer_.get(); }
- const char* GetBuffer() const { return buffer_.get(); }
jdoerrie 2017/02/10 11:00:35 Every call site of |GetBuffer| can make use of the
-
- // Overridden from Value:
- bool GetAsBinary(const BinaryValue** out_value) const override;
- BinaryValue* DeepCopy() const override;
- bool Equals(const Value* other) const override;
-
- private:
- std::unique_ptr<char[]> buffer_;
- size_t size_;
-
- DISALLOW_COPY_AND_ASSIGN(BinaryValue);
-};
-
// DictionaryValue provides a key-value dictionary with (optional) "path"
// parsing for recursive access; see the comment at the top of the file. Keys
// are |std::string|s and should be UTF-8 encoded.
« no previous file with comments | « no previous file | base/values.cc » ('j') | content/child/v8_value_converter_impl.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698