Home | History | Annotate | Download | only in supervised_user
      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