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

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

Issue 2837923003: Make NodeFilter a legacy callback interface. (Closed)
Patch Set: legacy_callback_interface.*.tmpl, etc. Created 3 years, 7 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 unified diff | Download patch
OLDNEW
(Empty)
1 {% filter format_blink_cpp_source_code %}
bashi 2017/04/28 06:39:05 Sorry forgot to mention that we need to add legacy
tkent 2017/04/28 09:22:01 Done.
2
3 {% include 'copyright_block.txt' %}
4 #include "{{v8_class}}.h"
5
6 {% for filename in cpp_includes %}
7 #include "{{filename}}"
8 {% endfor %}
9
10 namespace blink {
11
12 // Suppress warning: global constructors, because struct WrapperTypeInfo is
13 // trivial and does not depend on another global objects.
14 #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG)
15 #pragma clang diagnostic push
16 #pragma clang diagnostic ignored "-Wglobal-constructors"
17 #endif
18 const WrapperTypeInfo {{v8_class}}::wrapperTypeInfo = {
19 gin::kEmbedderBlink,
20 {{v8_class}}::DomTemplate,
21 nullptr,
22 nullptr,
23 nullptr,
24 "{{interface_name}}",
25 nullptr,
26 WrapperTypeInfo::kWrapperTypeNoPrototype,
27 WrapperTypeInfo::kObjectClassId,
28 WrapperTypeInfo::kNotInheritFromActiveScriptWrappable,
29 WrapperTypeInfo::kDependent
30 };
31 #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG)
32 #pragma clang diagnostic pop
33 #endif
34
35 void {{v8_class}}::TypeErrorConstructorCallback(
36 const v8::FunctionCallbackInfo<v8::Value>& info) {
37 V8ThrowException::ThrowTypeError(info.GetIsolate(),
38 "Illegal constructor: {{interface_name}}");
39 }
40
41 {% from 'constants.cpp.tmpl' import install_constants with context %}
42 static void Install{{v8_class}}Template(
43 v8::Isolate* isolate,
44 const DOMWrapperWorld& world,
45 v8::Local<v8::FunctionTemplate> interfaceTemplate) {
46 // Legacy callback interface must not have a prototype object.
47 interfaceTemplate->RemovePrototype();
48
49 // Initialize the interface object's template.
50 V8DOMConfiguration::InitializeDOMInterfaceTemplate(isolate, interfaceTemplate,
51 {{v8_class}}::wrapperTypeInfo.interface_name, v8::Local<v8::FunctionTempla te>(),
52 kV8DefaultWrapperInternalFieldCount);
53 interfaceTemplate->SetCallHandler({{v8_class}}::TypeErrorConstructorCallback);
54 interfaceTemplate->SetLength(0);
55
56 v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interfaceTemp late);
57 ALLOW_UNUSED_LOCAL(signature);
58 v8::Local<v8::ObjectTemplate> instanceTemplate = interfaceTemplate->InstanceTe mplate();
59 ALLOW_UNUSED_LOCAL(instanceTemplate);
60 v8::Local<v8::ObjectTemplate> prototypeTemplate = interfaceTemplate->Prototype Template();
61 ALLOW_UNUSED_LOCAL(prototypeTemplate);
62
63 // Register DOM constants.
64 {{install_constants() | indent(2)}}
65 }
66
67 v8::Local<v8::FunctionTemplate> {{v8_class}}::DomTemplate(v8::Isolate* isolate,
68 const DOMWrapperWorld& world) {
69 return V8DOMConfiguration::DomClassTemplate(
70 isolate,
71 world,
72 const_cast<WrapperTypeInfo*>(&wrapperTypeInfo),
73 Install{{v8_class}}Template);
74 }
75
76 } // namespace blink
77
78 {% endfilter %}{# format_blink_cpp_source_code #}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698