supervised_user_shared_settings_update.cc revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
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
11SupervisedUserSharedSettingsUpdate::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
28SupervisedUserSharedSettingsUpdate::~SupervisedUserSharedSettingsUpdate() {}
29
30void 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