1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5[
6  {
7    "namespace": "test",
8    "description": "none",
9    "functions": [
10      {
11        "name": "getConfig",
12        "type": "function",
13        "description": "Gives configuration options set by the test.",
14        "parameters": [
15          {
16            "type": "function", "name": "callback", "parameters": [
17              {
18                "type": "object",
19                "name": "testConfig",
20                "properties": {
21                  "customArg": {
22                    "type": "string",
23                    "optional": true,
24                    "description": "Additional string argument to pass to test."
25                  },
26                  "ftpServer": {
27                    "type": "object",
28                    "optional": true,
29                    "description": "Details on the FTP server used to mock network responses.  Will be set only if test calls ExtensionApiTest::StartFTPServer().",
30                    "properties": {
31                      "port": {
32                        "type": "integer",
33                        "description": "The port on which the FTP server is listening.",
34                        "minimum": 1024,
35                        "maximum": 65535
36                      }
37                    }
38                  },
39                  "testServer": {
40                    "type": "object",
41                    "optional": true,
42                    "description": "Details on the test server used to mock network responses.  Will be set only if test calls ExtensionApiTest::StartTestServer().",
43                    "properties": {
44                      "port": {
45                        "type": "integer",
46                        "description": "The port on which the test server is listening.",
47                        "minimum": 1024,
48                        "maximum": 65535
49                      }
50                    }
51                  },
52                  "spawnedTestServer": {
53                    "type": "object",
54                    "optional": true,
55                    "description": "Details on the spawned test server used to mock network responses.  Will be set only if test calls ExtensionApiTest::StartSpawnedTestServer().",
56                    "properties": {
57                      "port": {
58                        "type": "integer",
59                        "description": "The port on which the test server is listening.",
60                        "minimum": 1024,
61                        "maximum": 65535
62                      }
63                    }
64                  },
65                  "testDataDirectory": {
66                    "type": "string",
67                    "description": "file:/// URL for the API test data directory."
68                  },
69                  "testWebSocketPort": {
70                    "type": "integer",
71                    "description": "The port on which the test WebSocket server is listening.",
72                    "minimum": 0,
73                    "maximum": 65535
74                  }
75                }
76              }
77            ]
78          }
79        ]
80      },
81      {
82        "name": "notifyFail",
83        "type": "function",
84        "description": "Notifies the browser process that test code running in the extension failed.  This is only used for internal unit testing.",
85        "parameters": [
86          {"type": "string", "name": "message"}
87        ]
88      },
89      {
90        "name": "notifyPass",
91        "type": "function",
92        "description": "Notifies the browser process that test code running in the extension passed.  This is only used for internal unit testing.",
93        "parameters": [
94          {"type": "string", "name": "message", "optional": true}
95        ]
96      },
97      {
98        "name": "log",
99        "type": "function",
100        "description": "Logs a message during internal unit testing.",
101        "parameters": [
102          {"type": "string", "name": "message"}
103        ]
104      },
105      {
106        "name": "sendMessage",
107        "type": "function",
108        "description": "Sends a string message to the browser process, generating a Notification that C++ test code can wait for.",
109        "parameters": [
110          {"type": "string", "name": "message"},
111          {
112            "type": "function",
113            "name": "callback",
114            "optional": true,
115            "parameters": [
116              {"type": "string", "name": "response"}
117            ]
118          }
119        ]
120      },
121      {
122        "name": "callbackAdded",
123        "type": "function",
124        "nocompile": true,
125        "parameters": []
126      },
127      {
128        "name": "runNextTest",
129        "type": "function",
130        "nocompile": true,
131        "parameters": []
132      },
133      {
134        "name": "fail",
135        "type": "function",
136        "nocompile": true,
137        "parameters": [
138          {"type": "any", "name": "message", "optional": true}
139        ]
140      },
141      {
142        "name": "succeed",
143        "type": "function",
144        "nocompile": true,
145        "parameters": [
146          {"type": "any", "name": "message", "optional": true}
147        ]
148      },
149      {
150        "name": "runWithModuleSystem",
151        "type": "function",
152        "nocompile": true,
153        "description": "Gets a module system suitable for use in the context of a test.",
154        "parameters": [
155          {
156            "type": "function",
157            "name": "callback"
158          }
159        ]
160      },
161      {
162        "name": "assertTrue",
163        "type": "function",
164        "nocompile": true,
165        "parameters": [
166          {
167            "name": "test",
168            "choices": [
169              {"type": "string"},
170              {"type": "boolean"}
171            ]
172          },
173          {"type": "string", "name": "message", "optional": true}
174        ]
175      },
176      {
177        "name": "assertFalse",
178        "type": "function",
179        "nocompile": true,
180        "parameters": [
181          {
182            "name": "test",
183            "choices": [
184              {"type": "string"},
185              {"type": "boolean"}
186            ]
187          },
188          {"type": "string", "name": "message", "optional": true}
189        ]
190      },
191      {
192        "name": "assertBool",
193        "type": "function",
194        "nocompile": true,
195        "parameters": [
196          {
197            "name": "test",
198            "choices": [
199              {"type": "string"},
200              {"type": "boolean"}
201            ]
202          },
203          {"type": "boolean", "name": "expected"},
204          {"type": "string", "name": "message", "optional": true}
205        ]
206      },
207      {
208        "name": "checkDeepEq",
209        "type": "function",
210        "nocompile": true,
211        "allowAmbiguousOptionalArguments": true,
212        "parameters": [
213          // These need to be optional because they can be null.
214          {"type": "any", "name": "expected", "optional": true},
215          {"type": "any", "name": "actual", "optional": true}
216        ]
217      },
218      {
219        "name": "assertEq",
220        "type": "function",
221        "nocompile": true,
222        "allowAmbiguousOptionalArguments": true,
223        "parameters": [
224          // These need to be optional because they can be null.
225          {"type": "any", "name": "expected", "optional": true},
226          {"type": "any", "name": "actual", "optional": true},
227          {"type": "string", "name": "message", "optional": true}
228        ]
229      },
230      {
231        "name": "assertNoLastError",
232        "type": "function",
233        "nocompile": true,
234        "parameters": []
235      },
236      {
237        "name": "assertLastError",
238        "type": "function",
239        "nocompile": true,
240        "parameters": [
241          {"type": "string", "name": "expectedError"}
242        ]
243      },
244      {
245        "name": "assertThrows",
246        "type": "function",
247        "nocompile": true,
248        "parameters": [
249          {"type": "function", "name": "fn"},
250          {
251            "type": "object",
252            "name": "self",
253            "additionalProperties": {"type": "any"},
254            "optional": true
255          },
256          {"type": "array", "items": {"type": "any"}, "name": "args"},
257          {"choices": [ {"type": "string"}, {"type": "object", "isInstanceOf": "RegExp"} ], "name": "message", "optional": true}
258        ]
259      },
260      {
261        "name": "callback",
262        "type": "function",
263        "nocompile": true,
264        "parameters": [
265          {"type": "function", "name": "func", "optional": true},
266          {"type": "string", "name": "expectedError", "optional": true}
267        ]
268      },
269      {
270        "name": "listenOnce",
271        "type": "function",
272        "nocompile": true,
273        "parameters": [
274          // TODO(cduvall): Make this a $ref to events.Event.
275          {"type": "any", "name": "event"},
276          {"type": "function", "name": "func"}
277        ]
278      },
279      {
280        "name": "listenForever",
281        "type": "function",
282        "nocompile": true,
283        "parameters": [
284          // TODO(cduvall): Make this a $ref to events.Event.
285          {"type": "any", "name": "event"},
286          {"type": "function", "name": "func"}
287        ]
288      },
289      {
290        "name": "callbackPass",
291        "type": "function",
292        "nocompile": true,
293        "parameters": [
294          {"type": "function", "name": "func", "optional": true}
295        ]
296      },
297      {
298        "name": "callbackFail",
299        "type": "function",
300        "nocompile": true,
301        "parameters": [
302          {"type": "string", "name": "expectedError"},
303          {"type": "function", "name": "func", "optional": true}
304        ]
305      },
306      {
307        "name": "runTests",
308        "type": "function",
309        "nocompile": true,
310        "parameters": [
311          {
312            "type": "array",
313            "name": "tests",
314            "items": {"type": "function"}
315          }
316        ]
317      },
318      {
319        "name": "getApiFeatures",
320        "type": "function",
321        "nocompile": true,
322        "parameters": []
323      },
324      {
325        "name": "getApiDefinitions",
326        "type": "function",
327        "nocompile": true,
328        "parameters": [
329          {
330            "type": "array",
331            "name": "apiNames",
332            "optional": true,
333            "items": {"type": "string"}
334          }
335        ]
336      },
337      {
338        "name": "isProcessingUserGesture",
339        "type": "function",
340        "nocompile": true,
341        "parameters": []
342      },
343      {
344        "name": "runWithUserGesture",
345        "type": "function",
346        "description": "Runs the callback in the context of a user gesture.",
347        "nocompile": true,
348        "parameters": [
349          {
350            "type": "function",
351            "name": "callback",
352            "parameters": []
353          }
354        ]
355      },
356      {
357        "name": "runWithoutUserGesture",
358        "type": "function",
359        "nocompile": true,
360        "parameters": [
361          {
362            "type": "function",
363            "name": "callback",
364            "parameters": []
365          }
366        ]
367      },
368      {
369        "name": "waitForRoundTrip",
370        "type": "function",
371        "description": "Sends a string message one round trip from the renderer to the browser process and back.",
372        "parameters": [
373          {"type": "string", "name": "message"},
374          {
375            "type": "function",
376            "name": "callback",
377            "parameters": [
378              {"type": "string", "name": "message"}
379            ]
380          }
381        ]
382      },
383      {
384        "name": "setExceptionHandler",
385        "type": "function",
386        "description": "Sets the function to be called when an exception occurs. By default this is a function which fails the test. This is reset for every test run through $ref:test.runTests.",
387        "nocompile": true,
388        "parameters": [
389          {
390            "type": "function",
391            "name": "callback",
392            "parameters": [
393              {"type": "string", "name": "message"},
394              {"type": "any", "name": "exception"}
395            ]
396          }
397        ]
398      }
399    ],
400    "events": [
401      {
402        "name": "onMessage",
403        "type": "function",
404        "description": "Used to test sending messages to extensions.",
405        "parameters": [
406          {
407            "type": "object",
408            "name": "info",
409            "properties": {
410              "data": { "type": "string", "description": "Additional information." },
411              "lastMessage": { "type": "boolean", "description": "True if this was the last message for this test" }
412            }
413          }
414        ]
415      }
416    ]
417  }
418]
419