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

Unified Diff: tools/json_schema_compiler/model.py

Issue 1055673002: [Extensions API] Remove inline enums (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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: tools/json_schema_compiler/model.py
diff --git a/tools/json_schema_compiler/model.py b/tools/json_schema_compiler/model.py
index 3f7b2fe693439fedcbed56f249294d7f126afc56..642e818492b6fe63a6f1ca51375157364770f41c 100644
--- a/tools/json_schema_compiler/model.py
+++ b/tools/json_schema_compiler/model.py
@@ -24,7 +24,8 @@ class Model(object):
Properties:
- |namespaces| a map of a namespace name to its model.Namespace
"""
- def __init__(self):
+ def __init__(self, allow_inline_enums=True):
+ self._allow_inline_enums = allow_inline_enums
self.namespaces = {}
def AddNamespace(self,
@@ -37,7 +38,8 @@ class Model(object):
namespace = Namespace(json,
source_file,
include_compiler_options=include_compiler_options,
- environment=environment)
+ environment=environment,
+ allow_inline_enums=self._allow_inline_enums)
self.namespaces[namespace.name] = namespace
return namespace
@@ -104,7 +106,8 @@ class Namespace(object):
json,
source_file,
include_compiler_options=False,
- environment=None):
+ environment=None,
+ allow_inline_enums=True):
self.name = json['namespace']
if 'description' not in json:
# TODO(kalman): Go back to throwing an error here.
@@ -118,6 +121,7 @@ class Namespace(object):
self.source_file_dir, self.source_file_filename = os.path.split(source_file)
self.short_filename = os.path.basename(source_file).split('.')[0]
self.parent = None
+ self.allow_inline_enums = allow_inline_enums
self.platforms = _GetPlatforms(json)
toplevel_origin = Origin(from_client=True, from_json=True)
self.types = _GetTypes(self, json, self, toplevel_origin)
@@ -198,6 +202,11 @@ class Type(object):
self.property_type = PropertyType.REF
self.ref_type = json['$ref']
elif 'enum' in json and json_type == 'string':
+ if not namespace.allow_inline_enums and not isinstance(parent, Namespace):
not at google - send to devlin 2015/04/03 17:04:38 Is there a reason to make this a parameter rather
Devlin 2015/04/03 19:38:51 The docserver inlines types, and then feeds them b
+ raise ParseException(
+ self,
+ 'Inline enum "%s" found in namespace "%s". These are not allowed. '
+ 'See crbug.com/472279' % (name, namespace.name))
self.property_type = PropertyType.ENUM
self.enum_values = [EnumValue(value) for value in json['enum']]
self.cpp_enum_prefix_override = json.get('cpp_enum_prefix_override', None)

Powered by Google App Engine
This is Rietveld 408576698