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

Side by Side Diff: chrome/browser/prefs/pref_member.h

Issue 7259019: Move base/values.h into the base namespace. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 5 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) 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 // A helper class that stays in sync with a preference (bool, int, real, 5 // A helper class that stays in sync with a preference (bool, int, real,
6 // string or filepath). For example: 6 // string or filepath). For example:
7 // 7 //
8 // class MyClass { 8 // class MyClass {
9 // public: 9 // public:
10 // MyClass(PrefService* prefs) { 10 // MyClass(PrefService* prefs) {
(...skipping 29 matching lines...) Expand all
40 40
41 class PrefMemberBase : public NotificationObserver { 41 class PrefMemberBase : public NotificationObserver {
42 protected: 42 protected:
43 class Internal : public base::RefCountedThreadSafe<Internal> { 43 class Internal : public base::RefCountedThreadSafe<Internal> {
44 public: 44 public:
45 Internal(); 45 Internal();
46 46
47 // Update the value, either by calling |UpdateValueInternal| directly 47 // Update the value, either by calling |UpdateValueInternal| directly
48 // or by dispatching to the right thread. 48 // or by dispatching to the right thread.
49 // Takes ownership of |value|. 49 // Takes ownership of |value|.
50 virtual void UpdateValue(Value* value, bool is_managed) const; 50 virtual void UpdateValue(base::Value* value, bool is_managed) const;
51 51
52 void MoveToThread(BrowserThread::ID thread_id); 52 void MoveToThread(BrowserThread::ID thread_id);
53 53
54 // See PrefMember<> for description. 54 // See PrefMember<> for description.
55 bool IsManaged() const { 55 bool IsManaged() const {
56 return is_managed_; 56 return is_managed_;
57 } 57 }
58 58
59 protected: 59 protected:
60 friend class base::RefCountedThreadSafe<Internal>; 60 friend class base::RefCountedThreadSafe<Internal>;
61 virtual ~Internal(); 61 virtual ~Internal();
62 62
63 void CheckOnCorrectThread() const { 63 void CheckOnCorrectThread() const {
64 DCHECK(IsOnCorrectThread()); 64 DCHECK(IsOnCorrectThread());
65 } 65 }
66 66
67 private: 67 private:
68 // This method actually updates the value. It should only be called from 68 // This method actually updates the value. It should only be called from
69 // the thread the PrefMember is on. 69 // the thread the PrefMember is on.
70 virtual bool UpdateValueInternal(const Value& value) const = 0; 70 virtual bool UpdateValueInternal(const base::Value& value) const = 0;
71 71
72 bool IsOnCorrectThread() const; 72 bool IsOnCorrectThread() const;
73 73
74 BrowserThread::ID thread_id_; 74 BrowserThread::ID thread_id_;
75 mutable bool is_managed_; 75 mutable bool is_managed_;
76 76
77 DISALLOW_COPY_AND_ASSIGN(Internal); 77 DISALLOW_COPY_AND_ASSIGN(Internal);
78 }; 78 };
79 79
80 PrefMemberBase(); 80 PrefMemberBase();
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 Internal() : value_(ValueType()) {} 210 Internal() : value_(ValueType()) {}
211 211
212 ValueType value() { 212 ValueType value() {
213 CheckOnCorrectThread(); 213 CheckOnCorrectThread();
214 return value_; 214 return value_;
215 } 215 }
216 216
217 protected: 217 protected:
218 virtual ~Internal() {} 218 virtual ~Internal() {}
219 219
220 virtual bool UpdateValueInternal(const Value& value) const; 220 virtual bool UpdateValueInternal(const base::Value& value) const;
221 221
222 // We cache the value of the pref so we don't have to keep walking the pref 222 // We cache the value of the pref so we don't have to keep walking the pref
223 // tree. 223 // tree.
224 mutable ValueType value_; 224 mutable ValueType value_;
225 225
226 DISALLOW_COPY_AND_ASSIGN(Internal); 226 DISALLOW_COPY_AND_ASSIGN(Internal);
227 }; 227 };
228 228
229 virtual Internal* internal() const { return internal_; } 229 virtual Internal* internal() const { return internal_; }
230 virtual void CreateInternal() const { 230 virtual void CreateInternal() const {
231 internal_ = new Internal(); 231 internal_ = new Internal();
232 } 232 }
233 233
234 // This method is used to do the actual sync with pref of the specified type. 234 // This method is used to do the actual sync with pref of the specified type.
235 virtual void UpdatePref(const ValueType& value); 235 virtual void UpdatePref(const ValueType& value);
236 236
237 mutable scoped_refptr<Internal> internal_; 237 mutable scoped_refptr<Internal> internal_;
238 238
239 DISALLOW_COPY_AND_ASSIGN(PrefMember); 239 DISALLOW_COPY_AND_ASSIGN(PrefMember);
240 }; 240 };
241 241
242 typedef PrefMember<bool> BooleanPrefMember; 242 typedef PrefMember<bool> BooleanPrefMember;
243 typedef PrefMember<int> IntegerPrefMember; 243 typedef PrefMember<int> IntegerPrefMember;
244 typedef PrefMember<double> DoublePrefMember; 244 typedef PrefMember<double> DoublePrefMember;
245 typedef PrefMember<std::string> StringPrefMember; 245 typedef PrefMember<std::string> StringPrefMember;
246 typedef PrefMember<FilePath> FilePathPrefMember; 246 typedef PrefMember<FilePath> FilePathPrefMember;
247 247
248 #endif // CHROME_BROWSER_PREFS_PREF_MEMBER_H_ 248 #endif // CHROME_BROWSER_PREFS_PREF_MEMBER_H_
OLDNEW
« no previous file with comments | « chrome/browser/prefs/overlay_persistent_pref_store.h ('k') | chrome/browser/prefs/pref_model_associator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698