• Home
  • History
  • Annotate
  • only in /external/chromium_org/chrome/browser/extensions/api/
NameDateSize

..12-Mar-201536 KiB

activity_log_private/12-Mar-20154 KiB

alarms/12-Mar-20154 KiB

api_registration.gyp12-Mar-20151.4 KiB

audio/12-Mar-20154 KiB

automation/12-Mar-20154 KiB

automation_internal/12-Mar-20154 KiB

autotest_private/12-Mar-20154 KiB

bookmark_manager_private/12-Mar-20154 KiB

bookmarks/12-Mar-20154 KiB

braille_display_private/12-Mar-20154 KiB

browser/12-Mar-20154 KiB

browsing_data/12-Mar-20154 KiB

cast_streaming/12-Mar-20154 KiB

chrome_extensions_api_client.cc12-Mar-20154 KiB

chrome_extensions_api_client.h12-Mar-20152.2 KiB

cloud_print_private/12-Mar-20154 KiB

command_line_private/12-Mar-20154 KiB

commands/12-Mar-20154 KiB

content_settings/12-Mar-20154 KiB

context_menus/12-Mar-20154 KiB

cookies/12-Mar-20154 KiB

copresence/12-Mar-20154 KiB

copresence_private/12-Mar-20154 KiB

debugger/12-Mar-20154 KiB

declarative/12-Mar-20154 KiB

declarative_content/12-Mar-20154 KiB

declarative_webrequest/12-Mar-20154 KiB

DEPS12-Mar-201574

desktop_capture/12-Mar-20154 KiB

developer_private/12-Mar-20154 KiB

diagnostics/12-Mar-20154 KiB

dial/12-Mar-20154 KiB

downloads/12-Mar-20154 KiB

downloads_internal/12-Mar-20154 KiB

easy_unlock_private/12-Mar-20154 KiB

enterprise_platform_keys/12-Mar-20154 KiB

enterprise_platform_keys_private/12-Mar-20154 KiB

experience_sampling_private/12-Mar-20154 KiB

extension_action/12-Mar-20154 KiB

feedback_private/12-Mar-20154 KiB

file_handlers/12-Mar-20154 KiB

file_system/12-Mar-20154 KiB

font_settings/12-Mar-20154 KiB

gcd_private/12-Mar-20154 KiB

gcm/12-Mar-20154 KiB

guest_view/12-Mar-20154 KiB

history/12-Mar-20154 KiB

hotword_private/12-Mar-20154 KiB

i18n/12-Mar-20154 KiB

identity/12-Mar-20154 KiB

identity_private/12-Mar-20154 KiB

idle/12-Mar-20154 KiB

idltest/12-Mar-20154 KiB

image_writer_private/12-Mar-20154 KiB

input/12-Mar-20154 KiB

input_ime/12-Mar-20154 KiB

location/12-Mar-20154 KiB

log_private/12-Mar-20154 KiB

management/12-Mar-20154 KiB

mdns/12-Mar-20154 KiB

media_galleries/12-Mar-20154 KiB

media_galleries_private/12-Mar-20154 KiB

messaging/12-Mar-20154 KiB

metrics_private/12-Mar-20154 KiB

module/12-Mar-20154 KiB

music_manager_private/12-Mar-20154 KiB

networking_private/12-Mar-20154 KiB

notification_provider/12-Mar-20154 KiB

notifications/12-Mar-20154 KiB

omnibox/12-Mar-20154 KiB

page_capture/12-Mar-20154 KiB

permissions/12-Mar-20154 KiB

preference/12-Mar-20154 KiB

preferences_private/12-Mar-20154 KiB

principals_private/12-Mar-20154 KiB

processes/12-Mar-20154 KiB

proxy/12-Mar-20154 KiB

push_messaging/12-Mar-20154 KiB

reading_list_private/12-Mar-20154 KiB

README.txt12-Mar-20153.1 KiB

recovery_private/12-Mar-20154 KiB

runtime/12-Mar-20154 KiB

screenlock_private/12-Mar-20154 KiB

sessions/12-Mar-20154 KiB

settings_overrides/12-Mar-20154 KiB

signed_in_devices/12-Mar-20154 KiB

socket/12-Mar-20154 KiB

sockets_tcp/12-Mar-20154 KiB

sockets_tcp_server/12-Mar-20154 KiB

sockets_udp/12-Mar-20154 KiB

spellcheck/12-Mar-20154 KiB

storage/12-Mar-20154 KiB

streams_private/12-Mar-20154 KiB

sync_file_system/12-Mar-20154 KiB

synced_notifications_private/12-Mar-20154 KiB

system_cpu/12-Mar-20154 KiB

system_display/12-Mar-20154 KiB

system_indicator/12-Mar-20154 KiB

system_memory/12-Mar-20154 KiB

system_network/12-Mar-20154 KiB

system_private/12-Mar-20154 KiB

system_storage/12-Mar-20154 KiB

tab_capture/12-Mar-20154 KiB

tabs/12-Mar-20154 KiB

terminal/12-Mar-20154 KiB

test/12-Mar-20154 KiB

top_sites/12-Mar-20154 KiB

web_navigation/12-Mar-20154 KiB

web_request/12-Mar-20154 KiB

web_view/12-Mar-20154 KiB

webcam_private/12-Mar-20154 KiB

webrtc_audio_private/12-Mar-20154 KiB

webrtc_logging_private/12-Mar-20154 KiB

webstore/12-Mar-20154 KiB

webstore_private/12-Mar-20154 KiB

README.txt

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