| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/linked_ptr.h" | 13 #include "base/linked_ptr.h" |
| 14 #include "base/time.h" | 14 #include "base/time.h" |
| 15 #include "chrome/browser/prefs/pref_service.h" | 15 #include "chrome/browser/prefs/pref_service.h" |
| 16 #include "chrome/common/extensions/extension.h" | 16 #include "chrome/common/extensions/extension.h" |
| 17 #include "googleurl/src/gurl.h" | 17 #include "googleurl/src/gurl.h" |
| 18 | 18 |
| 19 // Class for managing global and per-extension preferences. | 19 // Class for managing global and per-extension preferences. |
| 20 // This class is instantiated by ExtensionsService, so it should be accessed | 20 // This class is instantiated by ExtensionsService, so it should be accessed |
| 21 // from there. | 21 // from there. |
| 22 class ExtensionPrefs { | 22 class ExtensionPrefs { |
| 23 public: | 23 public: |
| 24 // Key name for a preference that keeps track of per-extension settings. This | |
| 25 // is a dictionary object read from the Preferences file, keyed off of | |
| 26 // extension ids. | |
| 27 static const char kExtensionsPref[]; | |
| 28 | |
| 29 typedef std::vector<linked_ptr<ExtensionInfo> > ExtensionsInfo; | 24 typedef std::vector<linked_ptr<ExtensionInfo> > ExtensionsInfo; |
| 30 | 25 |
| 31 // This enum is used for the launch type the user wants to use for an | |
| 32 // application. | |
| 33 enum LaunchType { | |
| 34 LAUNCH_PINNED, | |
| 35 LAUNCH_REGULAR, | |
| 36 LAUNCH_FULLSCREEN | |
| 37 }; | |
| 38 | |
| 39 explicit ExtensionPrefs(PrefService* prefs, const FilePath& root_dir_); | 26 explicit ExtensionPrefs(PrefService* prefs, const FilePath& root_dir_); |
| 40 | 27 |
| 41 // Returns a copy of the Extensions prefs. | 28 // Returns a copy of the Extensions prefs. |
| 42 // TODO(erikkay) Remove this so that external consumers don't need to be | 29 // TODO(erikkay) Remove this so that external consumers don't need to be |
| 43 // aware of the internal structure of the preferences. | 30 // aware of the internal structure of the preferences. |
| 44 DictionaryValue* CopyCurrentExtensions(); | 31 DictionaryValue* CopyCurrentExtensions(); |
| 45 | 32 |
| 46 // Populate |killed_ids| with extension ids that have been killed. | 33 // Populate |killed_ids| with extension ids that have been killed. |
| 47 void GetKilledExtensionIds(std::set<std::string>* killed_ids); | 34 void GetKilledExtensionIds(std::set<std::string>* killed_ids); |
| 48 | 35 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 // Returns true if the user enabled this extension to be loaded in incognito | 109 // Returns true if the user enabled this extension to be loaded in incognito |
| 123 // mode. | 110 // mode. |
| 124 bool IsIncognitoEnabled(const std::string& extension_id); | 111 bool IsIncognitoEnabled(const std::string& extension_id); |
| 125 void SetIsIncognitoEnabled(const std::string& extension_id, bool enabled); | 112 void SetIsIncognitoEnabled(const std::string& extension_id, bool enabled); |
| 126 | 113 |
| 127 // Returns true if the user has chosen to allow this extension to inject | 114 // Returns true if the user has chosen to allow this extension to inject |
| 128 // scripts into pages with file URLs. | 115 // scripts into pages with file URLs. |
| 129 bool AllowFileAccess(const std::string& extension_id); | 116 bool AllowFileAccess(const std::string& extension_id); |
| 130 void SetAllowFileAccess(const std::string& extension_id, bool allow); | 117 void SetAllowFileAccess(const std::string& extension_id, bool allow); |
| 131 | 118 |
| 132 ExtensionPrefs::LaunchType GetLaunchType(const std::string& extension_id); | |
| 133 void SetLaunchType(const std::string& extension_id, LaunchType launch_type); | |
| 134 | |
| 135 // Saves ExtensionInfo for each installed extension with the path to the | 119 // Saves ExtensionInfo for each installed extension with the path to the |
| 136 // version directory and the location. Blacklisted extensions won't be saved | 120 // version directory and the location. Blacklisted extensions won't be saved |
| 137 // and neither will external extensions the user has explicitly uninstalled. | 121 // and neither will external extensions the user has explicitly uninstalled. |
| 138 // Caller takes ownership of returned structure. | 122 // Caller takes ownership of returned structure. |
| 139 ExtensionsInfo* GetInstalledExtensionsInfo(); | 123 ExtensionsInfo* GetInstalledExtensionsInfo(); |
| 140 | 124 |
| 141 // Returns the ExtensionInfo from the prefs for the given extension. If the | 125 // Returns the ExtensionInfo from the prefs for the given extension. If the |
| 142 // extension is not present, NULL is returned. | 126 // extension is not present, NULL is returned. |
| 143 ExtensionInfo* GetInstalledExtensionInfo(const std::string& extension_id); | 127 ExtensionInfo* GetInstalledExtensionInfo(const std::string& extension_id); |
| 144 | 128 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 void DeleteExtensionPrefs(const std::string& id); | 178 void DeleteExtensionPrefs(const std::string& id); |
| 195 | 179 |
| 196 // Reads a boolean pref from |ext| with key |pref_key|. | 180 // Reads a boolean pref from |ext| with key |pref_key|. |
| 197 // Return false if the value is false or kPrefBlacklist does not exist. | 181 // Return false if the value is false or kPrefBlacklist does not exist. |
| 198 bool ReadBooleanFromPref(DictionaryValue* ext, const std::string& pref_key); | 182 bool ReadBooleanFromPref(DictionaryValue* ext, const std::string& pref_key); |
| 199 | 183 |
| 200 // Reads a boolean pref |pref_key| from extension with id |extension_id|. | 184 // Reads a boolean pref |pref_key| from extension with id |extension_id|. |
| 201 bool ReadExtensionPrefBoolean(const std::string& extension_id, | 185 bool ReadExtensionPrefBoolean(const std::string& extension_id, |
| 202 const std::string& pref_key); | 186 const std::string& pref_key); |
| 203 | 187 |
| 204 // Reads an integer pref from |ext| with key |pref_key|. | |
| 205 // Return false if the value does not exist. | |
| 206 bool ReadIntegerFromPref(DictionaryValue* ext, const std::string& pref_key, | |
| 207 int* out_value); | |
| 208 | |
| 209 // Reads an integer pref |pref_key| from extension with id |extension_id|. | |
| 210 bool ReadExtensionPrefInteger(const std::string& extension_id, | |
| 211 const std::string& pref_key, | |
| 212 int* out_value); | |
| 213 | |
| 214 // Ensures and returns a mutable dictionary for extension |id|'s prefs. | 188 // Ensures and returns a mutable dictionary for extension |id|'s prefs. |
| 215 DictionaryValue* GetOrCreateExtensionPref(const std::string& id); | 189 DictionaryValue* GetOrCreateExtensionPref(const std::string& id); |
| 216 | 190 |
| 217 // Same as above, but returns NULL if it doesn't exist. | 191 // Same as above, but returns NULL if it doesn't exist. |
| 218 DictionaryValue* GetExtensionPref(const std::string& id) const; | 192 DictionaryValue* GetExtensionPref(const std::string& id) const; |
| 219 | 193 |
| 220 // Serializes the data and schedules a persistent save via the |PrefService|. | |
| 221 // Additionally fires a PREF_CHANGED notification with the top-level | |
| 222 // |kExtensionsPref| path set. | |
| 223 // TODO(andybons): Switch this to EXTENSION_PREF_CHANGED to be more granular. | |
| 224 // TODO(andybons): Use a ScopedPrefUpdate to update observers on changes to | |
| 225 // the mutable extension dictionary. | |
| 226 void SavePrefsAndNotify(); | |
| 227 | |
| 228 // Checks if kPrefBlacklist is set to true in the DictionaryValue. | 194 // Checks if kPrefBlacklist is set to true in the DictionaryValue. |
| 229 // Return false if the value is false or kPrefBlacklist does not exist. | 195 // Return false if the value is false or kPrefBlacklist does not exist. |
| 230 // This is used to decide if an extension is blacklisted. | 196 // This is used to decide if an extension is blacklisted. |
| 231 bool IsBlacklistBitSet(DictionaryValue* ext); | 197 bool IsBlacklistBitSet(DictionaryValue* ext); |
| 232 | 198 |
| 233 // Helper methods for the public last ping day functions. | 199 // Helper methods for the public last ping day functions. |
| 234 base::Time LastPingDayImpl(const DictionaryValue* dictionary) const; | 200 base::Time LastPingDayImpl(const DictionaryValue* dictionary) const; |
| 235 void SetLastPingDayImpl(const base::Time& time, DictionaryValue* dictionary); | 201 void SetLastPingDayImpl(const base::Time& time, DictionaryValue* dictionary); |
| 236 | 202 |
| 237 // The pref service specific to this set of extension prefs. | 203 // The pref service specific to this set of extension prefs. |
| 238 PrefService* prefs_; | 204 PrefService* prefs_; |
| 239 | 205 |
| 240 // Base extensions install directory. | 206 // Base extensions install directory. |
| 241 FilePath install_directory_; | 207 FilePath install_directory_; |
| 242 | 208 |
| 243 // The URLs of all of the toolstrips. | 209 // The URLs of all of the toolstrips. |
| 244 URLList shelf_order_; | 210 URLList shelf_order_; |
| 245 | 211 |
| 246 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefs); | 212 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefs); |
| 247 }; | 213 }; |
| 248 | 214 |
| 249 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_PREFS_H_ | 215 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_PREFS_H_ |
| OLD | NEW |