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

Side by Side Diff: chrome/common/json_pref_store.h

Issue 6894020: Adds async interface method to PersistentPrefStore. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 2010->2011 Created 9 years, 7 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
« no previous file with comments | « chrome/browser/profiles/profile_impl.cc ('k') | chrome/common/json_pref_store.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 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_COMMON_JSON_PREF_STORE_H_ 5 #ifndef CHROME_COMMON_JSON_PREF_STORE_H_
6 #define CHROME_COMMON_JSON_PREF_STORE_H_ 6 #define CHROME_COMMON_JSON_PREF_STORE_H_
7 #pragma once 7 #pragma once
8 8
9 #include <string> 9 #include <string>
10 10
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/file_path.h" 12 #include "base/file_path.h"
13 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "base/observer_list.h" 14 #include "base/observer_list.h"
15 #include "chrome/common/important_file_writer.h" 15 #include "chrome/common/important_file_writer.h"
16 #include "chrome/common/persistent_pref_store.h" 16 #include "chrome/common/persistent_pref_store.h"
17 17
18 namespace base { 18 namespace base {
19 class MessageLoopProxy; 19 class MessageLoopProxy;
20 } 20 }
21 21
22 class DictionaryValue; 22 class DictionaryValue;
23 class FilePath; 23 class FilePath;
24 class Value; 24 class Value;
25 25
26 // A writable PrefStore implementation that is used for user preferences. 26 // A writable PrefStore implementation that is used for user preferences.
27 class JsonPrefStore : public PersistentPrefStore, 27 class JsonPrefStore : public PersistentPrefStore,
28 public ImportantFileWriter::DataSerializer { 28 public ImportantFileWriter::DataSerializer {
29 public: 29 public:
30 class Delegate {
31 public:
32 virtual void OnPrefsRead(PrefReadError error, bool no_dir) = 0;
33 };
34
35 // |file_message_loop_proxy| is the MessageLoopProxy for a thread on which 30 // |file_message_loop_proxy| is the MessageLoopProxy for a thread on which
36 // file I/O can be done. 31 // file I/O can be done.
37 JsonPrefStore(const FilePath& pref_filename, 32 JsonPrefStore(const FilePath& pref_filename,
38 base::MessageLoopProxy* file_message_loop_proxy); 33 base::MessageLoopProxy* file_message_loop_proxy);
39 virtual ~JsonPrefStore(); 34 virtual ~JsonPrefStore();
40 35
41 // PrefStore overrides: 36 // PrefStore overrides:
42 virtual ReadResult GetValue(const std::string& key, 37 virtual ReadResult GetValue(const std::string& key,
43 const Value** result) const; 38 const Value** result) const;
44 virtual void AddObserver(PrefStore::Observer* observer); 39 virtual void AddObserver(PrefStore::Observer* observer);
45 virtual void RemoveObserver(PrefStore::Observer* observer); 40 virtual void RemoveObserver(PrefStore::Observer* observer);
41 virtual bool IsInitializationComplete() const;
46 42
47 // PersistentPrefStore overrides: 43 // PersistentPrefStore overrides:
48 virtual ReadResult GetMutableValue(const std::string& key, Value** result); 44 virtual ReadResult GetMutableValue(const std::string& key, Value** result);
49 virtual void SetValue(const std::string& key, Value* value); 45 virtual void SetValue(const std::string& key, Value* value);
50 virtual void SetValueSilently(const std::string& key, Value* value); 46 virtual void SetValueSilently(const std::string& key, Value* value);
51 virtual void RemoveValue(const std::string& key); 47 virtual void RemoveValue(const std::string& key);
52 virtual bool ReadOnly() const; 48 virtual bool ReadOnly() const;
53 virtual PrefReadError ReadPrefs(); 49 virtual PrefReadError ReadPrefs();
54 // todo(altimofeev): move it to the PersistentPrefStore inteface. 50 virtual void ReadPrefsAsync(ReadErrorDelegate* error_delegate);
55 void ReadPrefs(Delegate* delegate);
56 virtual bool WritePrefs(); 51 virtual bool WritePrefs();
57 virtual void ScheduleWritePrefs(); 52 virtual void ScheduleWritePrefs();
58 virtual void CommitPendingWrite(); 53 virtual void CommitPendingWrite();
59 virtual void ReportValueChanged(const std::string& key); 54 virtual void ReportValueChanged(const std::string& key);
60 55
61 // This method is called after JSON file has been read. Method takes 56 // This method is called after JSON file has been read. Method takes
62 // ownership of the |value| pointer. 57 // ownership of the |value| pointer. Note, this method is used with
58 // asynchronous file reading, so class exposes it only for the internal needs.
59 // (read: do not call it manually).
63 void OnFileRead(Value* value_owned, PrefReadError error, bool no_dir); 60 void OnFileRead(Value* value_owned, PrefReadError error, bool no_dir);
64 61
65 private: 62 private:
66 // ImportantFileWriter::DataSerializer overrides: 63 // ImportantFileWriter::DataSerializer overrides:
67 virtual bool SerializeData(std::string* output); 64 virtual bool SerializeData(std::string* output);
68 65
69 FilePath path_; 66 FilePath path_;
67 scoped_refptr<base::MessageLoopProxy> file_message_loop_proxy_;
70 68
71 scoped_ptr<DictionaryValue> prefs_; 69 scoped_ptr<DictionaryValue> prefs_;
72 70
73 bool read_only_; 71 bool read_only_;
74 72
75 // Helper for safely writing pref data. 73 // Helper for safely writing pref data.
76 ImportantFileWriter writer_; 74 ImportantFileWriter writer_;
77 75
78 ObserverList<PrefStore::Observer, true> observers_; 76 ObserverList<PrefStore::Observer, true> observers_;
79 77
80 Delegate* delegate_; 78 scoped_ptr<ReadErrorDelegate> error_delegate_;
79
80 bool initialized_;
81 81
82 DISALLOW_COPY_AND_ASSIGN(JsonPrefStore); 82 DISALLOW_COPY_AND_ASSIGN(JsonPrefStore);
83 }; 83 };
84 84
85 #endif // CHROME_COMMON_JSON_PREF_STORE_H_ 85 #endif // CHROME_COMMON_JSON_PREF_STORE_H_
OLDNEW
« no previous file with comments | « chrome/browser/profiles/profile_impl.cc ('k') | chrome/common/json_pref_store.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698