| Index: headless/lib/browser/devtools_api/domain_types_cc.template
|
| diff --git a/headless/lib/browser/types_cc.template b/headless/lib/browser/devtools_api/domain_types_cc.template
|
| similarity index 54%
|
| copy from headless/lib/browser/types_cc.template
|
| copy to headless/lib/browser/devtools_api/domain_types_cc.template
|
| index 5be72cf79240a5f5be27e902a802b040a4ada3ff..65b628c324862e8008dd5b31dbda2561b729b899 100644
|
| --- a/headless/lib/browser/types_cc.template
|
| +++ b/headless/lib/browser/devtools_api/domain_types_cc.template
|
| @@ -4,65 +4,30 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "headless/public/domains/types.h"
|
| +{% for domain_name in domain.dependencies %}
|
| +#include "headless/public/devtools/domains/types_{{domain_name | camelcase_to_hacker_style}}.h"
|
| +{% endfor %}
|
|
|
| #include "base/memory/ptr_util.h"
|
| +{% for dep in domain.dependencies %}
|
| +#include "headless/public/devtools/internal/type_conversions_{{dep | camelcase_to_hacker_style}}.h"
|
| #include "headless/public/domains/type_conversions.h"
|
| +{% endfor %}
|
|
|
| namespace headless {
|
|
|
| -// ------------- Enum values from types.
|
| -{% for domain in api.domains %}
|
| - {% continue %}
|
| -
|
| namespace internal {
|
|
|
| - {% for type in domain.types %}
|
| -// {{type}}
|
| - {% if type.type == "array" %}
|
| -template <>
|
| -struct FromValue<{{resolve_type(type).raw_type}}> {
|
| - static {{resolve_type(type).raw_type}} Parse(const base::Value& value, ErrorReporter* errors) {
|
| - {{resolve_type(type).raw_type}} result;
|
| - const base::ListValue* list;
|
| - if (!value.GetAsList(&list)) {
|
| - errors->AddError("list value expected");
|
| - return result;
|
| - }
|
| - errors->Push();
|
| - for (const auto& item : *list)
|
| - result.push_back(FromValue<{{resolve_type(type).raw_type}}::value_type>::Parse(*item, errors));
|
| - errors->Pop();
|
| - return result;
|
| - }
|
| -};
|
| -
|
| - {% continue %}
|
| - {% endif %}
|
| -#}
|
| - {% if not (type.type == "object") or not ("properties" in type) %}{% continue %}{% endif %}
|
| - {% set namespace = domain.domain | camelcase_to_hacker_style %}
|
| -template <>
|
| -struct FromValue<{{namespace}}::{{type.id}}> {
|
| - static std::unique_ptr<{{namespace}}::{{type.id}}> Parse(const base::Value& value, ErrorReporter* errors) {
|
| - return {{namespace}}::{{type.id}}::Parse(value, errors);
|
| - }
|
| -};
|
| -
|
| template <typename T>
|
| -std::unique_ptr<base::Value> ToValueImpl(const {{namespace}}::{{type.id}}& value, T*) {
|
| - return value.Serialize();
|
| +std::unique_ptr<base::Value> ToValue(const T& value) {
|
| + return ToValueImpl(value, static_cast<T*>(nullptr));
|
| }
|
|
|
| - {% endfor %}
|
| } // namespace internal
|
| -{% endfor %}
|
| -
|
| -{% for domain in api.domains %}
|
|
|
| namespace {{domain.domain | camelcase_to_hacker_style}} {
|
| - {% for type in domain.types %}
|
| - {% if not (type.type == "object") or not ("properties" in type) %}{% continue %}{% endif %}
|
| +{% for type in domain.types %}
|
| + {% if not (type.type == "object") or not ("properties" in type) %}{% continue %}{% endif %}
|
|
|
| std::unique_ptr<{{type.id}}> {{type.id}}::Parse(const base::Value& value, ErrorReporter* errors) {
|
| errors->Push();
|
| @@ -77,24 +42,24 @@ std::unique_ptr<{{type.id}}> {{type.id}}::Parse(const base::Value& value, ErrorR
|
| std::unique_ptr<{{type.id}}> result(new {{type.id}}());
|
| errors->Push();
|
| errors->SetName("{{type.id}}");
|
| - {% for property in type.properties %}
|
| - {% set value_name = property.name | camelcase_to_hacker_style + "_value" %}
|
| + {% for property in type.properties %}
|
| + {% set value_name = property.name | camelcase_to_hacker_style + "_value" %}
|
| const base::Value* {{value_name}};
|
| if (object->Get("{{property.name}}", &{{value_name}})) {
|
| errors->SetName("{{property.name}}");
|
| - {% if property.optional %}
|
| + {% if property.optional %}
|
| result->{{property.name | camelcase_to_hacker_style}}_ = internal::FromValue<{{resolve_type(property).raw_type}}>::Parse(*{{value_name}}, errors);
|
| - {% else %}
|
| + {% else %}
|
| result->{{property.name | camelcase_to_hacker_style}}_ = internal::FromValue<{{resolve_type(property).raw_type}}>::Parse(*{{value_name}}, errors);
|
| - {% endif %}
|
| - {% if property.optional %}
|
| + {% endif %}
|
| + {% if property.optional %}
|
| }
|
| - {% else %}
|
| + {% else %}
|
| } else {
|
| errors->AddError("required property missing: {{property.name}}");
|
| }
|
| - {% endif %}
|
| - {% endfor %}
|
| + {% endif %}
|
| + {% endfor %}
|
| errors->Pop();
|
| errors->Pop();
|
| if (errors->HasErrors())
|
| @@ -104,15 +69,15 @@ std::unique_ptr<{{type.id}}> {{type.id}}::Parse(const base::Value& value, ErrorR
|
|
|
| std::unique_ptr<base::Value> {{type.id}}::Serialize() const {
|
| std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue());
|
| - {% for property in type.properties %}
|
| - {% set type = resolve_type(property) %}
|
| - {% if property.optional %}
|
| + {% for property in type.properties %}
|
| + {% set type = resolve_type(property) %}
|
| + {% if property.optional %}
|
| if ({{property.name | camelcase_to_hacker_style}}_)
|
| result->Set("{{property.name}}", internal::ToValue({{type.to_raw_type % ("%s_.value()" % property.name | camelcase_to_hacker_style)}}));
|
| - {% else %}
|
| + {% else %}
|
| result->Set("{{property.name}}", internal::ToValue({{type.to_raw_type % ("%s_" % property.name | camelcase_to_hacker_style)}}));
|
| - {% endif %}
|
| - {% endfor %}
|
| + {% endif %}
|
| + {% endfor %}
|
| return std::move(result);
|
| }
|
|
|
| @@ -123,8 +88,7 @@ std::unique_ptr<{{type.id}}> {{type.id}}::Clone() const {
|
| return result;
|
| }
|
|
|
| - {% endfor %}
|
| -} // namespace {{domain.domain | camelcase_to_hacker_style}}
|
| {% endfor %}
|
|
|
| -} // namespace headless
|
| +} // namespace {{domain.domain | camelcase_to_hacker_style}}
|
| +} // namespace headless
|
|
|