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

Side by Side Diff: third_party/WebKit/Source/bindings/templates/dictionary_v8.cpp.tmpl

Issue 2446213002: [Bindings] [Reformat] Reformat template files (Closed)
Patch Set: Rebase (Split out Callbackfunctions) Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 {% filter format_blink_cpp_source_code %} 1 {% filter format_blink_cpp_source_code %}
2 2
3 {% from 'utilities.cpp.tmpl' import declare_enum_validation_variable %} 3 {% from 'utilities.cpp.tmpl' import declare_enum_validation_variable %}
4 {% include 'copyright_block.txt' %} 4 {% include 'copyright_block.txt' %}
5 #include "{{v8_original_class}}.h" 5 #include "{{v8_original_class}}.h"
6 6
7 {% for filename in cpp_includes if filename != '%s.h' % v8_class %} 7 {% for filename in cpp_includes if filename != '%s.h' % v8_class %}
8 #include "{{filename}}" 8 #include "{{filename}}"
9 {% endfor %} 9 {% endfor %}
10 10
11 namespace blink { 11 namespace blink {
12 12
13 {% from 'utilities.cpp.tmpl' import v8_value_to_local_cpp_value %} 13 {% from 'utilities.cpp.tmpl' import v8_value_to_local_cpp_value %}
14 void {{v8_class}}::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, {{ cpp_class}}& impl, ExceptionState& exceptionState) 14 void {{v8_class}}::toImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8Value, {{ cpp_class}}& impl, ExceptionState& exceptionState) {
15 { 15 if (isUndefinedOrNull(v8Value)) {
16 if (isUndefinedOrNull(v8Value)) { 16 {% if required_member_names %}
17 {% if required_member_names %} 17 exceptionState.throwTypeError("Missing required member(s): {{required_member _names|join(', ')}}.");
18 exceptionState.throwTypeError("Missing required member(s): {{required_me mber_names|join(', ')}}."); 18 {% endif %}
19 {% endif %} 19 return;
20 return; 20 }
21 } 21 if (!v8Value->IsObject()) {
22 if (!v8Value->IsObject()) { 22 {% if use_permissive_dictionary_conversion %}
23 {% if use_permissive_dictionary_conversion %} 23 // Do nothing.
24 // Do nothing. 24 return;
25 return; 25 {% else %}
26 {% else %} 26 exceptionState.throwTypeError("cannot convert to dictionary.");
27 exceptionState.throwTypeError("cannot convert to dictionary."); 27 return;
28 return; 28 {% endif %}
29 {% endif %} 29 }
30 }
31 30
32 {% if parent_v8_class %} 31 {% if parent_v8_class %}
33 {{parent_v8_class}}::toImpl(isolate, v8Value, impl, exceptionState); 32 {{parent_v8_class}}::toImpl(isolate, v8Value, impl, exceptionState);
34 if (exceptionState.hadException()) 33 if (exceptionState.hadException())
35 return; 34 return;
36 35
36 {% endif %}
37 {# Declare local variables only when the dictionary has members to avoid unuse d variable warnings. #}
38 {% if members %}
39 v8::TryCatch block(isolate);
40 v8::Local<v8::Object> v8Object;
41 if (!v8Call(v8Value->ToObject(isolate->GetCurrentContext()), v8Object, block)) {
42 exceptionState.rethrowV8Exception(block.Exception());
43 return;
44 }
45 {% endif %}
46 {% for member in members %}
47 {% filter runtime_enabled(member.runtime_enabled_function) %}
48 v8::Local<v8::Value> {{member.name}}Value;
49 if (!v8Object->Get(isolate->GetCurrentContext(), v8String(isolate, "{{member.n ame}}")).ToLocal(&{{member.name}}Value)) {
50 exceptionState.rethrowV8Exception(block.Exception());
51 return;
52 }
53 if ({{member.name}}Value.IsEmpty() || {{member.name}}Value->IsUndefined()) {
54 {% if member.is_required %}
55 exceptionState.throwTypeError("required member {{member.name}} is undefined. ");
56 return;
57 {% else %}
58 // Do nothing.
37 {% endif %} 59 {% endif %}
38 {# Declare local variables only when the dictionary has members to avoid unu sed variable warnings. #} 60 {% if member.is_nullable %}
39 {% if members %} 61 } else if ({{member.name}}Value->IsNull()) {
40 v8::TryCatch block(isolate); 62 impl.{{member.null_setter_name}}();
41 v8::Local<v8::Object> v8Object; 63 {% endif %}
42 if (!v8Call(v8Value->ToObject(isolate->GetCurrentContext()), v8Object, block )) { 64 } else {
43 exceptionState.rethrowV8Exception(block.Exception()); 65 {% if member.deprecate_as %}
44 return; 66 Deprecation::countDeprecationIfNotPrivateScript(isolate, currentExecutionCon text(isolate), UseCounter::{{member.deprecate_as}});
67 {% endif %}
68 {{v8_value_to_local_cpp_value(member) | indent}}
69 {% if member.is_interface_type %}
70 if (!{{member.name}}) {
71 exceptionState.throwTypeError("member {{member.name}} is not of type {{mem ber.idl_type}}.");
72 return;
45 } 73 }
46 {% endif %} 74 {% endif %}
47 {% for member in members %} 75 {% if member.enum_values %}
48 {% filter runtime_enabled(member.runtime_enabled_function) %} 76 {{declare_enum_validation_variable(member.enum_values) | indent}}
49 v8::Local<v8::Value> {{member.name}}Value; 77 if (!isValidEnum({{member.name}}, validValues, WTF_ARRAY_LENGTH(validValues) , "{{member.enum_type}}", exceptionState))
50 if (!v8Object->Get(isolate->GetCurrentContext(), v8String(isolate, "{{member .name}}")).ToLocal(&{{member.name}}Value)) { 78 return;
51 exceptionState.rethrowV8Exception(block.Exception()); 79 {% elif member.is_object %}
52 return; 80 if (!{{member.name}}.isObject()) {
81 exceptionState.throwTypeError("member {{member.name}} is not an object.");
82 return;
53 } 83 }
54 if ({{member.name}}Value.IsEmpty() || {{member.name}}Value->IsUndefined()) {
55 {% if member.is_required %}
56 exceptionState.throwTypeError("required member {{member.name}} is undefi ned.");
57 return;
58 {% else %}
59 // Do nothing.
60 {% endif %}
61 {% if member.is_nullable %}
62 } else if ({{member.name}}Value->IsNull()) {
63 impl.{{member.null_setter_name}}();
64 {% endif %} 84 {% endif %}
65 } else { 85 impl.{{member.setter_name}}({{member.name}});
66 {% if member.deprecate_as %} 86 }
67 Deprecation::countDeprecationIfNotPrivateScript(isolate, currentExecutio nContext(isolate), UseCounter::{{member.deprecate_as}}); 87 {% endfilter %}
68 {% endif %}
69 {{v8_value_to_local_cpp_value(member) | indent(8)}}
70 {% if member.is_interface_type %}
71 if (!{{member.name}}) {
72 exceptionState.throwTypeError("member {{member.name}} is not of type {{member.idl_type}}.");
73 return;
74 }
75 {% endif %}
76 {% if member.enum_values %}
77 {{declare_enum_validation_variable(member.enum_values) | indent(8)}}
78 if (!isValidEnum({{member.name}}, validValues, WTF_ARRAY_LENGTH(validVal ues), "{{member.enum_type}}", exceptionState))
79 return;
80 {% elif member.is_object %}
81 if (!{{member.name}}.isObject()) {
82 exceptionState.throwTypeError("member {{member.name}} is not an obje ct.");
83 return;
84 }
85 {% endif %}
86 impl.{{member.setter_name}}({{member.name}});
87 }
88 {% endfilter %}
89 88
90 {% endfor %} 89 {% endfor %}
91 } 90 }
92 91
93 v8::Local<v8::Value> {{cpp_class}}::toV8Impl(v8::Local<v8::Object> creationConte xt, v8::Isolate* isolate) const 92 v8::Local<v8::Value> {{cpp_class}}::toV8Impl(v8::Local<v8::Object> creationConte xt, v8::Isolate* isolate) const {
94 { 93 v8::Local<v8::Object> v8Object = v8::Object::New(isolate);
95 v8::Local<v8::Object> v8Object = v8::Object::New(isolate); 94 if (!toV8{{cpp_class}}(*this, v8Object, creationContext, isolate))
96 if (!toV8{{cpp_class}}(*this, v8Object, creationContext, isolate)) 95 return v8::Undefined(isolate);
97 return v8::Undefined(isolate); 96 return v8Object;
98 return v8Object;
99 } 97 }
100 98
101 bool toV8{{cpp_class}}(const {{cpp_class}}& impl, v8::Local<v8::Object> dictiona ry, v8::Local<v8::Object> creationContext, v8::Isolate* isolate) 99 bool toV8{{cpp_class}}(const {{cpp_class}}& impl, v8::Local<v8::Object> dictiona ry, v8::Local<v8::Object> creationContext, v8::Isolate* isolate) {
102 { 100 {% if parent_v8_class %}
103 {% if parent_v8_class %} 101 if (!toV8{{parent_cpp_class}}(impl, dictionary, creationContext, isolate))
104 if (!toV8{{parent_cpp_class}}(impl, dictionary, creationContext, isolate)) 102 return false;
105 return false;
106 103
104 {% endif %}
105 {% for member in members %}
106 if (impl.{{member.has_method_name}}()) {
107 {% if member.is_object %}
108 DCHECK(impl.{{member.cpp_name}}().isObject());
107 {% endif %} 109 {% endif %}
108 {% for member in members %} 110 if (!v8CallBoolean(dictionary->CreateDataProperty(isolate->GetCurrentContext (), v8String(isolate, "{{member.name}}"), {{member.cpp_value_to_v8_value}})))
109 if (impl.{{member.has_method_name}}()) { 111 return false;
110 {% if member.is_object %} 112 {% if member.v8_default_value %}
111 ASSERT(impl.{{member.cpp_name}}().isObject()); 113 } else {
112 {% endif %} 114 if (!v8CallBoolean(dictionary->CreateDataProperty(isolate->GetCurrentContext (), v8String(isolate, "{{member.name}}"), {{member.v8_default_value}})))
113 if (!v8CallBoolean(dictionary->CreateDataProperty(isolate->GetCurrentCon text(), v8String(isolate, "{{member.name}}"), {{member.cpp_value_to_v8_value}})) ) 115 return false;
114 return false; 116 {% elif member.is_nullable %}
115 {% if member.v8_default_value %} 117 } else {
116 } else { 118 if (!v8CallBoolean(dictionary->CreateDataProperty(isolate->GetCurrentContext (), v8String(isolate, "{{member.name}}"), v8::Null(isolate))))
117 if (!v8CallBoolean(dictionary->CreateDataProperty(isolate->GetCurrentCon text(), v8String(isolate, "{{member.name}}"), {{member.v8_default_value}}))) 119 return false;
118 return false; 120 {% elif member.is_required %}
119 {% elif member.is_nullable %} 121 } else {
120 } else { 122 NOTREACHED();
121 if (!v8CallBoolean(dictionary->CreateDataProperty(isolate->GetCurrentCon text(), v8String(isolate, "{{member.name}}"), v8::Null(isolate)))) 123 {% endif %}
122 return false; 124 }
123 {% elif member.is_required %}
124 } else {
125 ASSERT_NOT_REACHED();
126 {% endif %}
127 }
128 125
129 {% endfor %} 126 {% endfor %}
130 return true; 127 return true;
131 } 128 }
132 129
133 {{cpp_class}} NativeValueTraits<{{cpp_class}}>::nativeValue(v8::Isolate* isolate , v8::Local<v8::Value> value, ExceptionState& exceptionState) 130 {{cpp_class}} NativeValueTraits<{{cpp_class}}>::nativeValue(v8::Isolate* isolate , v8::Local<v8::Value> value, ExceptionState& exceptionState) {
134 { 131 {{cpp_class}} impl;
135 {{cpp_class}} impl; 132 {{v8_class}}::toImpl(isolate, value, impl, exceptionState);
136 {{v8_class}}::toImpl(isolate, value, impl, exceptionState); 133 return impl;
137 return impl;
138 } 134 }
139 135
140 } // namespace blink 136 } // namespace blink
141 137
142 {% endfilter %}{# format_blink_cpp_source_code #} 138 {% endfilter %}{# format_blink_cpp_source_code #}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698