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)#include "chrome/browser/ui/app_list/test/fake_profile_store.h"
64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/browser/profiles/profile.h"
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)FakeProfileStore::FakeProfileStore(const base::FilePath& user_data_dir)
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    : user_data_dir_(user_data_dir) {
114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)FakeProfileStore::~FakeProfileStore() {
144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void FakeProfileStore::LoadProfile(Profile* profile) {
174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  loaded_profiles_[profile->GetPath()] = profile;
184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  CallbacksByPath::iterator it = callbacks_.find(profile->GetPath());
194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (it != callbacks_.end()) {
204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    it->second.Run(profile);
214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    callbacks_.erase(it);
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void FakeProfileStore::RemoveProfile(Profile* profile) {
264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  base::FilePath path(profile->GetPath());
274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FOR_EACH_OBSERVER(ProfileInfoCacheObserver, observer_list_,
284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                    OnProfileWillBeRemoved(path));
294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  loaded_profiles_.erase(path);
304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FOR_EACH_OBSERVER(ProfileInfoCacheObserver, observer_list_,
314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                    OnProfileWasRemoved(path, base::string16()));
324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void FakeProfileStore::AddProfileObserver(
354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    ProfileInfoCacheObserver* observer) {
364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  observer_list_.AddObserver(observer);
374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void FakeProfileStore::LoadProfileAsync(
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    const base::FilePath& path,
414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    base::Callback<void(Profile*)> callback) {
424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Profile* profile = GetProfileByPath(path);
434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (profile) {
444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    callback.Run(profile);
454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return;
464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  callbacks_[path] = callback;
484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)Profile* FakeProfileStore::GetProfileByPath(
514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    const base::FilePath& path) {
524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  ProfilesByPath::const_iterator it = loaded_profiles_.find(path);
534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (it != loaded_profiles_.end())
544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return it->second;
554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return NULL;
564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)base::FilePath FakeProfileStore::GetUserDataDir() {
594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return user_data_dir_;
604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)bool FakeProfileStore::IsProfileSupervised(const base::FilePath& path) {
634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return false;
644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
65