summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions/docs/static/manifest.html
blob: 3dadd21e96f9894d22d5b9fa4b3115570652e402 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
<div id="pageData-name" class="pageData">Formats: Manifest Files</div>
<div id="pageData-showTOC" class="pageData">true</div>

<p>
Every extension has a
<a href="http://www.json.org">JSON</a>-formatted manifest file,
named <code>manifest.json</code>,
that provides important information about the extension.
</p>

<h2 id="overview"> Field summary </h2>

<p>
The following code shows the supported manifest fields,
with links to the page that discusses each field.
The only fields that are required for every extension
are <b>name</b> and <b>version</b>.
</p>

<pre>
{
  <em>// Required</em>
  "<a href="#name">name</a>": "<em>My Extension</em>",
  "<a href="#version">version</a>": "<em>versionString</em>",

  <em>// Recommended</em>
  "<a href="#description">description</a>": "<em>A plain text description</em>",
  "<a href="#icons">icons</a>": { ... },
  "<a href="#default_locale">default_locale</a>": "en",

  <em>// Pick one (or none)</em>
  "<a href="browserAction.html">browser_action</a>": {...},
  "<a href="pageAction.html">page_action</a>": {...},
  "<a href="themes.html">theme</a>": {...},

  <em>// Add any of these that you need</em>
  "<a href="background_pages.html">background_page</a>": "<em>aFile</em>.html",
  "<a href="override.html">chrome_url_overrides</a>": {...},
  "<a href="content_scripts.html">content_scripts</a>": [...],
  "<a href="#minimum_chrome_version">minimum_chrome_version</a>": "<em>versionString</em>",
  "<a href="options.html">options_page</a>": "<em>aFile</em>.html",
  "<a href="#permissions">permissions</a>": [...],
  "<a href="npapi.html">plugins</a>": [...],
  "<a href="autoupdate.html">update_url</a>": "http://<em>path/to/updateInfo</em>.xml"
}
</pre>


<h2>Field details</h2>

<p>
This section covers fields that aren't described in another page.
For a complete list of fields,
with links to where they're described in detail,
see the <a href="#overview">Field summary</a>.
</p>

<h3 id="description">description</h3>

<p>
A plain text string
(no HTML or other formatting;
no more than 132 characters)
that describes the extension.
The description should be suitable for both
the browser's extension management UI
and the <a href="https://chrome.google.com/extensions">extension gallery</a>.
You can specify locale-specific strings for this field;
see <a href="i18n.html">Internationalization</a> for details.
</p>


<h3 id="icons">icons</h3>

<p>
One or more icons that represent the extension.
You should provide icons in at least two sizes &mdash;
48x48 and 128x128 pixels.
The 48x48 icon is used in the extensions management page
(chrome://extensions).
The 128x128 icon is used when the user installs the extension.
You can also specify a 16x16 icon to be used as the favicon
for the extension's pages.
The 16x16 icon is also displayed in the experimental
<a href="experimental.infobars.html">infobar</a>
feature.
</p>

<p>
Icons should generally be in PNG format,
because PNG has the best support for transparency.
They can, however, be in any format supported by WebKit,
including BMP, GIF, ICO, and JPEG.
Here's an example of specifying the icons:
</p>

<pre>
"icons": { "16": "icon16.png",
           "48": "icon48.png",
          "128": "icon128.png" },
</pre>

<p>
If you submit your extension to the
<a href="https://chrome.google.com/extensions">gallery</a>,
you'll need to upload additional images,
including a 32x32-pixel logo
and at least one screenshot of your extension.
For more information on gallery requirements,
see the
<a href="http://www.google.com/support/chrome/bin/answer.py?answer=113909">gallery help</a>.
</p>

<h3 id="default_locale">default_locale</h3>

<p>
Specifies the subdirectory of <code>_locales</code>
that contains the default strings for this extension.
This field is <b>required</b> in extensions
that have a <code>_locales</code> directory;
it <b>must be absent</b> in extensions
that have no <code>_locales</code> directory.
For details, see
<a href="i18n.html">Internationalization</a>.
</p>

<h3 id="minimum_chrome_version">minimum_chrome_version</h3>

<p>
The version of Google Chrome that your extension requires, if any.
The format for this string is the same as for the
<a href="#version">version</a> field.

<h3 id="name">name</h3>

<p>
A short, plain text string
(no more than 45 characters)
that identifies the extension.
The name is used in the install dialog,
extension management UI,
and the <a href="https://chrome.google.com/extensions">extension gallery</a>.
You can specify locale-specific strings for this field;
see <a href="i18n.html">Internationalization</a> for details.
</p>

<h3 id="permissions">permissions</h3>

<p>
An array of permissions that the extension might use.
Each permission can be either one of a list of known strings
(such as "tabs" or "bookmarks")
or a match pattern
that gives access to one or more hosts.
These permissions are displayed to users before installation.
Permissions might also help to limit damage
if your extension is attacked.
</p>

<p>
If an API requires you to declare a permission in the manifest,
then its documentation tells you how to do so.
For example,
the <a href="tabs.html">Tabs</a> page
shows you how to
declare the "tabs" permission.
</p>

<p>
Here's an example of the permissions part of a manifest file:
</p>

<pre>
"permissions": [
  "tabs",
  "bookmarks",
  "http://www.blogger.com/",
  "http://*.google.com/"
],
</pre>

<p>
For more information, see
<a href="xhr.html">Cross-Origin XMLHttpRequest</a>,
<a href="windows.html">Windows</a>,
<a href="tabs.html">Tabs</a>, and
<a href="bookmarks.html">Bookmarks</a>.
</p>

<h3 id="version">version</h3>

<p>
One to four dot-separated integers
identifying the version of this extension.
A couple of rules apply to the integers:
they must be between 0 and 65535, inclusive,
and non-zero integers can't start with 0.
For example, 99999 and 032 are both invalid.
</p>

<p>
Here are some examples of valid versions:
</p>

<ul>
  <li> <code>"version": "1"</code> </li>
  <li> <code>"version": "1.0"</code> </li>
  <li> <code>"version": "2.10.2"</code> </li>
  <li> <code>"version": "3.1.2.4567"</code> </li>
</ul>

<p>
The autoupdate system compares versions
to determine whether an installed extension
needs to be updated.
If the published extension has a newer version string
than the installed extension,
then the extension is automatically updated.
</p>

<p>
The comparison starts with the leftmost integers.
If those integers are equal,
the integers to the right are compared,
and so on.
For example, 1.2.0 is a newer version than 1.1.9.9999.
</p>

<p>
A missing integer is equal to zero.
For example, 1.1.9.9999 is newer than 1.1.
</p>

<p>
For more information, see
<a href="autoupdate.html">Autoupdating</a>.
</p>

<!-- [PENDING: Possibly: point to the gallery and make a big deal of the fact that autoupdating is free if you use the gallery.] -->