• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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_INFO_INTERFACE_H_
6 #define CHROME_BROWSER_PROFILES_PROFILE_INFO_INTERFACE_H_
7 
8 #include "base/files/file_path.h"
9 #include "base/strings/string16.h"
10 
11 namespace base {
12 class Time;
13 }
14 
15 namespace gfx {
16 class Image;
17 }
18 
19 // This abstract interface is used to query the profiles backend for information
20 // about the different profiles. Its sole concrete implementation is the
21 // ProfileInfoCache. This interface exists largely to assist in testing.
22 class ProfileInfoInterface {
23  public:
24   virtual size_t GetNumberOfProfiles() const = 0;
25 
26   virtual size_t GetIndexOfProfileWithPath(
27       const base::FilePath& profile_path) const = 0;
28 
29   virtual base::Time GetProfileActiveTimeAtIndex(size_t index) const = 0;
30 
31   virtual base::string16 GetNameOfProfileAtIndex(size_t index) const = 0;
32 
33   virtual base::string16 GetShortcutNameOfProfileAtIndex(
34       size_t index) const = 0;
35 
36   virtual base::FilePath GetPathOfProfileAtIndex(size_t index) const = 0;
37 
38   virtual base::string16 GetUserNameOfProfileAtIndex(size_t index) const = 0;
39 
40   virtual const gfx::Image& GetAvatarIconOfProfileAtIndex(
41       size_t index) const = 0;
42 
43   virtual std::string GetLocalAuthCredentialsOfProfileAtIndex(
44       size_t index) const = 0;
45 
46   // Returns true if the profile at the given index is currently running any
47   // background apps.
48   virtual bool GetBackgroundStatusOfProfileAtIndex(
49       size_t index) const = 0;
50 
51   virtual base::string16 GetGAIANameOfProfileAtIndex(size_t index) const = 0;
52 
53   virtual base::string16 GetGAIAGivenNameOfProfileAtIndex(
54       size_t index) const = 0;
55 
56   virtual const gfx::Image* GetGAIAPictureOfProfileAtIndex(
57       size_t index) const = 0;
58 
59   // Checks if the GAIA picture should be used as the profile's avatar icon.
60   virtual bool IsUsingGAIAPictureOfProfileAtIndex(size_t index) const = 0;
61 
62   virtual bool ProfileIsSupervisedAtIndex(size_t index) const = 0;
63 
64   // Returns true if the profile should be omitted from the desktop profile
65   // list (see ProfileListDesktop), so it won't appear in the avatar menu.
66   virtual bool IsOmittedProfileAtIndex(size_t index) const = 0;
67 
68   virtual std::string GetSupervisedUserIdOfProfileAtIndex(
69       size_t index) const = 0;
70 
71   // This profile is associated with an account but has been signed-out.
72   virtual bool ProfileIsSigninRequiredAtIndex(size_t index) const = 0;
73 
74   // Profile is known to be ephemeral and should be deleted when closed.
75   virtual bool ProfileIsEphemeralAtIndex(size_t index) const = 0;
76 
77   // Returns true if the profile is using the name it was assigned by default
78   // at creation (either the old-style "Lemonade" name, or the new "Profile %d"
79   // style name).
80   virtual bool ProfileIsUsingDefaultNameAtIndex(size_t index) const = 0;
81 
82   // Returns true if the user has never manually selected a profile avatar.
83   virtual bool ProfileIsUsingDefaultAvatarAtIndex(size_t index) const = 0;
84 
85  protected:
~ProfileInfoInterface()86   virtual ~ProfileInfoInterface() {}
87 };
88 
89 #endif  // CHROME_BROWSER_PROFILES_PROFILE_INFO_INTERFACE_H_
90