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#ifndef CHROME_BROWSER_SUPERVISED_USER_CHROMEOS_SUPERVISED_USER_PASSWORD_SERVICE_H_
6#define CHROME_BROWSER_SUPERVISED_USER_CHROMEOS_SUPERVISED_USER_PASSWORD_SERVICE_H_
7
8#include <string>
9
10#include "base/compiler_specific.h"
11#include "base/memory/scoped_ptr.h"
12#include "base/memory/weak_ptr.h"
13#include "chrome/browser/supervised_user/supervised_user_shared_settings_service.h"
14#include "chrome/browser/supervised_user/supervised_users.h"
15#include "components/keyed_service/core/keyed_service.h"
16
17namespace chromeos {
18
19class SupervisedUserPasswordService : public KeyedService {
20 public:
21  SupervisedUserPasswordService();
22  virtual ~SupervisedUserPasswordService();
23
24  virtual void Shutdown() OVERRIDE;
25
26  void Init(const std::string& user_id,
27            SupervisedUserSharedSettingsService* service);
28 private:
29  void OnSharedSettingsChange(const std::string& su_id, const std::string& key);
30
31  // Cached value from Init().
32  // User id of currently logged in supervised user.
33  std::string user_id_;
34  SupervisedUserSharedSettingsService* settings_service_;
35
36  scoped_ptr<SupervisedUserSharedSettingsService::ChangeCallbackList::
37                 Subscription>
38      settings_service_subscription_;
39
40  base::WeakPtrFactory<SupervisedUserPasswordService> weak_ptr_factory_;
41
42  DISALLOW_COPY_AND_ASSIGN(SupervisedUserPasswordService);
43};
44
45}  // namespace chromeos
46#endif  // CHROME_BROWSER_SUPERVISED_USER_CHROMEOS_SUPERVISED_USER_PASSWORD_SERVICE_H_
47