OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_DATA_H_ | 5 #ifndef EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_DATA_H_ |
6 #define EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_DATA_H_ | 6 #define EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_DATA_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 29 matching lines...) Expand all Loading... |
40 class PolicyDelegate { | 40 class PolicyDelegate { |
41 public: | 41 public: |
42 virtual ~PolicyDelegate() {} | 42 virtual ~PolicyDelegate() {} |
43 | 43 |
44 // Returns false if script access should be blocked on this page. | 44 // Returns false if script access should be blocked on this page. |
45 // Otherwise, default policy should decide. | 45 // Otherwise, default policy should decide. |
46 virtual bool CanExecuteScriptOnPage(const Extension* extension, | 46 virtual bool CanExecuteScriptOnPage(const Extension* extension, |
47 const GURL& document_url, | 47 const GURL& document_url, |
48 const GURL& top_document_url, | 48 const GURL& top_document_url, |
49 int tab_id, | 49 int tab_id, |
50 const UserScript* script, | |
51 int process_id, | 50 int process_id, |
52 std::string* error) = 0; | 51 std::string* error) = 0; |
53 }; | 52 }; |
54 | 53 |
55 static void SetPolicyDelegate(PolicyDelegate* delegate); | 54 static void SetPolicyDelegate(PolicyDelegate* delegate); |
56 | 55 |
57 PermissionsData(const Extension* extension); | 56 PermissionsData(const Extension* extension); |
58 virtual ~PermissionsData(); | 57 virtual ~PermissionsData(); |
59 | 58 |
60 // Returns true if the |extension| can silently increase its permission level. | 59 // Returns true if the |extension| can silently increase its permission level. |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 PermissionMessages GetPermissionMessages() const; | 117 PermissionMessages GetPermissionMessages() const; |
119 | 118 |
120 // Returns the full list of permission messages that should display at install | 119 // Returns the full list of permission messages that should display at install |
121 // time as strings. | 120 // time as strings. |
122 std::vector<base::string16> GetPermissionMessageStrings() const; | 121 std::vector<base::string16> GetPermissionMessageStrings() const; |
123 | 122 |
124 // Returns the full list of permission details for messages that should | 123 // Returns the full list of permission details for messages that should |
125 // display at install time as strings. | 124 // display at install time as strings. |
126 std::vector<base::string16> GetPermissionMessageDetailsStrings() const; | 125 std::vector<base::string16> GetPermissionMessageDetailsStrings() const; |
127 | 126 |
128 // Returns true if the given |extension| can execute script on a page. If a | 127 // Returns true if the |extension| has permission to access and interact with |
129 // UserScript object is passed, permission to run that specific script is | 128 // the specified page, in order to do things like inject scripts or modify |
130 // checked (using its matches list). Otherwise, permission to execute script | 129 // the content. |
131 // programmatically is checked (using the extension's host permission). | 130 // If this returns false and |error| is non-NULL, |error| will be popualted |
132 // | 131 // with the reason the extension cannot access the page. |
133 // This method is also aware of certain special pages that extensions are | 132 bool CanAccessPage(const Extension* extension, |
134 // usually not allowed to run script on. | 133 const GURL& document_url, |
135 bool CanExecuteScriptOnPage(const Extension* extension, | 134 const GURL& top_document_url, |
136 const GURL& document_url, | 135 int tab_id, |
137 const GURL& top_document_url, | 136 int process_id, |
138 int tab_id, | 137 std::string* error) const; |
139 const UserScript* script, | 138 |
140 int process_id, | 139 // Returns true if the |extension| has permission to inject a content script |
141 std::string* error) const; | 140 // on the page. |
| 141 // If this returns false and |error| is non-NULL, |error| will be popualted |
| 142 // with the reason the extension cannot script the page. |
| 143 // NOTE: You almost certainly want to use CanAccessPage() instead of this |
| 144 // method. |
| 145 bool CanRunContentScriptOnPage(const Extension* extension, |
| 146 const GURL& document_url, |
| 147 const GURL& top_document_url, |
| 148 int tab_id, |
| 149 int process_id, |
| 150 std::string* error) const; |
142 | 151 |
143 // Returns true if extension is allowed to obtain the contents of a page as | 152 // Returns true if extension is allowed to obtain the contents of a page as |
144 // an image. Since a page may contain sensitive information, this is | 153 // an image. Since a page may contain sensitive information, this is |
145 // restricted to the extension's host permissions as well as the extension | 154 // restricted to the extension's host permissions as well as the extension |
146 // page itself. | 155 // page itself. |
147 bool CanCaptureVisiblePage(int tab_id, std::string* error) const; | 156 bool CanCaptureVisiblePage(int tab_id, std::string* error) const; |
148 | 157 |
149 // Returns true if the user should be alerted that the |extension| is running | 158 // Returns true if the user should be alerted that the |extension| is running |
150 // a script. If |tab_id| and |url| are included, this also considers tab- | 159 // a script. If |tab_id| and |url| are included, this also considers tab- |
151 // specific permissions. | 160 // specific permissions. |
(...skipping 22 matching lines...) Expand all Loading... |
174 scoped_refptr<const PermissionSet> GetTabSpecificPermissions( | 183 scoped_refptr<const PermissionSet> GetTabSpecificPermissions( |
175 int tab_id) const; | 184 int tab_id) const; |
176 | 185 |
177 // Returns true if the |extension| has tab-specific permission to operate on | 186 // Returns true if the |extension| has tab-specific permission to operate on |
178 // the tab specified by |tab_id| with the given |url|. | 187 // the tab specified by |tab_id| with the given |url|. |
179 // Note that if this returns false, it doesn't mean the extension can't run on | 188 // Note that if this returns false, it doesn't mean the extension can't run on |
180 // the given tab, only that it does not have tab-specific permission to do so. | 189 // the given tab, only that it does not have tab-specific permission to do so. |
181 bool HasTabSpecificPermissionToExecuteScript(int tab_id, | 190 bool HasTabSpecificPermissionToExecuteScript(int tab_id, |
182 const GURL& url) const; | 191 const GURL& url) const; |
183 | 192 |
| 193 // Returns true if the extension is permitted to run on the given page, |
| 194 // checking against |permitted_url_patterns| in addition to blocking special |
| 195 // sites (like the webstore or chrome:// urls). |
| 196 bool CanRunOnPage(const Extension* extension, |
| 197 const GURL& document_url, |
| 198 const GURL& top_document_url, |
| 199 int tab_id, |
| 200 int process_id, |
| 201 const URLPatternSet& permitted_url_patterns, |
| 202 std::string* error) const; |
| 203 |
184 // The associated extension's id. | 204 // The associated extension's id. |
185 std::string extension_id_; | 205 std::string extension_id_; |
186 | 206 |
187 // The associated extension's manifest type. | 207 // The associated extension's manifest type. |
188 Manifest::Type manifest_type_; | 208 Manifest::Type manifest_type_; |
189 | 209 |
190 mutable base::Lock runtime_lock_; | 210 mutable base::Lock runtime_lock_; |
191 | 211 |
192 // The permission's which are currently active on the extension during | 212 // The permission's which are currently active on the extension during |
193 // runtime. | 213 // runtime. |
194 // Unsafe indicates that we must lock anytime this is directly accessed. | 214 // Unsafe indicates that we must lock anytime this is directly accessed. |
195 // Unless you need to change |active_permissions_unsafe_|, use the (safe) | 215 // Unless you need to change |active_permissions_unsafe_|, use the (safe) |
196 // active_permissions() accessor. | 216 // active_permissions() accessor. |
197 mutable scoped_refptr<const PermissionSet> active_permissions_unsafe_; | 217 mutable scoped_refptr<const PermissionSet> active_permissions_unsafe_; |
198 | 218 |
199 mutable TabPermissionsMap tab_specific_permissions_; | 219 mutable TabPermissionsMap tab_specific_permissions_; |
200 | 220 |
201 DISALLOW_COPY_AND_ASSIGN(PermissionsData); | 221 DISALLOW_COPY_AND_ASSIGN(PermissionsData); |
202 }; | 222 }; |
203 | 223 |
204 } // namespace extensions | 224 } // namespace extensions |
205 | 225 |
206 #endif // EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_DATA_H_ | 226 #endif // EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_DATA_H_ |
OLD | NEW |