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 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 28 SupervisedUserSharedSettingsUpdate::~SupervisedUserSharedSettingsUpdate() {} 29 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