[inspector_protocol] Allow custom json parser.

Drive-by: removed platform include, as it's not necessary anymore.

BUG=chromium:635953
R=kozyatinskiy@chromium.org

Review URL: https://codereview.chromium.org/2490733002 .
diff --git a/CodeGenerator.py b/CodeGenerator.py
index 18073dd..4a0ecbe 100644
--- a/CodeGenerator.py
+++ b/CodeGenerator.py
@@ -287,7 +287,6 @@
         "raw_type": "protocol::Array<%s>" % type["raw_type"],
         "raw_pass_type": "protocol::Array<%s>*" % type["raw_type"],
         "raw_return_type": "protocol::Array<%s>*" % type["raw_type"],
-        "create_type": "wrapUnique(new protocol::Array<%s>())" % type["raw_type"],
         "out_type": "protocol::Array<%s>&" % type["raw_type"],
     }
 
diff --git a/lib/Array_h.template b/lib/Array_h.template
index 9555e30..a258da1 100644
--- a/lib/Array_h.template
+++ b/lib/Array_h.template
@@ -19,7 +19,7 @@
 public:
     static std::unique_ptr<Array<T>> create()
     {
-        return wrapUnique(new Array<T>());
+        return std::unique_ptr<Array<T>>(new Array<T>());
     }
 
     static std::unique_ptr<Array<T>> parse(protocol::Value* value, ErrorSupport* errors)
@@ -74,7 +74,7 @@
 public:
     static std::unique_ptr<Array<T>> create()
     {
-        return wrapUnique(new Array<T>());
+        return std::unique_ptr<Array<T>>(new Array<T>());
     }
 
     static std::unique_ptr<Array<T>> parse(protocol::Value* value, ErrorSupport* errors)
