Index: chrome/common/extensions/docs/server2/templates/articles/permission_warnings.html |
diff --git a/chrome/common/extensions/docs/server2/templates/articles/permission_warnings.html b/chrome/common/extensions/docs/server2/templates/articles/permission_warnings.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..92dea50230c4d570a5538375213f197640edeb2e |
--- /dev/null |
+++ b/chrome/common/extensions/docs/server2/templates/articles/permission_warnings.html |
@@ -0,0 +1,449 @@ |
+<h1>Permission Warnings</h1> |
+ |
+ |
+<!-- |
+NOTE: When this doc is updated, the online help should also be updated: |
+http://www.google.com/support/chrome_webstore/bin/answer.py?hl=en&answer=186213 |
+ |
+We should periodically look at |
+http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/generated_resources.grd?view=markup |
+to make sure that we're covering all messages. Search for |
+IDS_EXTENSION_PROMPT_WARNING |
+(e.g. IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY). |
+--> |
+ |
+<p> |
+To use most chrome.* APIs and extension capabilities, |
+your extension must declare its intent in the |
+<a href="manifest.html">manifest</a>, |
+often in the "permissions" field. |
+Some of these declarations |
+result in a warning when |
+a user installs your extension. |
+</p> |
+ |
+<p> |
+When you autoupdate your extension, |
+the user might see another warning |
+if the extension requests new permissions. |
+These new permissions might be new APIs that your extension uses, |
+or they might be new websites |
+that your extension needs access to. |
+</p> |
+ |
+ |
+<h2 id="examples"> Examples of permission warnings </h2> |
+ |
+<p> |
+Here's a typical dialog |
+that a user might see when installing an extension: |
+</p> |
+ |
+<img src="{{static}}/images/perms-hw1.png" |
+ width="410" height="193" |
+ alt="Permission warning: 'It can: Access your data on api.flickr.com'" |
+ /> |
+ |
+<p> |
+The warning about access to data on api.flickr.com |
+is caused by the following lines |
+in the extension's manifest: |
+</p> |
+ |
+<pre> |
+"permissions": [ |
+ <b>"http://api.flickr.com/"</b> |
+], |
+</pre> |
+ |
+<p class="note"> |
+<b>Note:</b> |
+You don't see permission warnings when |
+you load an unpacked extension. |
+You get permission warnings only when you install an extension |
+from a <code>.crx</code> file. |
+</p> |
+ |
+<p> |
+If you add a permission to the extension when you autoupdate it, |
+the user might see a new permission warning. |
+For example, |
+assume you add a new site and the "tabs" permission |
+to the previous example: |
+</p> |
+ |
+<pre> |
+"permissions": [ |
+ "http://api.flickr.com/", |
+ <b>"http://*.flickr.com/", |
+ "tabs"</b> |
+], |
+</pre> |
+ |
+<p> |
+When the extension autoupdates, |
+the increased permissions |
+cause the extension to be disabled |
+until the user re-enables it. |
+Here's the warning the user sees: |
+</p> |
+ |
+<img src="{{static}}/images/perms-hw2-disabled.png" |
+ width="814" height="30" |
+ alt="Warning text: 'The newest version of the extension Hello World requires more permissions, so it has been disabled. [Re-enable].'" |
+ /> |
+ |
+<p> |
+Clicking the Re-enable button |
+brings up the following warning: |
+</p> |
+ |
+<img src="{{static}}/images/perms-hw2.png" |
+ width="412" height="220" |
+ alt="Permission warning: 'It can: Access your data on api.flickr.com and flickr.com; Read and modify your browsing history'" |
+ /> |
+ |
+ |
+<h2 id="warnings"> Warnings and their triggers </h2> |
+ |
+<p> |
+It can be surprising when adding a permission such as "tabs" |
+results in the seemingly unrelated warning |
+that the extension can access your browsing activity. |
+The reason for the warning is that |
+although the <code>chrome.tabs</code> API |
+might be used only to open new tabs, |
+it can also be used to see the URL that's associated |
+with every newly opened tab |
+(using their <a href="tabs.html#type-tabs.Tab">Tab</a> objects). |
+</p> |
+ |
+<p class="note"> |
+<b>Note:</b> |
+As of Google Chrome 7, |
+you no longer need to specify the "tabs" permission |
+just to call <code>chrome.tabs.create()</code> |
+or <code>chrome.tabs.update()</code>. |
+</p> |
+ |
+<p> |
+The following table lists the warning messages |
+that users can see, |
+along with the manifest entries |
+that trigger them. |
+</p> |
+ |
+<p> |
+<table> |
+<tr> |
+ <th>Warning message</th> <th>Manifest entry that causes it</th> <th>Notes</th> |
+</tr> |
+ |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS --> |
+ Access all data on your computer and the websites you visit |
+ </td> |
+ <td> |
+ "plugins" |
+ </td> |
+ <td> |
+ The "plugins" permission is required by |
+ <a href="npapi.html">NPAPI plugins</a>. |
+ </td> |
+</tr> |
+ |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS --> |
+ Read and modify your bookmarks |
+ </td> |
+ <td> |
+ "bookmarks" permission |
+ </td> |
+ <td> |
+ The "bookmarks" permission is required by the |
+ <a href="bookmarks.html"><code>chrome.bookmarks</code></a> module. |
+ </td> |
+</tr> |
+ |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY --> |
+ Read and modify your browsing history |
+ </td> |
+ <td> |
+ <!-- HasEffectiveBrowsingHistoryPermission --> |
+ "history" permission |
+ </td> |
+ <td> |
+ <p> |
+ The "history" permission is required by |
+ <a href="history.html"><code>chrome.history</code></a>. |
+ </p> |
+ </td> |
+</tr> |
+ |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_TABS --> |
+ Access your tabs and browsing activity |
+ </td> |
+ <td> |
+ <!-- HasEffectiveBrowsingHistoryPermission --> |
+ Any of the following: |
+ <ul> |
+ <li> "tabs" permission </li> |
+ <li> "webNavigation" permission </li> |
+ </ul> |
+ </td> |
+ <td> |
+ <p> |
+ The "tabs" permission is required by the |
+ <a href="tabs.html"><code>chrome.tabs</code></a> and |
+ <a href="windows.html"><code>chrome.windows</code></a> modules. |
+ </p> |
+ <p> |
+ The "webNavigation" permission is required by the |
+ <a href="webNavigation.html"><code>chrome.webNavigation</code></a> module. |
+ </p> |
+ </td> |
+</tr> |
+ |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS --> |
+ Manipulate settings that specify whether websites can use features such as cookies, JavaScript, and plug-ins |
+ </td> |
+ <td> |
+ <!-- HasEffectiveBrowsingHistoryPermission --> |
+ "contentSettings" permission |
+ </td> |
+ <td> |
+ <p> |
+ The "contentSettings" permission is required by |
+ <a href="contentSettings.html"><code>chrome.contentSettings</code></a>. |
+ </p> |
+ </td> |
+</tr> |
+ |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS --> |
+ Access your data on all websites |
+ </td> |
+ <td> |
+ <!-- HasEffectiveAccessToAllHosts() --> |
+ Any of the following: |
+ <ul> |
+ <li> "debugger" permission </li> |
+ <li> "proxy" permission </li> |
+ <li> A match pattern in the "permissions" field |
+ that matches all hosts </li> |
+ <li> A "content_scripts" field with a "matches" entry |
+ that matches all hosts </li> |
+ <li> "devtools_page" </li> |
+ </ul> |
+ </td> |
+ <td> |
+ <p> |
+ The "debugger" permission is required by the experimental |
+ <a href="experimental.debugger.html">debugger</a> module. |
+ </p> |
+ |
+ <p> |
+ The "proxy" permission is required by the |
+ <a href="proxy.html"><code>chrome.proxy</code></a> module. |
+ </p> |
+ |
+ <p> |
+ Any of the following URLs match all hosts: |
+ </p> |
+ <ul> |
+ <li> <code>http://*/*</code> </li> |
+ <li> <code>https://*/*</code> </li> |
+ <li> <code>*://*/*</code> </li> |
+ <li> <code><all_urls></code> </li> |
+ </ul> |
+ </td> |
+</tr> |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_?_HOST --> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_4_OR_MORE_HOSTS --> |
+ Access your data on <em>{list of websites}</em> |
+ </td> |
+ <td> |
+ A match pattern in the "permissions" field |
+ that specifies one or more hosts, |
+ but not all hosts |
+ </td> |
+ <td> |
+ <p> |
+ Up to 3 sites are listed by name. |
+ Subdomains aren't treated specially. |
+ For example, <code>a.com</code> and <code>b.a.com</code> |
+ are listed as different sites. |
+ </p> |
+ |
+ <p> |
+ On autoupdate, |
+ the user sees a permission warning |
+ if the extension adds or changes sites. |
+ For example, going from <code>a.com,b.com</code> |
+ to <code>a.com,b.com,c.com</code> |
+ triggers a warning. |
+ Going from <code>b.a.com</code> |
+ to <code>a.com</code>, |
+ or vice versa, |
+ also triggers a warning. |
+ </p> |
+ </td> |
+</tr> |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_ALL_PAGES_CONTENT --> |
+ Access the content of pages you visit |
+ </td> |
+ <td> |
+ "pageCapture" permission |
+ </td> |
+ <td> |
+ The "pageCapture" permission is required by the |
+ <a href="pageCapture.html"><code>chrome.pageCapture</code></a> module. |
+ </td> |
+</tr> |
+ |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT --> |
+ Manage your apps, extensions, and themes |
+ </td> |
+ <td> |
+ "management" permission |
+ </td> |
+ <td> |
+ The "management" permission is required by the |
+ <a href="management.html"><code>chrome.management</code></a> module. |
+ </td> |
+</tr> |
+ |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION --> |
+ Detect your physical location |
+ </td> |
+ <td> |
+ "geolocation" permission |
+ </td> |
+ <td> |
+ Allows the extension to use the proposed HTML5 |
+ <a href="http://dev.w3.org/geo/api/spec-source.html">geolocation API</a> |
+ without prompting the user for permission. |
+ </td> |
+</tr> |
+ |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_CLIPBOARD--> |
+ Access data you copy and paste |
+ </td> |
+ <td> |
+ "clipboardRead" permission |
+ </td> |
+ <td> |
+ Allows the extension to use the following editing commands with |
+ <code>document.execCommand()</code>: |
+ <ul> |
+ <li> <code>"copy"</code> </li> |
+ <li> <code>"cut"</code> </li> |
+ </ul> |
+ </td> |
+</tr> |
+ |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_PRIVACY--> |
+ Manipulate privacy-related settings |
+ </td> |
+ <td> |
+ "privacy" permission |
+ </td> |
+ <td> |
+ The "privacy" permission is required by the |
+ <a href="privacy.html"><code>chrome.privacy</code></a> module. |
+ </td> |
+</tr> |
+ |
+<tr> |
+ <td style="font-weight:bold"> |
+ <!-- IDS_EXTENSION_PROMPT_WARNING_TTS_ENGINE--> |
+ Access all text spoken using synthesized speech |
+ </td> |
+ <td> |
+ "ttsEngine" permission |
+ </td> |
+ <td> |
+ The "ttsEngine" permission is required by the |
+ <a href="ttsEngine.html"><code>chrome.ttsEngine</code></a> module. |
+ </td> |
+</tr> |
+</table> |
+</p> |
+ |
+ |
+<h2 id="nowarning"> Permissions that don't cause warnings </h2> |
+ |
+<p> |
+The following permissions don't result in a warning: |
+</p> |
+ |
+<ul> |
+ <li>"browsingData"</li> |
+ <li>"chrome://favicon/"</li> |
+ <li>"clipboardWrite"</li> |
+ <li>"contextMenus"</li> |
+ <li>"cookies"</li> |
+ <li>"experimental"</li> |
+ <li>"idle"</li> |
+ <li>"notifications"</li> |
+ <li>"storage"</li> |
+ <li>"unlimitedStorage"</li> |
+ <li>"webRequest"</li> |
+ <li>"webRequestBlocking"</li> |
+</ul> |
+ |
+<h2 id="test"> Testing permission warnings </h2> |
+ |
+<p> |
+If you'd like to see exactly which warnings your users will get, |
+<a href="packaging.html">package your extension</a> |
+into a <code>.crx</code> file, |
+and install it. |
+</p> |
+ |
+<p> |
+To see the warnings users will get when your extension is autoupdated, |
+you can go to a little more trouble |
+and set up an autoupdate server. |
+To do this, first create an update manifest |
+and point to it from your extension, |
+using the "update_url" key |
+(see <a href="autoupdate.html">Autoupdating</a>). |
+Next, <a href="packaging.html">package the extension</a> |
+into a new <code>.crx</code> file, |
+and install the app from this <code>.crx</code> file. |
+Now, change the extension's manifest to contain the new permissions, |
+and <a href="packaging.html#update">repackage the extension</a>. |
+Finally, update the extension |
+(and all other extensions that have outstanding updates) |
+by clicking the <b>chrome://extensions</b> page's |
+<b>Update extensions now</b> button. |
+</p> |
+ |
+<h2 id="api">API</h2> |
+ |
+<p> |
+You can get a list of permission warnings for any manifest with |
+<a href="management.html#method-getPermissionWarnings">chrome.management.getPermissionWarnings()</a>. |
+</p> |