OLD | NEW |
1 <h1>Permission Warnings</h1> | 1 <h1>Permission Warnings</h1> |
2 | 2 |
3 | 3 |
4 <!-- | 4 <!-- |
5 NOTE: When this doc is updated, the online help should also be updated: | 5 NOTE: When this doc is updated, the online help should also be updated: |
6 http://www.google.com/support/chrome_webstore/bin/answer.py?hl=en&answer=186213 | 6 http://www.google.com/support/chrome_webstore/bin/answer.py?hl=en&answer=186213 |
7 | 7 |
8 We should periodically look at | 8 We should periodically look at |
9 http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/generated_resources.g
rd?view=markup | 9 http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/generated_resources.g
rd?view=markup |
10 to make sure that we're covering all messages. Search for | 10 to make sure that we're covering all messages. Search for |
11 IDS_EXTENSION_PROMPT_WARNING | 11 IDS_EXTENSION_PROMPT_WARNING |
12 (e.g. IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY). | 12 (e.g. IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY). |
13 --> | 13 --> |
14 | 14 |
15 <p> | 15 <p> |
16 To use most chrome.* APIs and extension capabilities, | 16 To use most chrome.* APIs and extension capabilities, |
17 your extension must declare its intent in the | 17 your extension must declare its intent in the |
18 <a href="manifest.html">manifest</a>, | 18 <a href="manifest">manifest</a>, |
19 often in the "permissions" field. | 19 often in the "permissions" field. |
20 Some of these declarations | 20 Some of these declarations |
21 result in a warning when | 21 result in a warning when |
22 a user installs your extension. | 22 a user installs your extension. |
23 </p> | 23 </p> |
24 | 24 |
25 <p> | 25 <p> |
26 When you autoupdate your extension, | 26 When you autoupdate your extension, |
27 the user might see another warning | 27 the user might see another warning |
28 if the extension requests new permissions. | 28 if the extension requests new permissions. |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 <tr> | 143 <tr> |
144 <td style="font-weight:bold"> | 144 <td style="font-weight:bold"> |
145 <!-- IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS --> | 145 <!-- IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS --> |
146 Access all data on your computer and the websites you visit | 146 Access all data on your computer and the websites you visit |
147 </td> | 147 </td> |
148 <td> | 148 <td> |
149 "plugins" | 149 "plugins" |
150 </td> | 150 </td> |
151 <td> | 151 <td> |
152 The "plugins" permission is required by | 152 The "plugins" permission is required by |
153 <a href="npapi.html">NPAPI plugins</a>. | 153 <a href="npapi">NPAPI plugins</a>. |
154 </td> | 154 </td> |
155 </tr> | 155 </tr> |
156 | 156 |
157 <tr> | 157 <tr> |
158 <td style="font-weight:bold"> | 158 <td style="font-weight:bold"> |
159 <!-- IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS --> | 159 <!-- IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS --> |
160 Read and modify your bookmarks | 160 Read and modify your bookmarks |
161 </td> | 161 </td> |
162 <td> | 162 <td> |
163 "bookmarks" permission | 163 "bookmarks" permission |
164 </td> | 164 </td> |
165 <td> | 165 <td> |
166 The "bookmarks" permission is required by the | 166 The "bookmarks" permission is required by the |
167 <a href="bookmarks.html"><code>chrome.bookmarks</code></a> module. | 167 <a href="bookmarks"><code>chrome.bookmarks</code></a> module. |
168 </td> | 168 </td> |
169 </tr> | 169 </tr> |
170 | 170 |
171 <tr> | 171 <tr> |
172 <td style="font-weight:bold"> | 172 <td style="font-weight:bold"> |
173 <!-- IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY --> | 173 <!-- IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY --> |
174 Read and modify your browsing history | 174 Read and modify your browsing history |
175 </td> | 175 </td> |
176 <td> | 176 <td> |
177 <!-- HasEffectiveBrowsingHistoryPermission --> | 177 <!-- HasEffectiveBrowsingHistoryPermission --> |
178 Any of the following: | 178 Any of the following: |
179 <ul> | 179 <ul> |
180 <li> "history" permission </li> | 180 <li> "history" permission </li> |
181 <li> "topSites" permission </li> | 181 <li> "topSites" permission </li> |
182 </ul> | 182 </ul> |
183 </td> | 183 </td> |
184 <td> | 184 <td> |
185 <p> | 185 <p> |
186 The "history" permission is required by | 186 The "history" permission is required by |
187 <a href="history.html"><code>chrome.history</code></a>. | 187 <a href="history"><code>chrome.history</code></a>. |
188 </p> | 188 </p> |
189 <p> | 189 <p> |
190 The "topSites" permission is required by | 190 The "topSites" permission is required by |
191 <a href="topSites.html"><code>chrome.topSites</code></a>. | 191 <a href="topSites"><code>chrome.topSites</code></a>. |
192 </p> | 192 </p> |
193 </td> | 193 </td> |
194 </tr> | 194 </tr> |
195 | 195 |
196 <tr> | 196 <tr> |
197 <td style="font-weight:bold"> | 197 <td style="font-weight:bold"> |
198 <!-- IDS_EXTENSION_PROMPT_WARNING_TABS --> | 198 <!-- IDS_EXTENSION_PROMPT_WARNING_TABS --> |
199 Access your tabs and browsing activity | 199 Access your tabs and browsing activity |
200 </td> | 200 </td> |
201 <td> | 201 <td> |
202 <!-- HasEffectiveBrowsingHistoryPermission --> | 202 <!-- HasEffectiveBrowsingHistoryPermission --> |
203 Any of the following: | 203 Any of the following: |
204 <ul> | 204 <ul> |
205 <li> "tabs" permission </li> | 205 <li> "tabs" permission </li> |
206 <li> "webNavigation" permission </li> | 206 <li> "webNavigation" permission </li> |
207 </ul> | 207 </ul> |
208 </td> | 208 </td> |
209 <td> | 209 <td> |
210 <p> | 210 <p> |
211 The "tabs" permission is required by the | 211 The "tabs" permission is required by the |
212 <a href="tabs.html"><code>chrome.tabs</code></a> and | 212 <a href="tabs"><code>chrome.tabs</code></a> and |
213 <a href="windows.html"><code>chrome.windows</code></a> modules. | 213 <a href="windows"><code>chrome.windows</code></a> modules. |
214 </p> | 214 </p> |
215 <p> | 215 <p> |
216 The "webNavigation" permission is required by the | 216 The "webNavigation" permission is required by the |
217 <a href="webNavigation.html"><code>chrome.webNavigation</code></a> module. | 217 <a href="webNavigation"><code>chrome.webNavigation</code></a> module. |
218 </p> | 218 </p> |
219 </td> | 219 </td> |
220 </tr> | 220 </tr> |
221 | 221 |
222 <tr> | 222 <tr> |
223 <td style="font-weight:bold"> | 223 <td style="font-weight:bold"> |
224 <!-- IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS --> | 224 <!-- IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS --> |
225 Manipulate settings that specify whether websites can use features such as c
ookies, JavaScript, and plug-ins | 225 Manipulate settings that specify whether websites can use features such as c
ookies, JavaScript, and plug-ins |
226 </td> | 226 </td> |
227 <td> | 227 <td> |
228 <!-- HasEffectiveBrowsingHistoryPermission --> | 228 <!-- HasEffectiveBrowsingHistoryPermission --> |
229 "contentSettings" permission | 229 "contentSettings" permission |
230 </td> | 230 </td> |
231 <td> | 231 <td> |
232 <p> | 232 <p> |
233 The "contentSettings" permission is required by | 233 The "contentSettings" permission is required by |
234 <a href="contentSettings.html"><code>chrome.contentSettings</code></a>. | 234 <a href="contentSettings"><code>chrome.contentSettings</code></a>. |
235 </p> | 235 </p> |
236 </td> | 236 </td> |
237 </tr> | 237 </tr> |
238 | 238 |
239 <tr> | 239 <tr> |
240 <td style="font-weight:bold"> | 240 <td style="font-weight:bold"> |
241 <!-- IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS --> | 241 <!-- IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS --> |
242 Access your data on all websites | 242 Access your data on all websites |
243 </td> | 243 </td> |
244 <td> | 244 <td> |
245 <!-- HasEffectiveAccessToAllHosts() --> | 245 <!-- HasEffectiveAccessToAllHosts() --> |
246 Any of the following: | 246 Any of the following: |
247 <ul> | 247 <ul> |
248 <li> "debugger" permission </li> | 248 <li> "debugger" permission </li> |
249 <li> "pageCapture" permission </li> | 249 <li> "pageCapture" permission </li> |
250 <li> "proxy" permission </li> | 250 <li> "proxy" permission </li> |
251 <li> A match pattern in the "permissions" field | 251 <li> A match pattern in the "permissions" field |
252 that matches all hosts </li> | 252 that matches all hosts </li> |
253 <li> A "content_scripts" field with a "matches" entry | 253 <li> A "content_scripts" field with a "matches" entry |
254 that matches all hosts </li> | 254 that matches all hosts </li> |
255 <li> "devtools_page" </li> | 255 <li> "devtools_page" </li> |
256 </ul> | 256 </ul> |
257 </td> | 257 </td> |
258 <td> | 258 <td> |
259 <p> | 259 <p> |
260 The "debugger" permission is required by the | 260 The "debugger" permission is required by the |
261 <a href="debugger.html">debugger</a> module. | 261 <a href="debugger">debugger</a> module. |
262 </p> | 262 </p> |
263 | 263 |
264 <p> | 264 <p> |
265 The "proxy" permission is required by the | 265 The "proxy" permission is required by the |
266 <a href="proxy.html"><code>chrome.proxy</code></a> module. | 266 <a href="proxy"><code>chrome.proxy</code></a> module. |
267 </p> | 267 </p> |
268 | 268 |
269 <p> | 269 <p> |
270 Any of the following URLs match all hosts: | 270 Any of the following URLs match all hosts: |
271 </p> | 271 </p> |
272 <ul> | 272 <ul> |
273 <li> <code>http://*/*</code> </li> | 273 <li> <code>http://*/*</code> </li> |
274 <li> <code>https://*/*</code> </li> | 274 <li> <code>https://*/*</code> </li> |
275 <li> <code>*://*/*</code> </li> | 275 <li> <code>*://*/*</code> </li> |
276 <li> <code><all_urls></code> </li> | 276 <li> <code><all_urls></code> </li> |
277 </ul> | 277 </ul> |
278 <strong>Note that you may be able to avoid declaring all host permissions us
ing the <code><a href="activeTab.html">activeTab</a></code> permission.</strong> | 278 <strong>Note that you may be able to avoid declaring all host permissions us
ing the <code><a href="activeTab">activeTab</a></code> permission.</strong> |
279 </td> | 279 </td> |
280 </tr> | 280 </tr> |
281 <tr> | 281 <tr> |
282 <td style="font-weight:bold"> | 282 <td style="font-weight:bold"> |
283 <!-- IDS_EXTENSION_PROMPT_WARNING_?_HOST --> | 283 <!-- IDS_EXTENSION_PROMPT_WARNING_?_HOST --> |
284 <!-- IDS_EXTENSION_PROMPT_WARNING_4_OR_MORE_HOSTS --> | 284 <!-- IDS_EXTENSION_PROMPT_WARNING_4_OR_MORE_HOSTS --> |
285 Access your data on <em>{list of websites}</em> | 285 Access your data on <em>{list of websites}</em> |
286 </td> | 286 </td> |
287 <td> | 287 <td> |
288 A match pattern in the "permissions" field | 288 A match pattern in the "permissions" field |
(...skipping 26 matching lines...) Expand all Loading... |
315 <tr> | 315 <tr> |
316 <td style="font-weight:bold"> | 316 <td style="font-weight:bold"> |
317 <!-- IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT --> | 317 <!-- IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT --> |
318 Manage your apps, extensions, and themes | 318 Manage your apps, extensions, and themes |
319 </td> | 319 </td> |
320 <td> | 320 <td> |
321 "management" permission | 321 "management" permission |
322 </td> | 322 </td> |
323 <td> | 323 <td> |
324 The "management" permission is required by the | 324 The "management" permission is required by the |
325 <a href="management.html"><code>chrome.management</code></a> module. | 325 <a href="management"><code>chrome.management</code></a> module. |
326 </td> | 326 </td> |
327 </tr> | 327 </tr> |
328 | 328 |
329 <tr> | 329 <tr> |
330 <td style="font-weight:bold"> | 330 <td style="font-weight:bold"> |
331 <!-- IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION --> | 331 <!-- IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION --> |
332 Detect your physical location | 332 Detect your physical location |
333 </td> | 333 </td> |
334 <td> | 334 <td> |
335 "geolocation" permission | 335 "geolocation" permission |
(...skipping 26 matching lines...) Expand all Loading... |
362 <tr> | 362 <tr> |
363 <td style="font-weight:bold"> | 363 <td style="font-weight:bold"> |
364 <!-- IDS_EXTENSION_PROMPT_WARNING_PRIVACY--> | 364 <!-- IDS_EXTENSION_PROMPT_WARNING_PRIVACY--> |
365 Manipulate privacy-related settings | 365 Manipulate privacy-related settings |
366 </td> | 366 </td> |
367 <td> | 367 <td> |
368 "privacy" permission | 368 "privacy" permission |
369 </td> | 369 </td> |
370 <td> | 370 <td> |
371 The "privacy" permission is required by the | 371 The "privacy" permission is required by the |
372 <a href="privacy.html"><code>chrome.privacy</code></a> module. | 372 <a href="privacy"><code>chrome.privacy</code></a> module. |
373 </td> | 373 </td> |
374 </tr> | 374 </tr> |
375 | 375 |
376 <tr> | 376 <tr> |
377 <td style="font-weight:bold"> | 377 <td style="font-weight:bold"> |
378 <!-- IDS_EXTENSION_PROMPT_WARNING_SIGNED_IN_DEVICES--> | 378 <!-- IDS_EXTENSION_PROMPT_WARNING_SIGNED_IN_DEVICES--> |
379 Access the list of your signed-in devices | 379 Access the list of your signed-in devices |
380 </td> | 380 </td> |
381 <td> | 381 <td> |
382 "signedInDevices" permission | 382 "signedInDevices" permission |
383 </td> | 383 </td> |
384 <td> | 384 <td> |
385 The "signedInDevices" permission is required by the | 385 The "signedInDevices" permission is required by the |
386 <a href="signedInDevices.html"><code>chrome.signedInDevices</code></a> | 386 <a href="signedInDevices"><code>chrome.signedInDevices</code></a> |
387 module. | 387 module. |
388 </td> | 388 </td> |
389 </tr> | 389 </tr> |
390 | 390 |
391 <tr> | 391 <tr> |
392 <td style="font-weight:bold"> | 392 <td style="font-weight:bold"> |
393 <!-- IDS_EXTENSION_PROMPT_WARNING_TTS_ENGINE--> | 393 <!-- IDS_EXTENSION_PROMPT_WARNING_TTS_ENGINE--> |
394 Access all text spoken using synthesized speech | 394 Access all text spoken using synthesized speech |
395 </td> | 395 </td> |
396 <td> | 396 <td> |
397 "ttsEngine" permission | 397 "ttsEngine" permission |
398 </td> | 398 </td> |
399 <td> | 399 <td> |
400 The "ttsEngine" permission is required by the | 400 The "ttsEngine" permission is required by the |
401 <a href="ttsEngine.html"><code>chrome.ttsEngine</code></a> module. | 401 <a href="ttsEngine"><code>chrome.ttsEngine</code></a> module. |
402 </td> | 402 </td> |
403 </tr> | 403 </tr> |
404 </table> | 404 </table> |
405 </p> | 405 </p> |
406 | 406 |
407 | 407 |
408 <h2 id="nowarning"> Permissions that don't cause warnings </h2> | 408 <h2 id="nowarning"> Permissions that don't cause warnings </h2> |
409 | 409 |
410 <p> | 410 <p> |
411 The following permissions don't result in a warning: | 411 The following permissions don't result in a warning: |
(...skipping 21 matching lines...) Expand all Loading... |
433 <li>"storage"</li> | 433 <li>"storage"</li> |
434 <li>"unlimitedStorage"</li> | 434 <li>"unlimitedStorage"</li> |
435 <li>"webRequest"</li> | 435 <li>"webRequest"</li> |
436 <li>"webRequestBlocking"</li> | 436 <li>"webRequestBlocking"</li> |
437 </ul> | 437 </ul> |
438 | 438 |
439 <h2 id="test"> Testing permission warnings </h2> | 439 <h2 id="test"> Testing permission warnings </h2> |
440 | 440 |
441 <p> | 441 <p> |
442 If you'd like to see exactly which warnings your users will get, | 442 If you'd like to see exactly which warnings your users will get, |
443 <a href="packaging.html">package your extension</a> | 443 <a href="packaging">package your extension</a> |
444 into a <code>.crx</code> file, | 444 into a <code>.crx</code> file, |
445 and install it. | 445 and install it. |
446 </p> | 446 </p> |
447 | 447 |
448 <p> | 448 <p> |
449 To see the warnings users will get when your extension is autoupdated, | 449 To see the warnings users will get when your extension is autoupdated, |
450 you can go to a little more trouble | 450 you can go to a little more trouble |
451 and set up an autoupdate server. | 451 and set up an autoupdate server. |
452 To do this, first create an update manifest | 452 To do this, first create an update manifest |
453 and point to it from your extension, | 453 and point to it from your extension, |
454 using the "update_url" key | 454 using the "update_url" key |
455 (see <a href="autoupdate.html">Autoupdating</a>). | 455 (see <a href="autoupdate">Autoupdating</a>). |
456 Next, <a href="packaging.html">package the extension</a> | 456 Next, <a href="packaging">package the extension</a> |
457 into a new <code>.crx</code> file, | 457 into a new <code>.crx</code> file, |
458 and install the app from this <code>.crx</code> file. | 458 and install the app from this <code>.crx</code> file. |
459 Now, change the extension's manifest to contain the new permissions, | 459 Now, change the extension's manifest to contain the new permissions, |
460 and <a href="packaging.html#update">repackage the extension</a>. | 460 and <a href="packaging#update">repackage the extension</a>. |
461 Finally, update the extension | 461 Finally, update the extension |
462 (and all other extensions that have outstanding updates) | 462 (and all other extensions that have outstanding updates) |
463 by clicking the <b>chrome://extensions</b> page's | 463 by clicking the <b>chrome://extensions</b> page's |
464 <b>Update extensions now</b> button. | 464 <b>Update extensions now</b> button. |
465 </p> | 465 </p> |
466 | 466 |
467 <h2 id="api">API</h2> | 467 <h2 id="api">API</h2> |
468 | 468 |
469 <p> | 469 <p> |
470 You can get a list of permission warnings for any manifest with | 470 You can get a list of permission warnings for any manifest with |
471 $(ref:management.getPermissionWarningsByManifest). | 471 $(ref:management.getPermissionWarningsByManifest). |
472 </p> | 472 </p> |
OLD | NEW |