| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 CHROME_BROWSER_EXTENSIONS_PERMISSIONS_UPDATER_H__ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_PERMISSIONS_UPDATER_H__ |
| 6 #define CHROME_BROWSER_EXTENSIONS_PERMISSIONS_UPDATER_H__ | 6 #define CHROME_BROWSER_EXTENSIONS_PERMISSIONS_UPDATER_H__ |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| 11 #include "base/macros.h" | 11 #include "base/macros.h" |
| 12 #include "extensions/browser/extension_event_histogram_value.h" | 12 #include "extensions/browser/extension_event_histogram_value.h" |
| 13 | 13 |
| 14 namespace base { | 14 namespace base { |
| 15 class DictionaryValue; | 15 class DictionaryValue; |
| 16 } | 16 } |
| 17 | 17 |
| 18 namespace content { | 18 namespace content { |
| 19 class BrowserContext; | 19 class BrowserContext; |
| 20 } | 20 } |
| 21 | 21 |
| 22 namespace extensions { | 22 namespace extensions { |
| 23 | 23 |
| 24 class Extension; | 24 class Extension; |
| 25 class ExtensionPrefs; | 25 class ExtensionPrefs; |
| 26 class PermissionSet; | 26 class PermissionSet; |
| 27 class URLPatternSet; |
| 27 | 28 |
| 28 // Updates an Extension's active and granted permissions in persistent storage | 29 // Updates an Extension's active and granted permissions in persistent storage |
| 29 // and notifies interested parties of the changes. | 30 // and notifies interested parties of the changes. |
| 30 class PermissionsUpdater { | 31 class PermissionsUpdater { |
| 31 public: | 32 public: |
| 32 enum InitFlag { | 33 enum InitFlag { |
| 33 INIT_FLAG_NONE = 0, | 34 INIT_FLAG_NONE = 0, |
| 34 INIT_FLAG_TRANSIENT = 1 << 0, | 35 INIT_FLAG_TRANSIENT = 1 << 0, |
| 35 }; | 36 }; |
| 36 | 37 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 62 void RemovePermissions(const Extension* extension, | 63 void RemovePermissions(const Extension* extension, |
| 63 const PermissionSet& permissions, | 64 const PermissionSet& permissions, |
| 64 RemoveType remove_type); | 65 RemoveType remove_type); |
| 65 | 66 |
| 66 // Removes the |permissions| from |extension| and makes no effort to determine | 67 // Removes the |permissions| from |extension| and makes no effort to determine |
| 67 // if doing so is safe in the slightlest. This method shouldn't be used, | 68 // if doing so is safe in the slightlest. This method shouldn't be used, |
| 68 // except for removing permissions totally blacklisted by management. | 69 // except for removing permissions totally blacklisted by management. |
| 69 void RemovePermissionsUnsafe(const Extension* extension, | 70 void RemovePermissionsUnsafe(const Extension* extension, |
| 70 const PermissionSet& permissions); | 71 const PermissionSet& permissions); |
| 71 | 72 |
| 73 // Sets list of hosts an extension may not interact with |
| 74 void SetRuntimeBlockedAllowedHosts( |
| 75 const Extension* extension, |
| 76 const URLPatternSet& runtime_blocked_hosts, |
| 77 const URLPatternSet& runtime_allowed_hosts); |
| 78 |
| 72 // Returns the set of revokable permissions. | 79 // Returns the set of revokable permissions. |
| 73 std::unique_ptr<const PermissionSet> GetRevokablePermissions( | 80 std::unique_ptr<const PermissionSet> GetRevokablePermissions( |
| 74 const Extension* extension) const; | 81 const Extension* extension) const; |
| 75 | 82 |
| 76 // Adds all permissions in the |extension|'s active permissions to its | 83 // Adds all permissions in the |extension|'s active permissions to its |
| 77 // granted permission set. | 84 // granted permission set. |
| 78 void GrantActivePermissions(const Extension* extension); | 85 void GrantActivePermissions(const Extension* extension); |
| 79 | 86 |
| 80 // Initializes the |extension|'s active permission set to include only | 87 // Initializes the |extension|'s active permission set to include only |
| 81 // permissions currently requested by the extension and all the permissions | 88 // permissions currently requested by the extension and all the permissions |
| (...skipping 22 matching lines...) Expand all Loading... |
| 104 | 111 |
| 105 // Issues the relevant events, messages and notifications when the | 112 // Issues the relevant events, messages and notifications when the |
| 106 // |extension|'s permissions have |changed| (|changed| is the delta). | 113 // |extension|'s permissions have |changed| (|changed| is the delta). |
| 107 // Specifically, this sends the EXTENSION_PERMISSIONS_UPDATED notification, | 114 // Specifically, this sends the EXTENSION_PERMISSIONS_UPDATED notification, |
| 108 // the ExtensionMsg_UpdatePermissions IPC message, and fires the | 115 // the ExtensionMsg_UpdatePermissions IPC message, and fires the |
| 109 // onAdded/onRemoved events in the extension. | 116 // onAdded/onRemoved events in the extension. |
| 110 void NotifyPermissionsUpdated(EventType event_type, | 117 void NotifyPermissionsUpdated(EventType event_type, |
| 111 const Extension* extension, | 118 const Extension* extension, |
| 112 const PermissionSet& changed); | 119 const PermissionSet& changed); |
| 113 | 120 |
| 121 // Issues the relevant events, messages and notifications when the |
| 122 // |extension|'s management policy have changed. |
| 123 // Specifically, this sends the EXTENSION_POLICY_UPDATED notification, |
| 124 // the ExtensionMsg_UpdatePolicy IPC message. |
| 125 void NotifyPolicyUpdated(const Extension* extension, |
| 126 const URLPatternSet& runtime_blocked_hosts, |
| 127 const URLPatternSet& runtime_allowed_hosts); |
| 128 |
| 114 // The associated BrowserContext. | 129 // The associated BrowserContext. |
| 115 content::BrowserContext* browser_context_; | 130 content::BrowserContext* browser_context_; |
| 116 | 131 |
| 117 // Initialization flag that determines whether prefs is consulted about the | 132 // Initialization flag that determines whether prefs is consulted about the |
| 118 // extension. Transient extensions should not have entries in prefs. | 133 // extension. Transient extensions should not have entries in prefs. |
| 119 InitFlag init_flag_; | 134 InitFlag init_flag_; |
| 120 | 135 |
| 121 DISALLOW_COPY_AND_ASSIGN(PermissionsUpdater); | 136 DISALLOW_COPY_AND_ASSIGN(PermissionsUpdater); |
| 122 }; | 137 }; |
| 123 | 138 |
| 124 } // namespace extensions | 139 } // namespace extensions |
| 125 | 140 |
| 126 #endif // CHROME_BROWSER_EXTENSIONS_PERMISSIONS_UPDATER_H__ | 141 #endif // CHROME_BROWSER_EXTENSIONS_PERMISSIONS_UPDATER_H__ |
| OLD | NEW |