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

Side by Side Diff: chrome/browser/extensions/extension_prefs.h

Issue 5915004: Introduce incognito preference settings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed Mattias' feedback Created 9 years, 11 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 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/ref_counted.h"
Mattias Nissler (ping if slow) 2011/01/07 10:12:58 No need for this header.
battre 2011/01/10 16:55:47 Done.
14 #include "base/time.h" 15 #include "base/time.h"
16 #include "chrome/browser/extensions/extension_pref_value_map.h"
Mattias Nissler (ping if slow) 2011/01/07 10:12:58 I think a forward declaration would suffice.
battre 2011/01/10 16:55:47 Done.
15 #include "chrome/browser/prefs/pref_service.h" 17 #include "chrome/browser/prefs/pref_service.h"
16 #include "chrome/common/extensions/extension.h" 18 #include "chrome/common/extensions/extension.h"
17 #include "googleurl/src/gurl.h" 19 #include "googleurl/src/gurl.h"
18 20
19 class ExtensionPrefStore; 21 class ExtensionPrefStore;
Mattias Nissler (ping if slow) 2011/01/07 10:12:58 No need for this.
battre 2011/01/10 16:55:47 Done.
20 22
21 // Class for managing global and per-extension preferences. 23 // Class for managing global and per-extension preferences.
22 // 24 //
23 // This class distinguishes the following kinds of preferences: 25 // This class distinguishes the following kinds of preferences:
24 // - global preferences: 26 // - global preferences:
25 // internal state for the extension system in general, not associated 27 // internal state for the extension system in general, not associated
26 // with an individual extension, such as lastUpdateTime. 28 // with an individual extension, such as lastUpdateTime.
27 // - per-extension preferences: 29 // - per-extension preferences:
28 // meta-preferences describing properties of the extension like 30 // meta-preferences describing properties of the extension like
29 // installation time, whether the extension is enabled, etc. 31 // installation time, whether the extension is enabled, etc.
(...skipping 22 matching lines...) Expand all
52 // application. 54 // application.
53 // Do not remove items or re-order this enum as it is used in preferences 55 // Do not remove items or re-order this enum as it is used in preferences
54 // and histograms. 56 // and histograms.
55 enum LaunchType { 57 enum LaunchType {
56 LAUNCH_PINNED, 58 LAUNCH_PINNED,
57 LAUNCH_REGULAR, 59 LAUNCH_REGULAR,
58 LAUNCH_FULLSCREEN, 60 LAUNCH_FULLSCREEN,
59 LAUNCH_WINDOW 61 LAUNCH_WINDOW
60 }; 62 };
61 63
64 // Does not assume ownership of |prefs| and |incognito_prefs|.
62 explicit ExtensionPrefs(PrefService* prefs, 65 explicit ExtensionPrefs(PrefService* prefs,
63 const FilePath& root_dir, 66 const FilePath& root_dir,
64 ExtensionPrefStore* extension_pref_store); 67 ExtensionPrefValueMap* extension_pref_value_map);
65 ~ExtensionPrefs(); 68 ~ExtensionPrefs();
66 69
67 // Returns a copy of the Extensions prefs. 70 // Returns a copy of the Extensions prefs.
68 // TODO(erikkay) Remove this so that external consumers don't need to be 71 // TODO(erikkay) Remove this so that external consumers don't need to be
69 // aware of the internal structure of the preferences. 72 // aware of the internal structure of the preferences.
70 DictionaryValue* CopyCurrentExtensions(); 73 DictionaryValue* CopyCurrentExtensions();
71 74
72 // Returns true if the specified extension has an entry in prefs 75 // Returns true if the specified extension has an entry in prefs
73 // and its killbit is on. 76 // and its killbit is on.
74 bool IsExtensionKilled(const std::string& id); 77 bool IsExtensionKilled(const std::string& id);
(...skipping 20 matching lines...) Expand all
95 void OnExtensionUninstalled(const std::string& extension_id, 98 void OnExtensionUninstalled(const std::string& extension_id,
96 const Extension::Location& location, 99 const Extension::Location& location,
97 bool external_uninstall); 100 bool external_uninstall);
98 101
99 // Returns the state (enabled/disabled) of the given extension. 102 // Returns the state (enabled/disabled) of the given extension.
100 Extension::State GetExtensionState(const std::string& extension_id) const; 103 Extension::State GetExtensionState(const std::string& extension_id) const;
101 104
102 // Called to change the extension's state when it is enabled/disabled. 105 // Called to change the extension's state when it is enabled/disabled.
103 void SetExtensionState(const Extension* extension, Extension::State); 106 void SetExtensionState(const Extension* extension, Extension::State);
104 107
105 // Returns all installed and enabled extensions 108 // Returns all installed extensions
106 void GetEnabledExtensions(ExtensionIdSet* out) const; 109 void GetExtensions(ExtensionIdSet* out) const;
107 110
108 // Getter and setter for browser action visibility. 111 // Getter and setter for browser action visibility.
109 bool GetBrowserActionVisibility(const Extension* extension); 112 bool GetBrowserActionVisibility(const Extension* extension);
110 void SetBrowserActionVisibility(const Extension* extension, bool visible); 113 void SetBrowserActionVisibility(const Extension* extension, bool visible);
111 114
112 // Did the extension ask to escalate its permission during an upgrade? 115 // Did the extension ask to escalate its permission during an upgrade?
113 bool DidExtensionEscalatePermissions(const std::string& id); 116 bool DidExtensionEscalatePermissions(const std::string& id);
114 117
115 // If |did_escalate| is true, the preferences for |extension| will be set to 118 // If |did_escalate| is true, the preferences for |extension| will be set to
116 // require the install warning when the user tries to enable. 119 // require the install warning when the user tries to enable.
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 // of the extension is available. 259 // of the extension is available.
257 void SetUpdateUrlData(const std::string& extension_id, 260 void SetUpdateUrlData(const std::string& extension_id,
258 const std::string& data); 261 const std::string& data);
259 std::string GetUpdateUrlData(const std::string& extension_id); 262 std::string GetUpdateUrlData(const std::string& extension_id);
260 263
261 // Sets a preference value that is controlled by the extension. In other 264 // Sets a preference value that is controlled by the extension. In other
262 // words, this is not a pref value *about* the extension but something 265 // words, this is not a pref value *about* the extension but something
263 // global the extension wants to override. 266 // global the extension wants to override.
264 void SetExtensionControlledPref(const std::string& extension_id, 267 void SetExtensionControlledPref(const std::string& extension_id,
265 const std::string& pref_key, 268 const std::string& pref_key,
269 bool incognito,
266 Value* value); 270 Value* value);
267 271
268 static void RegisterUserPrefs(PrefService* prefs); 272 static void RegisterUserPrefs(PrefService* prefs);
269 273
270 // The underlying PrefService. 274 // The underlying PrefService.
271 PrefService* pref_service() const { return prefs_; } 275 PrefService* pref_service() const { return prefs_; }
272 276
273 protected: 277 protected:
274 // For unit testing. Enables injecting an artificial clock that is used 278 // For unit testing. Enables injecting an artificial clock that is used
275 // to query the current time, when an extension is installed. 279 // to query the current time, when an extension is installed.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 const std::string& pref_key, 332 const std::string& pref_key,
329 const std::set<std::string>& added_values); 333 const std::set<std::string>& added_values);
330 334
331 // Ensures and returns a mutable dictionary for extension |id|'s prefs. 335 // Ensures and returns a mutable dictionary for extension |id|'s prefs.
332 DictionaryValue* GetOrCreateExtensionPref(const std::string& id); 336 DictionaryValue* GetOrCreateExtensionPref(const std::string& id);
333 337
334 // Same as above, but returns NULL if it doesn't exist. 338 // Same as above, but returns NULL if it doesn't exist.
335 DictionaryValue* GetExtensionPref(const std::string& id) const; 339 DictionaryValue* GetExtensionPref(const std::string& id) const;
336 340
337 // Returns the dictionary of preferences controlled by the specified extension 341 // Returns the dictionary of preferences controlled by the specified extension
338 // or NULL if unknown. All entries in the dictionary contain non-expanded 342 // or creates a new one. All entries in the dictionary contain non-expanded
339 // paths. 343 // paths.
340 DictionaryValue* GetExtensionControlledPrefs(const std::string& id) const; 344 DictionaryValue* GetExtensionControlledPrefs(const std::string& id) const;
341 345
342 // Serializes the data and schedules a persistent save via the |PrefService|. 346 // Serializes the data and schedules a persistent save via the |PrefService|.
343 // Additionally fires a PREF_CHANGED notification with the top-level 347 // Additionally fires a PREF_CHANGED notification with the top-level
344 // |kExtensionsPref| path set. 348 // |kExtensionsPref| path set.
345 // TODO(andybons): Switch this to EXTENSION_PREF_CHANGED to be more granular. 349 // TODO(andybons): Switch this to EXTENSION_PREF_CHANGED to be more granular.
346 // TODO(andybons): Use a ScopedPrefUpdate to update observers on changes to 350 // TODO(andybons): Use a ScopedPrefUpdate to update observers on changes to
347 // the mutable extension dictionary. 351 // the mutable extension dictionary.
348 void SavePrefsAndNotify(); 352 void SavePrefsAndNotify();
(...skipping 11 matching lines...) Expand all
360 base::Time GetInstallTime(const std::string& extension_id) const; 364 base::Time GetInstallTime(const std::string& extension_id) const;
361 365
362 // Fix missing preference entries in the extensions that are were introduced 366 // Fix missing preference entries in the extensions that are were introduced
363 // in a later Chrome version. 367 // in a later Chrome version.
364 void FixMissingPrefs(const ExtensionIdSet& extension_ids); 368 void FixMissingPrefs(const ExtensionIdSet& extension_ids);
365 369
366 // Installs the persistent extension preferences into |prefs_|'s extension 370 // Installs the persistent extension preferences into |prefs_|'s extension
367 // pref store. 371 // pref store.
368 void InitPrefStore(); 372 void InitPrefStore();
369 373
370 // Returns the extension controlled preference value of the extension that was 374 // The pref service specific to this set of extension prefs. Owned by profile.
371 // installed most recently.
372 const Value* GetWinningExtensionControlledPrefValue(
373 const std::string& key) const;
374
375 // Executes UpdatePrefStore for all |pref_keys|.
376 void UpdatePrefStore(const PrefKeySet& pref_keys);
377
378 // Finds the most recently installed extension that defines a preference
379 // for |pref_key|, then stores its value in the PrefValueStore's extension
380 // pref store and sends notifications to observers in case the value changed.
381 void UpdatePrefStore(const std::string& pref_key);
382
383 // Retrieves a list of preference keys that the specified extension
384 // intends to manage. Keys are always appended, |out| is not cleared.
385 void GetExtensionControlledPrefKeys(const std::string& extension_id,
386 PrefKeySet *out) const;
387
388 // The pref service specific to this set of extension prefs.
389 PrefService* prefs_; 375 PrefService* prefs_;
390 376
391 // Base extensions install directory. 377 // Base extensions install directory.
392 FilePath install_directory_; 378 FilePath install_directory_;
393 379
394 // Used to manipulate extension preferences. 380 // Weak pointer, owned by Profile.
395 ExtensionPrefStore* pref_store_; 381 ExtensionPrefValueMap* extension_pref_value_map_;
396 382
397 // The URLs of all of the toolstrips. 383 // The URLs of all of the toolstrips.
398 URLList shelf_order_; 384 URLList shelf_order_;
399 385
400 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefs); 386 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefs);
401 }; 387 };
402 388
403 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_PREFS_H_ 389 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_PREFS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698