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

Unified Diff: third_party/WebKit/Source/bindings/scripts/v8_dictionary.py

Issue 2471393004: bindings: Use forward declarations for wrapper types in dictionary_impl (Closed)
Patch Set: WIP 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/bindings/scripts/v8_dictionary.py
diff --git a/third_party/WebKit/Source/bindings/scripts/v8_dictionary.py b/third_party/WebKit/Source/bindings/scripts/v8_dictionary.py
index 4bdb8fd2a51f1bf1f0c95617fa749c0b59bcb804..92bfe78a8d30b6f24f23035b9be5db3332e06451 100644
--- a/third_party/WebKit/Source/bindings/scripts/v8_dictionary.py
+++ b/third_party/WebKit/Source/bindings/scripts/v8_dictionary.py
@@ -161,11 +161,14 @@ def dictionary_impl_context(dictionary, interfaces_info):
return sorted(members_dict.values(), key=lambda member: member['cpp_name'])
includes.clear()
+ header_forward_decls = set()
peria 2016/11/11 03:06:38 I think we rarely use forward declarations in .cpp
header_includes = set(['platform/heap/Handle.h'])
- members = [member_impl_context(member, interfaces_info, header_includes)
+ members = [member_impl_context(member, interfaces_info,
+ header_includes, header_forward_decls)
for member in dictionary.members]
members = remove_duplicate_members(members)
context = {
+ 'header_forward_decls': header_forward_decls,
peria 2016/11/11 03:06:38 ditto. for the key.
'header_includes': header_includes,
'cpp_class': v8_utilities.cpp_name(dictionary),
'members': members,
@@ -184,7 +187,8 @@ def dictionary_impl_context(dictionary, interfaces_info):
return context
-def member_impl_context(member, interfaces_info, header_includes):
+def member_impl_context(member, interfaces_info, header_includes,
+ header_forward_decls):
idl_type = unwrap_nullable_if_needed(member.idl_type)
cpp_name = v8_utilities.cpp_name(member)
@@ -213,7 +217,13 @@ def member_impl_context(member, interfaces_info, header_includes):
if member.default_value and not member.default_value.is_null:
cpp_default_value = idl_type.literal_cpp_value(member.default_value)
- header_includes.update(idl_type.impl_includes_for_type(interfaces_info))
+ forward_decl_name = idl_type.impl_forward_declaration_name
+ if forward_decl_name:
+ includes.update(idl_type.impl_includes_for_type(interfaces_info))
+ header_forward_decls.add(forward_decl_name)
+ else:
+ header_includes.update(idl_type.impl_includes_for_type(interfaces_info))
+
return {
'cpp_default_value': cpp_default_value,
'cpp_name': cpp_name,

Powered by Google App Engine
This is Rietveld 408576698