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_PROFILES_PROFILE_LIST_DESKTOP_H_ 6#define CHROME_BROWSER_PROFILES_PROFILE_LIST_DESKTOP_H_ 7 8#include "chrome/browser/profiles/profile_list.h" 9 10#include <vector> 11 12class Browser; 13class ProfileInfoInterface; 14 15// This model represents the profiles added to desktop Chrome (as opposed to 16// Chrome OS). Profiles marked not to appear in the list will be omitted 17// throughout. 18class ProfileListDesktop : public ProfileList { 19 public: 20 explicit ProfileListDesktop(ProfileInfoInterface* profile_cache); 21 virtual ~ProfileListDesktop(); 22 23 // ProfileList overrides: 24 virtual size_t GetNumberOfItems() const OVERRIDE; 25 virtual const AvatarMenu::Item& GetItemAt(size_t index) const OVERRIDE; 26 virtual void RebuildMenu() OVERRIDE; 27 // Returns the menu index of the profile at |index| in the ProfileInfoCache. 28 // The profile index must exist, and it may not be marked as omitted from the 29 // menu. 30 virtual size_t MenuIndexFromProfileIndex(size_t index) OVERRIDE; 31 virtual void ActiveProfilePathChanged(base::FilePath& path) OVERRIDE; 32 33 private: 34 void ClearMenu(); 35 36 // The cache that provides the profile information. Weak. 37 ProfileInfoInterface* profile_info_; 38 39 // The path of the currently active profile. 40 base::FilePath active_profile_path_; 41 42 // List of built "menu items." 43 std::vector<AvatarMenu::Item*> items_; 44 45 // The number of profiles that were omitted from the list when it was built. 46 size_t omitted_item_count_; 47 48 DISALLOW_COPY_AND_ASSIGN(ProfileListDesktop); 49}; 50 51#endif // CHROME_BROWSER_PROFILES_PROFILE_LIST_DESKTOP_H_ 52