profile_store.h revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
1// Copyright 2013 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_UI_APP_LIST_PROFILE_STORE_H_
6#define CHROME_BROWSER_UI_APP_LIST_PROFILE_STORE_H_
7
8#include "base/callback_forward.h"
9#include "base/files/file_path.h"
10#include "chrome/browser/profiles/profile_info_cache_observer.h"
11
12class Profile;
13
14// Represents something that knows how to load profiles asynchronously.
15class ProfileStore {
16 public:
17  virtual ~ProfileStore() {}
18  virtual void AddProfileObserver(ProfileInfoCacheObserver* observer) = 0;
19
20  // Loads the profile at |path| and calls |callback| when its done. A NULL
21  // Profile* represents an error.
22  virtual void LoadProfileAsync(const base::FilePath& path,
23                                base::Callback<void(Profile*)> callback) = 0;
24
25  // Returns the profile at |path| if it is already loaded.
26  virtual Profile* GetProfileByPath(const base::FilePath& path) = 0;
27
28  // The user data directory that profiles are stored under in this instance of
29  // Chrome.
30  virtual base::FilePath GetUserDataDir() = 0;
31
32  // Returns true if the profile at |path| is supervised.
33  virtual bool IsProfileSupervised(const base::FilePath& path) = 0;
34};
35
36#endif  // CHROME_BROWSER_UI_APP_LIST_PROFILE_STORE_H_
37