| 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 |
| 336 </td> | 336 </td> |
| 337 <td> | 337 <td> |
| 338 Allows the extension to use the proposed HTML5 | 338 Allows the extension to use the proposed HTML5 |
| 339 <a href="http://dev.w3.org/geo/api/spec-source.html">geolocation API</a> | 339 <a href="http://dev.w3.org/geo/api/spec-source">geolocation API</a> |
| 340 without prompting the user for permission. | 340 without prompting the user for permission. |
| 341 </td> | 341 </td> |
| 342 </tr> | 342 </tr> |
| 343 | 343 |
| 344 <tr> | 344 <tr> |
| 345 <td style="font-weight:bold"> | 345 <td style="font-weight:bold"> |
| 346 <!-- IDS_EXTENSION_PROMPT_WARNING_CLIPBOARD--> | 346 <!-- IDS_EXTENSION_PROMPT_WARNING_CLIPBOARD--> |
| 347 Access data you copy and paste | 347 Access data you copy and paste |
| 348 </td> | 348 </td> |
| 349 <td> | 349 <td> |
| (...skipping 12 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 |