• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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