Index: tools/json_schema_compiler/schema_bundle_generator.py |
diff --git a/tools/json_schema_compiler/schema_bundle_generator.py b/tools/json_schema_compiler/schema_bundle_generator.py |
index 3272be1964fbca85eae41d4f66c25fdc718a8cf4..5612ed761d750c17af0bd908266d0b8efa10973c 100644 |
--- a/tools/json_schema_compiler/schema_bundle_generator.py |
+++ b/tools/json_schema_compiler/schema_bundle_generator.py |
@@ -19,7 +19,8 @@ class SchemaBundleGenerator(object): |
"""This class contains methods to generate code based on multiple schemas. |
""" |
- def __init__(self, model, api_defs, cpp_type_generator): |
+ def __init__(self, root, model, api_defs, cpp_type_generator): |
+ self._root = root; |
self._model = model |
self._api_defs = api_defs |
self._cpp_type_generator = cpp_type_generator |
@@ -68,15 +69,22 @@ class SchemaBundleGenerator(object): |
c.Append('#include "base/basictypes.h"') |
for namespace in self._model.namespaces.values(): |
- ifdefs = self._GetPlatformIfdefs(namespace) |
- if ifdefs is not None: |
- c.Append("#if %s" % ifdefs, indent_level=0) |
- |
namespace_name = namespace.unix_name.replace("experimental_", "") |
implementation_header = namespace.compiler_options.get( |
"implemented_in", |
"chrome/browser/extensions/api/%s/%s_api.h" % (namespace_name, |
namespace_name)) |
+ if not os.path.exists( |
+ os.path.join(self._root, os.path.normpath(implementation_header))): |
+ if "implemented_in" in namespace.compiler_options: |
+ raise ValueError('Header file for namespace "%s" specified in ' |
+ 'compiler_options not found: %s' % |
+ (namespace.unix_name, implementation_header)) |
+ continue |
+ ifdefs = self._GetPlatformIfdefs(namespace) |
+ if ifdefs is not None: |
+ c.Append("#if %s" % ifdefs, indent_level=0) |
+ |
c.Append('#include "%s"' % implementation_header) |
if ifdefs is not None: |