Add new certificateProvider extension API.
[chromium-blink-merge.git] / chrome / browser / extensions / api / README.txt
blob8f767ef0f51cd956d14a9f92ea10c8c9d2097a5a
1 This file describes steps and files needed when adding a new API to Chrome.
2 Before you start coding your new API, though, make sure you follow the process
3 described at:
4   http://www.chromium.org/developers/design-documents/extensions/proposed-changes/apis-under-development
6 Two approaches are available for writing your API specification. The original
7 approach relies on JSON specification files. The more recent and simpler system 
8 uses Web IDL files, but does not yet support all the features of the JSON files.
9 Discuss with a member of the extensions team (aa@chromium.org) before you decide
10 which approach is better suited to your API.
12 The following steps suppose you're writing an experimental API called "Foo".
14 --------------------------------------------------------------------------------
15 APPROACH 1: JSON FILES
17 1) Write your API specification.
18 Create "chrome/common/extensions/api/experimental_foo.json". For inspiration 
19 look at the "app" API. Include descriptions fields to generate the
20 documentation.
22 2) Add your API specification to api.gyp.
23 Add "experimental_foo.json" to the "schema_files" section in
24 "chrome/common/extensions/api/api.gyp".
26 3) Write the API function handlers.
27 Create foo_api.cc and foo_api.h under "chrome/browser/extensions/api/foo". You
28 should use the JSON Schema Compiler. Look at the "permissions_api.cc" for
29 details on how to do that.
31 --------------------------------------------------------------------------------
32 APPROACH 2: IDL FILES
34 1) Write your API specification.
35 Create "chrome/common/extensions/api/experimental_foo.idl". For inspiration look
36 at "alarms.idl". Include comments, they will be used to automatically generate
37 the documentation.
39 2) Add your API specification to api.gyp.
40 Add "experimental_foo.idl" to the "schema_files" section in
41 "chrome/common/extensions/api/api.gyp".
43 3) Write the API function handlers.
44 Create foo_api.cc and foo_api.h under "chrome/browser/extensions/api/foo". You
45 should use the JSON Schema Compiler. Look at the "alarms_api.cc" for details on
46 how to do that.
48 --------------------------------------------------------------------------------
49 STEPS COMMON TO BOTH APPROACHES
51 6) Write support classes for your API
52 If your API needs any support classes add them to
53 "chrome/browser/extensions/api/foo". Some old APIs added their support classes
54 directly to chrome/browser/extensions. Don't do that.
56 7) Update the project with your new files.
57 The files you created in (3) and (5) should be added to
58 "chrome/chrome_browser_extensions.gypi".
60 --------------------------------------------------------------------------------
61 GENERATING DOCUMENTATION
63 8) Add a stub template in ../docs/templates/public corresponding to your API.
64 See other templates for inspiration.
66 9) Run ../docs/templates/server2/preview.py to view the generated documentation.
68 --------------------------------------------------------------------------------
69 WRITING TESTS
71 12) Write a unit test for your API.
72 Create "chrome/browser/extensions/api/foo/foo_api_unittest.cc" and test each of
73 your API methods. See "alarms_api_unittest.cc" for details. Once done add your
74 .cc to "chrome/chrome_tests.gypi".