| 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_EXTENSION_PREFS_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_PREFS_H_ |
| 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_PREFS_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_PREFS_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 // PrefValueStore::extension_prefs(), which this class populates and | 45 // PrefValueStore::extension_prefs(), which this class populates and |
| 46 // maintains as the underlying extensions change. | 46 // maintains as the underlying extensions change. |
| 47 class ExtensionPrefs : public ExtensionContentSettingsStore::Observer, | 47 class ExtensionPrefs : public ExtensionContentSettingsStore::Observer, |
| 48 public ExtensionScopedPrefs { | 48 public ExtensionScopedPrefs { |
| 49 public: | 49 public: |
| 50 // Key name for a preference that keeps track of per-extension settings. This | 50 // Key name for a preference that keeps track of per-extension settings. This |
| 51 // is a dictionary object read from the Preferences file, keyed off of | 51 // is a dictionary object read from the Preferences file, keyed off of |
| 52 // extension ids. | 52 // extension ids. |
| 53 static const char kExtensionsPref[]; | 53 static const char kExtensionsPref[]; |
| 54 | 54 |
| 55 typedef std::vector<linked_ptr<ExtensionInfo> > ExtensionsInfo; | 55 typedef std::vector<linked_ptr<extensions::ExtensionInfo> > ExtensionsInfo; |
| 56 | 56 |
| 57 // Vector containing identifiers for preferences. | 57 // Vector containing identifiers for preferences. |
| 58 typedef std::set<std::string> PrefKeySet; | 58 typedef std::set<std::string> PrefKeySet; |
| 59 | 59 |
| 60 // Vector containing identifiers for extensions. | 60 // Vector containing identifiers for extensions. |
| 61 typedef std::vector<std::string> ExtensionIdSet; | 61 typedef std::vector<std::string> ExtensionIdSet; |
| 62 | 62 |
| 63 // This enum is used for the launch type the user wants to use for an | 63 // This enum is used for the launch type the user wants to use for an |
| 64 // application. | 64 // application. |
| 65 // Do not remove items or re-order this enum as it is used in preferences | 65 // Do not remove items or re-order this enum as it is used in preferences |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 | 103 |
| 104 // Get the order that the browser actions appear in the toolbar. | 104 // Get the order that the browser actions appear in the toolbar. |
| 105 std::vector<std::string> GetToolbarOrder(); | 105 std::vector<std::string> GetToolbarOrder(); |
| 106 | 106 |
| 107 // Set the order that the browser actions appear in the toolbar. | 107 // Set the order that the browser actions appear in the toolbar. |
| 108 void SetToolbarOrder(const std::vector<std::string>& extension_ids); | 108 void SetToolbarOrder(const std::vector<std::string>& extension_ids); |
| 109 | 109 |
| 110 // Called when an extension is installed, so that prefs get created. | 110 // Called when an extension is installed, so that prefs get created. |
| 111 // If |page_ordinal| is an invalid ordinal, then a page will be found | 111 // If |page_ordinal| is an invalid ordinal, then a page will be found |
| 112 // for the App. | 112 // for the App. |
| 113 void OnExtensionInstalled(const Extension* extension, | 113 void OnExtensionInstalled(const extensions::Extension* extension, |
| 114 Extension::State initial_state, | 114 extensions::Extension::State initial_state, |
| 115 bool from_webstore, | 115 bool from_webstore, |
| 116 const StringOrdinal& page_ordinal); | 116 const StringOrdinal& page_ordinal); |
| 117 | 117 |
| 118 // Called when an extension is uninstalled, so that prefs get cleaned up. | 118 // Called when an extension is uninstalled, so that prefs get cleaned up. |
| 119 void OnExtensionUninstalled(const std::string& extension_id, | 119 void OnExtensionUninstalled(const std::string& extension_id, |
| 120 const Extension::Location& location, | 120 const extensions::Extension::Location& location, |
| 121 bool external_uninstall); | 121 bool external_uninstall); |
| 122 | 122 |
| 123 // Called to change the extension's state when it is enabled/disabled. | 123 // Called to change the extension's state when it is enabled/disabled. |
| 124 void SetExtensionState(const std::string& extension_id, Extension::State); | 124 void SetExtensionState(const std::string& extension_id, |
| 125 extensions::Extension::State); |
| 125 | 126 |
| 126 // Returns all installed extensions | 127 // Returns all installed extensions |
| 127 void GetExtensions(ExtensionIdSet* out); | 128 void GetExtensions(ExtensionIdSet* out); |
| 128 | 129 |
| 129 // Returns all installed extensions from |extension_prefs|. This is exposed | 130 // Returns all installed extensions from |extension_prefs|. This is exposed |
| 130 // for ProtectedPrefsWatcher because it needs access to the extension ID list | 131 // for ProtectedPrefsWatcher because it needs access to the extension ID list |
| 131 // before the ExtensionService is initialized. | 132 // before the ExtensionService is initialized. |
| 132 static ExtensionIdSet GetExtensionsFrom( | 133 static ExtensionIdSet GetExtensionsFrom( |
| 133 const base::DictionaryValue* extension_prefs); | 134 const base::DictionaryValue* extension_prefs); |
| 134 | 135 |
| 135 // Getter and setter for browser action visibility. | 136 // Getter and setter for browser action visibility. |
| 136 bool GetBrowserActionVisibility(const Extension* extension); | 137 bool GetBrowserActionVisibility(const extensions::Extension* extension); |
| 137 void SetBrowserActionVisibility(const Extension* extension, bool visible); | 138 void SetBrowserActionVisibility(const extensions::Extension* extension, |
| 139 bool visible); |
| 138 | 140 |
| 139 // Did the extension ask to escalate its permission during an upgrade? | 141 // Did the extension ask to escalate its permission during an upgrade? |
| 140 bool DidExtensionEscalatePermissions(const std::string& id); | 142 bool DidExtensionEscalatePermissions(const std::string& id); |
| 141 | 143 |
| 142 // If |did_escalate| is true, the preferences for |extension| will be set to | 144 // If |did_escalate| is true, the preferences for |extension| will be set to |
| 143 // require the install warning when the user tries to enable. | 145 // require the install warning when the user tries to enable. |
| 144 void SetDidExtensionEscalatePermissions(const Extension* extension, | 146 void SetDidExtensionEscalatePermissions( |
| 145 bool did_escalate); | 147 const extensions::Extension* extension, |
| 148 bool did_escalate); |
| 146 | 149 |
| 147 // Getter and setters for disabled reason. | 150 // Getter and setters for disabled reason. |
| 148 Extension::DisableReason GetDisableReason(const std::string& extension_id); | 151 extensions::Extension::DisableReason GetDisableReason( |
| 152 const std::string& extension_id); |
| 149 void SetDisableReason(const std::string& extension_id, | 153 void SetDisableReason(const std::string& extension_id, |
| 150 Extension::DisableReason disable_reason); | 154 extensions::Extension::DisableReason disable_reason); |
| 151 void RemoveDisableReason(const std::string& extension_id); | 155 void RemoveDisableReason(const std::string& extension_id); |
| 152 | 156 |
| 153 // Returns the version string for the currently installed extension, or | 157 // Returns the version string for the currently installed extension, or |
| 154 // the empty string if not found. | 158 // the empty string if not found. |
| 155 std::string GetVersionString(const std::string& extension_id); | 159 std::string GetVersionString(const std::string& extension_id); |
| 156 | 160 |
| 157 // Re-writes the extension manifest into the prefs. | 161 // Re-writes the extension manifest into the prefs. |
| 158 // Called to change the extension's manifest when it's re-localized. | 162 // Called to change the extension's manifest when it's re-localized. |
| 159 void UpdateManifest(const Extension* extension); | 163 void UpdateManifest(const extensions::Extension* extension); |
| 160 | 164 |
| 161 // Returns extension path based on extension ID, or empty FilePath on error. | 165 // Returns extension path based on extension ID, or empty FilePath on error. |
| 162 FilePath GetExtensionPath(const std::string& extension_id); | 166 FilePath GetExtensionPath(const std::string& extension_id); |
| 163 | 167 |
| 164 // Returns base extensions install directory. | 168 // Returns base extensions install directory. |
| 165 const FilePath& install_directory() const { return install_directory_; } | 169 const FilePath& install_directory() const { return install_directory_; } |
| 166 | 170 |
| 167 // Updates the prefs based on the blacklist. | 171 // Updates the prefs based on the blacklist. |
| 168 void UpdateBlacklist(const std::set<std::string>& blacklist_set); | 172 void UpdateBlacklist(const std::set<std::string>& blacklist_set); |
| 169 | 173 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 198 void SetAppNotificationClientId(const std::string& extension_id, | 202 void SetAppNotificationClientId(const std::string& extension_id, |
| 199 const std::string& oauth_client_id); | 203 const std::string& oauth_client_id); |
| 200 | 204 |
| 201 // Whether app notifications are disabled for the given app. | 205 // Whether app notifications are disabled for the given app. |
| 202 bool IsAppNotificationDisabled(const std::string& extension_id) const; | 206 bool IsAppNotificationDisabled(const std::string& extension_id) const; |
| 203 void SetAppNotificationDisabled(const std::string& extension_id, bool value); | 207 void SetAppNotificationDisabled(const std::string& extension_id, bool value); |
| 204 | 208 |
| 205 // Is the extension with |extension_id| allowed by policy (checking both | 209 // Is the extension with |extension_id| allowed by policy (checking both |
| 206 // whitelist and blacklist). | 210 // whitelist and blacklist). |
| 207 bool IsExtensionAllowedByPolicy(const std::string& extension_id, | 211 bool IsExtensionAllowedByPolicy(const std::string& extension_id, |
| 208 Extension::Location location) const; | 212 extensions::Extension::Location location) const; |
| 209 | 213 |
| 210 // Checks if extensions are blacklisted by default, by policy. When true, this | 214 // Checks if extensions are blacklisted by default, by policy. When true, this |
| 211 // means that even extensions without an ID should be blacklisted (e.g. | 215 // means that even extensions without an ID should be blacklisted (e.g. |
| 212 // from the command line, or when loaded as an unpacked extension). | 216 // from the command line, or when loaded as an unpacked extension). |
| 213 // IsExtensionAllowedByPolicy() also takes this into account, and should be | 217 // IsExtensionAllowedByPolicy() also takes this into account, and should be |
| 214 // used instead when the extension ID is known. | 218 // used instead when the extension ID is known. |
| 215 bool ExtensionsBlacklistedByDefault() const; | 219 bool ExtensionsBlacklistedByDefault() const; |
| 216 | 220 |
| 217 // Returns the last value set via SetLastPingDay. If there isn't such a | 221 // Returns the last value set via SetLastPingDay. If there isn't such a |
| 218 // pref, the returned Time will return true for is_null(). | 222 // pref, the returned Time will return true for is_null(). |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 // |default_pref_value|. | 298 // |default_pref_value|. |
| 295 LaunchType GetLaunchType(const std::string& extension_id, | 299 LaunchType GetLaunchType(const std::string& extension_id, |
| 296 LaunchType default_pref_value); | 300 LaunchType default_pref_value); |
| 297 | 301 |
| 298 void SetLaunchType(const std::string& extension_id, LaunchType launch_type); | 302 void SetLaunchType(const std::string& extension_id, LaunchType launch_type); |
| 299 | 303 |
| 300 // Find the right launch container based on the launch type. | 304 // Find the right launch container based on the launch type. |
| 301 // If |extension|'s prefs do not have a launch type set, then | 305 // If |extension|'s prefs do not have a launch type set, then |
| 302 // use |default_pref_value|. | 306 // use |default_pref_value|. |
| 303 extension_misc::LaunchContainer GetLaunchContainer( | 307 extension_misc::LaunchContainer GetLaunchContainer( |
| 304 const Extension* extension, | 308 const extensions::Extension* extension, |
| 305 LaunchType default_pref_value); | 309 LaunchType default_pref_value); |
| 306 | 310 |
| 307 // Saves ExtensionInfo for each installed extension with the path to the | 311 // Saves ExtensionInfo for each installed extension with the path to the |
| 308 // version directory and the location. Blacklisted extensions won't be saved | 312 // version directory and the location. Blacklisted extensions won't be saved |
| 309 // and neither will external extensions the user has explicitly uninstalled. | 313 // and neither will external extensions the user has explicitly uninstalled. |
| 310 // Caller takes ownership of returned structure. | 314 // Caller takes ownership of returned structure. |
| 311 ExtensionsInfo* GetInstalledExtensionsInfo(); | 315 ExtensionsInfo* GetInstalledExtensionsInfo(); |
| 312 | 316 |
| 313 // Returns the ExtensionInfo from the prefs for the given extension. If the | 317 // Returns the ExtensionInfo from the prefs for the given extension. If the |
| 314 // extension is not present, NULL is returned. | 318 // extension is not present, NULL is returned. |
| 315 ExtensionInfo* GetInstalledExtensionInfo(const std::string& extension_id); | 319 extensions::ExtensionInfo* GetInstalledExtensionInfo( |
| 320 const std::string& extension_id); |
| 316 | 321 |
| 317 // We've downloaded an updated .crx file for the extension, but are waiting | 322 // We've downloaded an updated .crx file for the extension, but are waiting |
| 318 // for idle time to install it. | 323 // for idle time to install it. |
| 319 void SetIdleInstallInfo(const std::string& extension_id, | 324 void SetIdleInstallInfo(const std::string& extension_id, |
| 320 const FilePath& crx_path, | 325 const FilePath& crx_path, |
| 321 const std::string& version, | 326 const std::string& version, |
| 322 const base::Time& fetch_time); | 327 const base::Time& fetch_time); |
| 323 | 328 |
| 324 // Removes any idle install information we have for the given |extension_id|. | 329 // Removes any idle install information we have for the given |extension_id|. |
| 325 // Returns true if there was info to remove; false otherwise. | 330 // Returns true if there was info to remove; false otherwise. |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 515 // Installs the persistent extension preferences into |prefs_|'s extension | 520 // Installs the persistent extension preferences into |prefs_|'s extension |
| 516 // pref store. Does nothing if |extensions_disabled| is true. | 521 // pref store. Does nothing if |extensions_disabled| is true. |
| 517 void InitPrefStore(bool extensions_disabled); | 522 void InitPrefStore(bool extensions_disabled); |
| 518 | 523 |
| 519 // Migrates the permissions data in the pref store. | 524 // Migrates the permissions data in the pref store. |
| 520 void MigratePermissions(const ExtensionIdSet& extension_ids); | 525 void MigratePermissions(const ExtensionIdSet& extension_ids); |
| 521 | 526 |
| 522 // Checks whether there is a state pref for the extension and if so, whether | 527 // Checks whether there is a state pref for the extension and if so, whether |
| 523 // it matches |check_state|. | 528 // it matches |check_state|. |
| 524 bool DoesExtensionHaveState(const std::string& id, | 529 bool DoesExtensionHaveState(const std::string& id, |
| 525 Extension::State check_state) const; | 530 extensions::Extension::State check_state) const; |
| 526 | 531 |
| 527 // The pref service specific to this set of extension prefs. Owned by profile. | 532 // The pref service specific to this set of extension prefs. Owned by profile. |
| 528 PrefService* prefs_; | 533 PrefService* prefs_; |
| 529 | 534 |
| 530 // Base extensions install directory. | 535 // Base extensions install directory. |
| 531 FilePath install_directory_; | 536 FilePath install_directory_; |
| 532 | 537 |
| 533 // Weak pointer, owned by Profile. | 538 // Weak pointer, owned by Profile. |
| 534 ExtensionPrefValueMap* extension_pref_value_map_; | 539 ExtensionPrefValueMap* extension_pref_value_map_; |
| 535 | 540 |
| 536 // Contains all the logic for handling the order for various extension | 541 // Contains all the logic for handling the order for various extension |
| 537 // properties. | 542 // properties. |
| 538 scoped_ptr<ExtensionSorting> extension_sorting_; | 543 scoped_ptr<ExtensionSorting> extension_sorting_; |
| 539 | 544 |
| 540 scoped_refptr<ExtensionContentSettingsStore> content_settings_store_; | 545 scoped_refptr<ExtensionContentSettingsStore> content_settings_store_; |
| 541 | 546 |
| 542 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefs); | 547 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefs); |
| 543 }; | 548 }; |
| 544 | 549 |
| 545 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_PREFS_H_ | 550 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_PREFS_H_ |
| OLD | NEW |