14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file.
44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#ifndef CHROME_BROWSER_UI_APP_LIST_PROFILE_STORE_H_
64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#define CHROME_BROWSER_UI_APP_LIST_PROFILE_STORE_H_
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/callback_forward.h"
94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/files/file_path.h"
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/browser/profiles/profile_info_cache_observer.h"
114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class Profile;
134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Represents something that knows how to load profiles asynchronously.
154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class ProfileStore {
164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public:
174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual ~ProfileStore() {}
184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual void AddProfileObserver(ProfileInfoCacheObserver* observer) = 0;
194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Loads the profile at |path| and calls |callback| when its done. A NULL
214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Profile* represents an error.
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual void LoadProfileAsync(const base::FilePath& path,
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                                base::Callback<void(Profile*)> callback) = 0;
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Returns the profile at |path| if it is already loaded.
264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual Profile* GetProfileByPath(const base::FilePath& path) = 0;
274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // The user data directory that profiles are stored under in this instance of
294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Chrome.
304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual base::FilePath GetUserDataDir() = 0;
314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // Returns true if the profile at |path| is supervised.
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  virtual bool IsProfileSupervised(const base::FilePath& path) = 0;
344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)};
354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif  // CHROME_BROWSER_UI_APP_LIST_PROFILE_STORE_H_
37