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_CHROMEOS_LOGIN_AUTH_MOUNT_MANAGER_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_MOUNT_MANAGER_H_
7
8#include <map>
9#include <string>
10
11#include "base/files/file_path.h"
12#include "base/memory/scoped_ptr.h"
13
14class PrefRegistrySimple;
15
16namespace chromeos {
17
18// Keeps track of mount points for different users.
19class MountManager {
20 public:
21  // Returns a shared instance of a MountManager. Not thread-safe,
22  // should only be called from the main UI thread.
23  static MountManager* Get();
24
25  static base::FilePath GetHomeDir(std::string& user_hash);
26
27  virtual ~MountManager();
28
29  virtual bool IsMounted(const std::string& user_id);
30  virtual base::FilePath GetPath(const std::string& user_id);
31
32  virtual void SetPath(const std::string& user_id,
33                       const base::FilePath& path);
34  virtual void DeletePath(const std::string& user_id);
35
36 private:
37  MountManager();
38
39  typedef std::map<std::string, base::FilePath> UserToPathMap;
40
41  UserToPathMap additional_mounts_;
42
43  static MountManager* instance_;
44
45  DISALLOW_COPY_AND_ASSIGN(MountManager);
46};
47
48}  // namespace chromeos
49
50#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_MOUNT_MANAGER_H_
51