OLD | NEW |
---|---|
1 {% filter format_blink_cpp_source_code %} | 1 {% filter format_blink_cpp_source_code %} |
2 | 2 |
3 {% include 'copyright_block.txt' %} | 3 {% include 'copyright_block.txt' %} |
4 #include "{{v8_class}}.h" | 4 #include "{{v8_class}}.h" |
5 | 5 |
6 {% for filename in cpp_includes %} | 6 {% for filename in cpp_includes %} |
7 #include "{{filename}}" | 7 #include "{{filename}}" |
8 {% endfor %} | 8 {% endfor %} |
9 | 9 |
10 namespace blink { | 10 namespace blink { |
11 | 11 |
12 {% if is_legacy %} | |
bashi
2017/04/27 08:49:49
It seems that we should have a new template file (
tkent
2017/04/27 09:15:12
IMO, we should not have a separated template. Idea
bashi
2017/04/27 23:12:32
How much code you are expecting to have overlaps b
tkent
2017/04/28 00:09:43
Well, suppose that:
A: Code amount to support non-
bashi
2017/04/28 00:59:09
Still I'd prefer having separate templates. Ration
tkent
2017/04/28 06:13:36
ok, done in Patch Set 2.
| |
13 // Suppress warning: global constructors, because struct WrapperTypeInfo is triv ial | |
bashi
2017/04/27 08:49:49
nit: Wrap to 80 columns?
tkent
2017/04/28 06:13:36
Done.
| |
14 // and does not depend on another global objects. | |
15 #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG) | |
16 #pragma clang diagnostic push | |
17 #pragma clang diagnostic ignored "-Wglobal-constructors" | |
18 #endif | |
19 const WrapperTypeInfo {{v8_class}}::wrapperTypeInfo = { | |
20 gin::kEmbedderBlink, | |
21 {{v8_class}}::DomTemplate, | |
22 nullptr, | |
23 nullptr, | |
24 nullptr, | |
25 "{{interface_name}}", | |
26 nullptr, | |
27 WrapperTypeInfo::kWrapperTypeNoPrototype, | |
28 WrapperTypeInfo::kObjectClassId, | |
29 WrapperTypeInfo::kNotInheritFromActiveScriptWrappable, | |
30 WrapperTypeInfo::kDependent | |
31 }; | |
32 #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG) | |
33 #pragma clang diagnostic pop | |
34 #endif | |
35 | |
36 static void | |
37 TypeErrorConstructorCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { | |
Yuki
2017/04/27 12:18:29
Due to the snapshot project, I think that this nee
peria
2017/04/27 13:14:49
Yes, it should.
The project is still under constru
tkent
2017/04/28 06:13:36
Done.
| |
38 V8ThrowException::ThrowTypeError(info.GetIsolate(), "Illegal constructor: {{in terface_name}}"); | |
39 } | |
40 | |
41 {% from 'constants.cpp.tmpl' import install_constants with context %} | |
42 static void Install{{v8_class}}Template(v8::Isolate* isolate, const DOMWrapperWo rld& world, v8::Local<v8::FunctionTemplate> interfaceTemplate) { | |
43 // Legacy callback interface doesn't need prototype. | |
Yuki
2017/04/27 12:18:29
nit: s/doesn't need prototype/must not have a prot
tkent
2017/04/28 06:13:36
Done.
| |
44 interfaceTemplate->RemovePrototype(); | |
45 | |
46 // Initialize the interface object's template. | |
47 V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interfaceTemplate, | |
48 {{v8_class}}::wrapperTypeInfo.interface_name, v8::Local<v8::FunctionTempla te>(), | |
49 {{v8_class}}::internalFieldCount); | |
50 interfaceTemplate->SetCallHandler(TypeErrorConstructorCallback); | |
51 //interfaceTemplate->SetLength({{interface_length}}); | |
bashi
2017/04/27 08:49:49
Remove?
Yuki
2017/04/27 12:18:29
Should be explicitly set to zero because the spec
tkent
2017/04/28 06:13:36
Done. Set 0 explicitly.
| |
52 | |
53 v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interfaceTemp late); | |
54 ALLOW_UNUSED_LOCAL(signature); | |
55 v8::Local<v8::ObjectTemplate> instanceTemplate = interfaceTemplate->InstanceTe mplate(); | |
56 ALLOW_UNUSED_LOCAL(instanceTemplate); | |
57 v8::Local<v8::ObjectTemplate> prototypeTemplate = interfaceTemplate->Prototype Template(); | |
58 ALLOW_UNUSED_LOCAL(prototypeTemplate); | |
59 | |
60 // Register DOM constants. | |
61 {{install_constants() | indent(2)}} | |
62 } | |
63 | |
64 v8::Local<v8::FunctionTemplate> {{v8_class}}::DomTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { | |
65 return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<Wrapper TypeInfo*>(&wrapperTypeInfo), Install{{v8_class}}Template); | |
66 } | |
67 | |
68 {% else %} {# is_legacy #} | |
69 | |
12 {{v8_class}}::{{v8_class}}(v8::Local<v8::Function> callback, ScriptState* script State) | 70 {{v8_class}}::{{v8_class}}(v8::Local<v8::Function> callback, ScriptState* script State) |
13 : m_scriptState(scriptState) { | 71 : m_scriptState(scriptState) { |
14 m_callback.Set(scriptState->GetIsolate(), callback); | 72 m_callback.Set(scriptState->GetIsolate(), callback); |
15 } | 73 } |
16 | 74 |
17 {{v8_class}}::~{{v8_class}}() {} | 75 {{v8_class}}::~{{v8_class}}() {} |
18 | 76 |
19 DEFINE_TRACE({{v8_class}}) { | 77 DEFINE_TRACE({{v8_class}}) { |
20 {{cpp_class}}::Trace(visitor); | 78 {{cpp_class}}::Trace(visitor); |
21 } | 79 } |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
64 V8ScriptRunner::CallFunction(m_callback.NewLocal(isolate), | 122 V8ScriptRunner::CallFunction(m_callback.NewLocal(isolate), |
65 ExecutionContext::From(m_scriptState.Get()), | 123 ExecutionContext::From(m_scriptState.Get()), |
66 {{this_handle_parameter}}, | 124 {{this_handle_parameter}}, |
67 {{method.arguments | length}}, | 125 {{method.arguments | length}}, |
68 argv, | 126 argv, |
69 isolate); | 127 isolate); |
70 {% endif %} | 128 {% endif %} |
71 } | 129 } |
72 | 130 |
73 {% endfor %} | 131 {% endfor %} |
132 | |
133 {% endif %} {# is_legacy #} | |
134 | |
74 } // namespace blink | 135 } // namespace blink |
75 | 136 |
76 {% endfilter %}{# format_blink_cpp_source_code #} | 137 {% endfilter %}{# format_blink_cpp_source_code #} |
OLD | NEW |