15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef EXTENSIONS_BROWSER_EXTENSION_SCOPED_PREFS_H_
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define EXTENSIONS_BROWSER_EXTENSION_SCOPED_PREFS_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace extensions {
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ExtensionScopedPrefs {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExtensionScopedPrefs() {}
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~ExtensionScopedPrefs() {}
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets the pref |key| for extension |id| to |value|.
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateExtensionPref(const std::string& id,
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const std::string& key,
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   base::Value* value) = 0;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Deletes the pref dictionary for extension |id|.
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DeleteExtensionPrefs(const std::string& id) = 0;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Reads a boolean pref |pref_key| from extension with id |extension_id|.
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual bool ReadPrefAsBoolean(const std::string& extension_id,
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                 const std::string& pref_key,
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                 bool* out_value) const = 0;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Reads an integer pref |pref_key| from extension with id |extension_id|.
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual bool ReadPrefAsInteger(const std::string& extension_id,
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                 const std::string& pref_key,
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                 int* out_value) const = 0;
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Reads a string pref |pref_key| from extension with id |extension_id|.
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual bool ReadPrefAsString(const std::string& extension_id,
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                const std::string& pref_key,
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                std::string* out_value) const = 0;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Reads a list pref |pref_key| from extension with id |extension_id|.
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual bool ReadPrefAsList(const std::string& extension_id,
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                              const std::string& pref_key,
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                              const base::ListValue** out_value) const = 0;
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Reads a dictionary pref |pref_key| from extension with id |extension_id|.
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual bool ReadPrefAsDictionary(
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& extension_id,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& pref_key,
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const base::DictionaryValue** out_value) const = 0;
487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // Returns true if the prefs contain an entry for an extension with id
507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // |extension_id|.
517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual bool HasPrefForExtension(const std::string& extension_id) const = 0;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace extensions
55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif  // EXTENSIONS_BROWSER_EXTENSION_SCOPED_PREFS_H_
57