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 12 class Browser; 13 class 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. 18 class 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