Index: headless/lib/browser/client_api_generator.py |
diff --git a/headless/lib/browser/client_api_generator.py b/headless/lib/browser/client_api_generator.py |
index a264b32c9fff5d880dfbbe522ec041e4f8c3af75..bb93ede97aa557fde61a8ead59480db0b88f9abd 100644 |
--- a/headless/lib/browser/client_api_generator.py |
+++ b/headless/lib/browser/client_api_generator.py |
@@ -373,16 +373,21 @@ def PatchExperimentalCommandsAndEvents(json_api): |
command['experimental'] = True |
for event in domain.get('events', []): |
event['experimental'] = True |
+ |
+ |
+def EnsureCommandsHaveParametersAndReturnTypes(json_api): |
+ """ |
+ Make sure all commands have at least empty parameters and return values. This |
+ guarantees API compatibility if a previously experimental command is made |
+ stable. |
+ """ |
+ for domain in json_api['domains']: |
for command in domain.get('commands', []): |
- if not command.get('experimental', False): |
- continue |
if not 'parameters' in command: |
command['parameters'] = [] |
if not 'returns' in command: |
command['returns'] = [] |
for event in domain.get('events', []): |
- if not event.get('experimental', False): |
- continue |
if not 'parameters' in event: |
event['parameters'] = [] |
@@ -422,6 +427,7 @@ if __name__ == '__main__': |
json_api, output_dirname = ParseArguments(sys.argv[1:]) |
jinja_env = InitializeJinjaEnv(output_dirname) |
PatchExperimentalCommandsAndEvents(json_api) |
+ EnsureCommandsHaveParametersAndReturnTypes(json_api) |
SynthesizeCommandTypes(json_api) |
SynthesizeEventTypes(json_api) |
PatchFullQualifiedRefs(json_api) |