diff --git a/lib/DispatcherBase_cpp.template b/lib/DispatcherBase_cpp.template
index c4f36a5..9095cbc 100644
--- a/lib/DispatcherBase_cpp.template
+++ b/lib/DispatcherBase_cpp.template
@@ -88,7 +88,7 @@
 // static
 bool DispatcherBase::getCommandName(const String& message, String* result)
 {
-    std::unique_ptr<protocol::Value> value = parseJSON(message);
+    std::unique_ptr<protocol::Value> value = StringUtil::parseJSON(message);
     if (!value)
         return false;
 
diff --git a/lib/Forward_h.template b/lib/Forward_h.template
index 04868b7..34d1c0d 100644
--- a/lib/Forward_h.template
+++ b/lib/Forward_h.template
@@ -8,7 +8,6 @@
 {% if config.lib.export_header %}
 #include {{format_include(config.lib.export_header)}}
 {% endif %}
-#include {{format_include(config.lib.platform_header)}}
 #include {{format_include(config.lib.string_header)}}
 
 #include <vector>
diff --git a/lib/Object_cpp.template b/lib/Object_cpp.template
index e3f18c3..46b0c94 100644
--- a/lib/Object_cpp.template
+++ b/lib/Object_cpp.template
@@ -10,12 +10,13 @@
 
 std::unique_ptr<Object> Object::parse(protocol::Value* value, ErrorSupport* errors)
 {
-    protocol::DictionaryValue* object = DictionaryValue::cast(value);
-    if (!object) {
+    protocol::DictionaryValue* dictionary = DictionaryValue::cast(value);
+    if (!dictionary) {
         errors->addError("object expected");
         return nullptr;
     }
-    return wrapUnique(new Object(wrapUnique(static_cast<DictionaryValue*>(object->clone().release()))));
+    dictionary = static_cast<protocol::DictionaryValue*>(dictionary->clone().release());
+    return std::unique_ptr<Object>(new Object(std::unique_ptr<DictionaryValue>(dictionary)));
 }
 
 std::unique_ptr<protocol::DictionaryValue> Object::serialize() const
@@ -25,7 +26,7 @@
 
 std::unique_ptr<Object> Object::clone() const
 {
-    return wrapUnique(new Object(DictionaryValue::cast(m_object->clone())));
+    return std::unique_ptr<Object>(new Object(DictionaryValue::cast(m_object->clone())));
 }
 
 Object::Object(std::unique_ptr<protocol::DictionaryValue> object) : m_object(std::move(object)) { }
diff --git a/lib/Parser_cpp.template b/lib/Parser_cpp.template
index a103b82..11a6063 100644
--- a/lib/Parser_cpp.template
+++ b/lib/Parser_cpp.template
@@ -538,12 +538,12 @@
 
 } // anonymous namespace
 
-std::unique_ptr<Value> parseJSON(const uint16_t* characters, unsigned length)
+std::unique_ptr<Value> parseJSONCharacters(const uint16_t* characters, unsigned length)
 {
     return parseJSONInternal<uint16_t>(characters, length);
 }
 
-std::unique_ptr<Value> parseJSON(const uint8_t* characters, unsigned length)
+std::unique_ptr<Value> parseJSONCharacters(const uint8_t* characters, unsigned length)
 {
     return parseJSONInternal<uint8_t>(characters, length);
 }
diff --git a/lib/Parser_h.template b/lib/Parser_h.template
index 7b2a29b..8397d3f 100644
--- a/lib/Parser_h.template
+++ b/lib/Parser_h.template
@@ -12,8 +12,8 @@
 namespace {{namespace}} {
 {% endfor %}
 
-{{config.lib.export_macro}} std::unique_ptr<Value> parseJSON(const uint8_t*, unsigned);
-{{config.lib.export_macro}} std::unique_ptr<Value> parseJSON(const uint16_t*, unsigned);
+{{config.lib.export_macro}} std::unique_ptr<Value> parseJSONCharacters(const uint8_t*, unsigned);
+{{config.lib.export_macro}} std::unique_ptr<Value> parseJSONCharacters(const uint16_t*, unsigned);
 
 {% for namespace in config.protocol.namespace %}
 } // namespace {{namespace}}
diff --git a/lib/Values_h.template b/lib/Values_h.template
index 8f75ef2..8e0d555 100644
--- a/lib/Values_h.template
+++ b/lib/Values_h.template
@@ -24,7 +24,7 @@
 
     static std::unique_ptr<Value> null()
     {
-        return wrapUnique(new Value());
+        return std::unique_ptr<Value>(new Value());
     }
 
     enum ValueType {
@@ -67,17 +67,17 @@
 public:
     static std::unique_ptr<FundamentalValue> create(bool value)
     {
-        return wrapUnique(new FundamentalValue(value));
+        return std::unique_ptr<FundamentalValue>(new FundamentalValue(value));
     }
 
     static std::unique_ptr<FundamentalValue> create(int value)
     {
-        return wrapUnique(new FundamentalValue(value));
+        return std::unique_ptr<FundamentalValue>(new FundamentalValue(value));
     }
 
     static std::unique_ptr<FundamentalValue> create(double value)
     {
-        return wrapUnique(new FundamentalValue(value));
+        return std::unique_ptr<FundamentalValue>(new FundamentalValue(value));
     }
 
     bool asBoolean(bool* output) const override;
@@ -102,12 +102,12 @@
 public:
     static std::unique_ptr<StringValue> create(const String& value)
     {
-        return wrapUnique(new StringValue(value));
+        return std::unique_ptr<StringValue>(new StringValue(value));
     }
 
     static std::unique_ptr<StringValue> create(const char* value)
     {
-        return wrapUnique(new StringValue(value));
+        return std::unique_ptr<StringValue>(new StringValue(value));
     }
 
     bool asString(String* output) const override;
@@ -125,7 +125,7 @@
 public:
     static std::unique_ptr<SerializedValue> create(const String& value)
     {
-        return wrapUnique(new SerializedValue(value));
+        return std::unique_ptr<SerializedValue>(new SerializedValue(value));
     }
 
     bool asSerialized(String* output) const override;
@@ -143,7 +143,7 @@
     using Entry = std::pair<String, Value*>;
     static std::unique_ptr<DictionaryValue> create()
     {
-        return wrapUnique(new DictionaryValue());
+        return std::unique_ptr<DictionaryValue>(new DictionaryValue());
     }
 
     static DictionaryValue* cast(Value* value)
@@ -155,7 +155,7 @@
 
     static std::unique_ptr<DictionaryValue> cast(std::unique_ptr<Value> value)
     {
-        return wrapUnique(DictionaryValue::cast(value.release()));
+        return std::unique_ptr<DictionaryValue>(DictionaryValue::cast(value.release()));
     }
 
     void writeJSON(StringBuilder* output) const override;
@@ -209,7 +209,7 @@
 public:
     static std::unique_ptr<ListValue> create()
     {
-        return wrapUnique(new ListValue());
+        return std::unique_ptr<ListValue>(new ListValue());
     }
 
     static ListValue* cast(Value* value)
@@ -221,7 +221,7 @@
 
     static std::unique_ptr<ListValue> cast(std::unique_ptr<Value> value)
     {
-        return wrapUnique(ListValue::cast(value.release()));
+        return std::unique_ptr<ListValue>(ListValue::cast(value.release()));
     }
 
     ~ListValue() override;
diff --git a/templates/TypeBuilder_cpp.template b/templates/TypeBuilder_cpp.template
index 1103f20..11fd599 100644
--- a/templates/TypeBuilder_cpp.template
+++ b/templates/TypeBuilder_cpp.template
@@ -106,7 +106,7 @@
 std::unique_ptr<API::{{type.id}}> API::{{type.id}}::fromJSONString(const {{config.exported.string_in}}& json)
 {
     ErrorSupport errors;
-    std::unique_ptr<Value> value = parseJSON(json);
+    std::unique_ptr<Value> value = StringUtil::parseJSON(json);
     if (!value)
         return nullptr;
     return protocol::{{domain.domain}}::{{type.id}}::parse(value.get(), &errors);
@@ -355,7 +355,7 @@
 // static
 void Dispatcher::wire(UberDispatcher* dispatcher, Backend* backend)
 {
-    dispatcher->registerBackend("{{domain.domain}}", wrapUnique(new DispatcherImpl(dispatcher->channel(), backend)));
+    dispatcher->registerBackend("{{domain.domain}}", std::unique_ptr<protocol::DispatcherBase>(new DispatcherImpl(dispatcher->channel(), backend)));
 }
 
 } // {{domain.domain}}