Blink roll 25b6bd3a7a131ffe68d809546ad1a20707915cdc:3a503f41ae42e5b79cfcd2ff10e65afde...
[chromium-blink-merge.git] / base / prefs / scoped_user_pref_update.cc
blob7871c75ce3783ab84156d188fd58b087927e2cfd
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/prefs/scoped_user_pref_update.h"
7 #include "base/logging.h"
8 #include "base/prefs/pref_notifier.h"
9 #include "base/prefs/pref_service.h"
11 namespace subtle {
13 ScopedUserPrefUpdateBase::ScopedUserPrefUpdateBase(PrefService* service,
14 const char* path)
15 : service_(service),
16 path_(path),
17 value_(NULL) {
18 DCHECK(service_->CalledOnValidThread());
21 ScopedUserPrefUpdateBase::~ScopedUserPrefUpdateBase() {
22 Notify();
25 base::Value* ScopedUserPrefUpdateBase::GetValueOfType(base::Value::Type type) {
26 DCHECK(CalledOnValidThread());
27 if (!value_)
28 value_ = service_->GetMutableUserPref(path_.c_str(), type);
29 return value_;
32 void ScopedUserPrefUpdateBase::Notify() {
33 if (value_) {
34 service_->ReportUserPrefChanged(path_);
35 value_ = NULL;
39 } // namespace subtle