1 // Copyright 2014 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.
4
5 #include "chrome/browser/supervised_user/supervised_user_shared_settings_update.h"
6
7 #include "base/bind.h"
8 #include "base/values.h"
9 #include "chrome/browser/supervised_user/supervised_user_shared_settings_service.h"
10
SupervisedUserSharedSettingsUpdate(SupervisedUserSharedSettingsService * service,const std::string & su_id,const std::string & key,scoped_ptr<base::Value> value,const base::Callback<void (bool)> & success_callback)11 SupervisedUserSharedSettingsUpdate::SupervisedUserSharedSettingsUpdate(
12 SupervisedUserSharedSettingsService* service,
13 const std::string& su_id,
14 const std::string& key,
15 scoped_ptr<base::Value> value,
16 const base::Callback<void(bool)>& success_callback)
17 : service_(service),
18 su_id_(su_id),
19 key_(key),
20 value_(value.Pass()),
21 callback_(success_callback) {
22 service->SetValueInternal(su_id, key, *value_, false);
23 subscription_ = service->Subscribe(
24 base::Bind(&SupervisedUserSharedSettingsUpdate::OnSettingChanged,
25 base::Unretained(this)));
26 }
27
~SupervisedUserSharedSettingsUpdate()28 SupervisedUserSharedSettingsUpdate::~SupervisedUserSharedSettingsUpdate() {}
29
OnSettingChanged(const std::string & su_id,const std::string & key)30 void SupervisedUserSharedSettingsUpdate::OnSettingChanged(
31 const std::string& su_id, const std::string& key) {
32 if (su_id != su_id_)
33 return;
34
35 if (key != key_)
36 return;
37
38 const base::Value* value = service_->GetValue(su_id, key);
39 callback_.Run(value->Equals(value_.get()));
40 }
41