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

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

Issue 1975993003: Reland: Generate separate files for union type containers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/bindings/scripts/utilities.py
diff --git a/third_party/WebKit/Source/bindings/scripts/utilities.py b/third_party/WebKit/Source/bindings/scripts/utilities.py
index 23708876cfcbfe13ffc376823fc778c054f598b0..92e80850614c9045b633ca0491d3cd3fd5fc52fe 100644
--- a/third_party/WebKit/Source/bindings/scripts/utilities.py
+++ b/third_party/WebKit/Source/bindings/scripts/utilities.py
@@ -88,7 +88,7 @@ class ComponentInfoProvider(object):
return set()
@property
- def include_path_for_union_types(self):
+ def include_path_for_union_types(self, union_type):
return None
@@ -118,9 +118,9 @@ class ComponentInfoProviderCore(ComponentInfoProvider):
def union_types(self):
return self._component_info['union_types']
- @property
- def include_path_for_union_types(self):
- return 'bindings/core/v8/UnionTypesCore.h'
+ def include_path_for_union_types(self, union_type):
+ name = shorten_union_name(union_type)
+ return 'bindings/core/v8/%s.h' % name
@property
def specifier_for_export(self):
@@ -165,9 +165,13 @@ class ComponentInfoProviderModules(ComponentInfoProvider):
# generating multiple container generation.
return self._component_info_modules['union_types'] - self._component_info_core['union_types']
- @property
- def include_path_for_union_types(self):
- return 'bindings/modules/v8/UnionTypesModules.h'
+ def include_path_for_union_types(self, union_type):
+ core_union_type_names = [core_union_type.name for core_union_type
+ in self._component_info_core['union_types']]
+ name = shorten_union_name(union_type)
+ if union_type.name in core_union_type_names:
+ return 'bindings/core/v8/%s.h' % name
+ return 'bindings/modules/v8/%s.h' % name
@property
def specifier_for_export(self):
@@ -384,3 +388,20 @@ def get_interface_exposed_arguments(file_contents):
arguments.append({'exposed': exposed, 'runtime_enabled': runtime_enabled})
return arguments
+
+
+# Workaround for http://crbug.com/611437
+# TODO(bashi): Remove this hack once we resolve too-long generated file names.
+def shorten_union_name(union_type):
+ aliases = {
+ 'CanvasRenderingContext2DOrWebGLRenderingContextOrWebGL2RenderingContextOrImageBitmapRenderingContext': 'RenderingContext',
+ }
+
+ idl_type = union_type
+ if union_type.is_nullable:
+ idl_type = union_type.inner_type
+ name = idl_type.cpp_type or idl_type.name
+ alias = aliases.get(name)
+ if alias:
+ return alias
+ return name
Dirk Pranke 2016/05/17 00:16:49 nit: this could just be `return aliases.get(name,

Powered by Google App Engine
This is Rietveld 408576698