Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(515)

Side by Side Diff: chrome/common/extensions/docs/server2/templates/intros/permissions.html

Issue 10832042: Extensions Docs Server: Doc conversion script (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: everything but svn stuff Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 <!-- BEGIN AUTHORED CONTENT -->
2 <p id="classSummary"> 1 <p id="classSummary">
3 Use the <code>chrome.permissions</code> module to implement 2 Use the <code>chrome.permissions</code> module to implement
4 optional permissions. You can request optional permissions during your 3 optional permissions. You can request optional permissions during your
5 extension's regular application flow rather than at install time, so users 4 extension's regular application flow rather than at install time, so users
6 understand why the permissions are needed and use only those that are 5 understand why the permissions are needed and use only those that are
7 necessary. 6 necessary.
8 </p> 7 </p>
8
9 <p> 9 <p>
10 For general information about permissions and details about each permission, 10 For general information about permissions and details about each permission,
11 see the <a href="manifest.html#permissions">permissions</a> section of the 11 see the <a href="manifest.html#permissions">permissions</a> section of the
12 manifest documentation. 12 manifest documentation.
13 </p> 13 </p>
14
14 <h2 id="howto"> Implementing optional permissions </h2> 15 <h2 id="howto"> Implementing optional permissions </h2>
15 16
16 <h3 id="types"> Step 1: Decide which permissions are optional and required </h3> 17 <h3 id="types">
18 Step 1: Decide which permissions are optional and required
19 </h3>
17 <p> 20 <p>
18 Extensions should generally require permissions when they are needed for the 21 Extensions should generally require permissions when they are needed for the
19 extension's basic functionality and employ optional permissions for optional 22 extension's basic functionality and employ optional permissions for optional
20 features. 23 features.
21 </p> 24 </p>
25
22 <p> 26 <p>
23 Advantages of optional permissions: 27 Advantages of optional permissions:
24 <ul> 28 <ul>
25 <li> 29 <li>
26 Users run with less permissions since they enable only what is needed. 30 Users run with less permissions since they enable only what is needed.
27 </li> 31 </li>
28 <li> 32 <li>
29 The extension can help explain why it needs particular permissions by 33 The extension can help explain why it needs particular permissions by
30 requesting them when the user enables the relevant feature. 34 requesting them when the user enables the relevant feature.
31 </li> 35 </li>
32 <li> 36 <li>
33 Chrome can avoid disabling extensions that upgrade if they add permissions 37 Chrome can avoid disabling extensions that upgrade if they add permissions
34 as optional rather than required. 38 as optional rather than required.
35 </li> 39 </li>
36 </ul> 40 </ul>
37 </p> 41 </p>
42
38 <p> 43 <p>
39 Advantages of required permissions: 44 Advantages of required permissions:
40 <ul> 45 <ul>
41 <li> 46 <li>
42 The extension can prompt the user once to accept all permissions. 47 The extension can prompt the user once to accept all permissions.
43 </li> 48 </li>
44 <li> 49 <li>
45 They simplify extension development by guaranteeing which permissions are 50 They simplify extension development by guaranteeing which permissions are
46 present. 51 present.
47 </li> 52 </li>
48 </ul> 53 </ul>
49 </p> 54 </p>
55
56
50 <h3 id="manifest"> Step 2: Declare optional permissions in the manifest </h3> 57 <h3 id="manifest"> Step 2: Declare optional permissions in the manifest </h3>
51 <p> 58 <p>
52 Declare optional permissions in your <a href="manifest.html">extension 59 Declare optional permissions in your <a href="manifest.html">extension
53 manifest</a> with the <code>optional_permissions</code> key, using the 60 manifest</a> with the <code>optional_permissions</code> key, using the
54 same format as the <a href="manifest.html#permissions">permissions</a> 61 same format as the <a href="manifest.html#permissions">permissions</a>
55 field: 62 field:
63
56 <pre>{ 64 <pre>{
57 "name": "My extension", 65 "name": "My extension",
58 ... 66 ...
59 <b>"optional_permissions": [ "tabs", "http://www.google.com/" ],</b> 67 <b>"optional_permissions": [ "tabs", "http://www.google.com/" ],</b>
60 ... 68 ...
61 }</pre> 69 }</pre>
62 </p> 70 </p>
71
63 <p> 72 <p>
64 You can specify any of the following as optional permissions: 73 You can specify any of the following as optional permissions:
65 <ul> 74 <ul>
66 <li><i>host permissions</i></li> 75 <li><i>host permissions</i></li>
67 <li>appNotifications</li> 76 <li>appNotifications</li>
68 <li>background</li> 77 <li>background</li>
69 <li>bookmarks</li> 78 <li>bookmarks</li>
70 <li>clipboardRead</li> 79 <li>clipboardRead</li>
71 <li>clipboardWrite</li> 80 <li>clipboardWrite</li>
72 <li>contentSettings</li> 81 <li>contentSettings</li>
73 <li>contextMenus</li> 82 <li>contextMenus</li>
74 <li>cookies</li> 83 <li>cookies</li>
75 <li>debugger</li> 84 <li>debugger</li>
76 <li>history</li> 85 <li>history</li>
77 <li>idle</li> 86 <li>idle</li>
78 <li>management</li> 87 <li>management</li>
79 <li>notifications</li> 88 <li>notifications</li>
80 <li>pageCapture</li> 89 <li>pageCapture</li>
81 <li>tabs</li> 90 <li>tabs</li>
82 <li>topSites</li> 91 <li>topSites</li>
83 <li>webNavigation</li> 92 <li>webNavigation</li>
84 <li>webRequest</li> 93 <li>webRequest</li>
85 <li>webRequestBlocking</li> 94 <li>webRequestBlocking</li>
86 </ul> 95 </ul>
87 </p> 96 </p>
97
88 <p class="note"> 98 <p class="note">
89 <b>Version note:</b> This list is correct as of Chrome 17. 99 <b>Version note:</b> This list is correct as of Chrome 17.
90 More optional permissions might be allowed in future releases. 100 More optional permissions might be allowed in future releases.
91 </p> 101 </p>
102
92 <h3 id="request"> Step 3: Request optional permissions </h3> 103 <h3 id="request"> Step 3: Request optional permissions </h3>
93 <p> 104 <p>
94 Request the permissions from within a user gesture using 105 Request the permissions from within a user gesture using
95 <code>permissions.request()</code>: 106 <code>permissions.request()</code>:
96 <pre> 107 <pre>
97 document.querySelector('#my-button').addEventListener('click', function(event) { 108 document.querySelector('#my-button').addEventListener('click', function(event) {
98 // Permissions must be requested from inside a user gesture, like a button's 109 // Permissions must be requested from inside a user gesture, like a button's
99 // click handler. 110 // click handler.
100 chrome.permissions.request({ 111 chrome.permissions.request({
101 permissions: ['tabs'], 112 permissions: ['tabs'],
102 origins: ['http://www.google.com/'] 113 origins: ['http://www.google.com/']
103 }, function(granted) { 114 }, function(granted) {
104 // The callback argument will be true if the user granted the permissions. 115 // The callback argument will be true if the user granted the permissions.
105 if (granted) { 116 if (granted) {
106 doSomething(); 117 doSomething();
107 } else { 118 } else {
108 doSomethingElse(); 119 doSomethingElse();
109 } 120 }
110 }); 121 });
111 }); 122 });
112 </pre> 123 </pre>
113 </p> 124 </p>
125
114 <p> 126 <p>
115 Chrome prompts the user if adding the permissions results in different 127 Chrome prompts the user if adding the permissions results in different
116 <a href="permission_warnings.html">warning messages</a> than the user has 128 <a href="permission_warnings.html">warning messages</a> than the user has
117 already seen and accepted. For example, the previous code might result in 129 already seen and accepted. For example, the previous code might result in
118 a prompt like this: 130 a prompt like this:
119 </p> 131 </p>
132
120 <p style="text-align: center"> 133 <p style="text-align: center">
121 <img src="{{static}}/images/perms-optional.png" 134 <img src="{{static}}/images/perms-optional.png"
122 alt="example permission confirmation prompt" 135 alt="example permission confirmation prompt"
123 width="416" height="234"> 136 width="416" height="234">
124 </p> 137 </p>
138
125 <h3 id="contains"> Step 4: Check the extension's current permissions </h3> 139 <h3 id="contains"> Step 4: Check the extension's current permissions </h3>
126 <p> 140 <p>
127 To check whether your extension has a specific permission or set of 141 To check whether your extension has a specific permission or set of
128 permissions, use <code>permission.contains()</code>: 142 permissions, use <code>permission.contains()</code>:
129 </p> 143 </p>
144
130 <pre> 145 <pre>
131 chrome.permissions.contains({ 146 chrome.permissions.contains({
132 permissions: ['tabs'], 147 permissions: ['tabs'],
133 origins: ['http://www.google.com/'] 148 origins: ['http://www.google.com/']
134 }, function(result) { 149 }, function(result) {
135 if (result) { 150 if (result) {
136 // The extension has the permissions. 151 // The extension has the permissions.
137 } else { 152 } else {
138 // The extension doesn't have the permissions. 153 // The extension doesn't have the permissions.
139 } 154 }
140 }); 155 });
141 </pre> 156 </pre>
157
142 <h3 id="remove"> Step 5: Remove the permissions </h3> 158 <h3 id="remove"> Step 5: Remove the permissions </h3>
143 <p> 159 <p>
144 You should remove permissions when you no longer need them. 160 You should remove permissions when you no longer need them.
145 After a permission has been removed, calling 161 After a permission has been removed, calling
146 <code>permissions.request()</code> usually adds the permission back without 162 <code>permissions.request()</code> usually adds the permission back without
147 prompting the user. 163 prompting the user.
148 </p> 164 </p>
165
149 <pre> 166 <pre>
150 chrome.permissions.remove({ 167 chrome.permissions.remove({
151 permissions: ['tabs'], 168 permissions: ['tabs'],
152 origins: ['http://www.google.com/'] 169 origins: ['http://www.google.com/']
153 }, function(removed) { 170 }, function(removed) {
154 if (removed) { 171 if (removed) {
155 // The permissions have been removed. 172 // The permissions have been removed.
156 } else { 173 } else {
157 // The permissions have not been removed (e.g., you tried to remove 174 // The permissions have not been removed (e.g., you tried to remove
158 // required permissions). 175 // required permissions).
159 } 176 }
160 }); 177 });
161 </pre> 178 </pre>
162 <!-- END AUTHORED CONTENT -->
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698