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