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

Unified Diff: third_party/WebKit/Source/platform/JSONValues.h

Issue 1734693003: Revert of DevTools: simplify JSONValues API, prepare to the OwnPtr migration. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
Index: third_party/WebKit/Source/platform/JSONValues.h
diff --git a/third_party/WebKit/Source/platform/JSONValues.h b/third_party/WebKit/Source/platform/JSONValues.h
index a6cf1ddbb9f80f60b2b70468c5d7e3e8511d22f7..4a06be7eae0b8a7c7f3cf16f5cc41a6f0a50a1ab 100644
--- a/third_party/WebKit/Source/platform/JSONValues.h
+++ b/third_party/WebKit/Source/platform/JSONValues.h
@@ -56,6 +56,7 @@
public:
static const int maxDepth = 1000;
+ JSONValue() : m_type(TypeNull) { }
virtual ~JSONValue() { }
static PassRefPtr<JSONValue> null()
@@ -83,6 +84,10 @@
virtual bool asNumber(unsigned long* output) const;
virtual bool asNumber(unsigned* output) const;
virtual bool asString(String* output) const;
+ virtual bool asObject(RefPtr<JSONObject>* output);
+ virtual bool asArray(RefPtr<JSONArray>* output);
+ virtual PassRefPtr<JSONObject> asObject();
+ virtual PassRefPtr<JSONArray> asArray();
String toJSONString() const;
String toPrettyJSONString() const;
@@ -92,13 +97,12 @@
static String quoteString(const String&);
protected:
- JSONValue() : m_type(TypeNull) { }
explicit JSONValue(Type type) : m_type(type) { }
virtual void prettyWriteJSONInternal(StringBuilder* output, int depth) const;
private:
- friend class JSONObject;
- friend class JSONArray;
+ friend class JSONObjectBase;
+ friend class JSONArrayBase;
Type m_type;
};
@@ -164,7 +168,7 @@
String m_stringValue;
};
-class PLATFORM_EXPORT JSONObject : public JSONValue {
+class PLATFORM_EXPORT JSONObjectBase : public JSONValue {
private:
typedef HashMap<String, RefPtr<JSONValue>> Dictionary;
@@ -172,21 +176,17 @@
typedef Dictionary::iterator iterator;
typedef Dictionary::const_iterator const_iterator;
- static PassRefPtr<JSONObject> create()
- {
- return adoptRef(new JSONObject());
- }
-
- static PassRefPtr<JSONObject> cast(PassRefPtr<JSONValue> value)
- {
- if (!value || value->type() != TypeObject)
- return nullptr;
- return adoptRef(static_cast<JSONObject*>(value.leakRef()));
- }
+ PassRefPtr<JSONObject> asObject() override;
+ JSONObject* openAccessors();
void writeJSON(StringBuilder* output) const override;
int size() const { return m_data.size(); }
+
+protected:
+ ~JSONObjectBase() override;
+
+ bool asObject(RefPtr<JSONObject>* output) override;
void setBoolean(const String& name, bool);
void setNumber(const String& name, double);
@@ -214,42 +214,71 @@
void remove(const String& name);
+ void prettyWriteJSONInternal(StringBuilder* output, int depth) const override;
+
iterator begin() { return m_data.begin(); }
iterator end() { return m_data.end(); }
const_iterator begin() const { return m_data.begin(); }
const_iterator end() const { return m_data.end(); }
- ~JSONObject() override;
-
-protected:
- void prettyWriteJSONInternal(StringBuilder* output, int depth) const override;
-
-private:
- JSONObject();
-
+
+protected:
+ JSONObjectBase();
+
+private:
Dictionary m_data;
Vector<String> m_order;
};
-class PLATFORM_EXPORT JSONArray : public JSONValue {
+class PLATFORM_EXPORT JSONObject : public JSONObjectBase {
+public:
+ static PassRefPtr<JSONObject> create()
+ {
+ return adoptRef(new JSONObject());
+ }
+
+ using JSONObjectBase::asObject;
+
+ using JSONObjectBase::setBoolean;
+ using JSONObjectBase::setNumber;
+ using JSONObjectBase::setString;
+ using JSONObjectBase::setValue;
+ using JSONObjectBase::setObject;
+ using JSONObjectBase::setArray;
+
+ using JSONObjectBase::find;
+ using JSONObjectBase::getBoolean;
+ using JSONObjectBase::getNumber;
+ using JSONObjectBase::getString;
+ using JSONObjectBase::getObject;
+ using JSONObjectBase::getArray;
+ using JSONObjectBase::get;
+
+ using JSONObjectBase::booleanProperty;
+
+ using JSONObjectBase::remove;
+
+ using JSONObjectBase::begin;
+ using JSONObjectBase::end;
+
+ using JSONObjectBase::size;
+};
+
+
+class PLATFORM_EXPORT JSONArrayBase : public JSONValue {
public:
typedef Vector<RefPtr<JSONValue>>::iterator iterator;
typedef Vector<RefPtr<JSONValue>>::const_iterator const_iterator;
- static PassRefPtr<JSONArray> create()
- {
- return adoptRef(new JSONArray());
- }
-
- static PassRefPtr<JSONArray> cast(PassRefPtr<JSONValue> value)
- {
- if (!value || value->type() != TypeArray)
- return nullptr;
- return adoptRef(static_cast<JSONArray*>(value.leakRef()));
- }
-
- ~JSONArray() override;
+ PassRefPtr<JSONArray> asArray() override;
+
+ unsigned length() const { return m_data.size(); }
void writeJSON(StringBuilder* output) const override;
+
+protected:
+ ~JSONArrayBase() override;
+
+ bool asArray(RefPtr<JSONArray>* output) override;
void pushBoolean(bool);
void pushInt(int);
@@ -260,7 +289,8 @@
void pushArray(PassRefPtr<JSONArray>);
PassRefPtr<JSONValue> get(size_t index);
- unsigned length() const { return m_data.size(); }
+
+ void prettyWriteJSONInternal(StringBuilder* output, int depth) const override;
iterator begin() { return m_data.begin(); }
iterator end() { return m_data.end(); }
@@ -268,11 +298,33 @@
const_iterator end() const { return m_data.end(); }
protected:
- void prettyWriteJSONInternal(StringBuilder* output, int depth) const override;
-
-private:
- JSONArray();
+ JSONArrayBase();
+
+private:
Vector<RefPtr<JSONValue>> m_data;
+};
+
+class PLATFORM_EXPORT JSONArray : public JSONArrayBase {
+public:
+ static PassRefPtr<JSONArray> create()
+ {
+ return adoptRef(new JSONArray());
+ }
+
+ using JSONArrayBase::asArray;
+
+ using JSONArrayBase::pushBoolean;
+ using JSONArrayBase::pushInt;
+ using JSONArrayBase::pushNumber;
+ using JSONArrayBase::pushString;
+ using JSONArrayBase::pushValue;
+ using JSONArrayBase::pushObject;
+ using JSONArrayBase::pushArray;
+
+ using JSONArrayBase::get;
+
+ using JSONArrayBase::begin;
+ using JSONArrayBase::end;
};
PLATFORM_EXPORT void escapeStringForJSON(const String&, StringBuilder*);
« no previous file with comments | « third_party/WebKit/Source/platform/JSONParserTest.cpp ('k') | third_party/WebKit/Source/platform/JSONValues.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698