• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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_SHORTCUT_MANAGER_H_
6 #define CHROME_BROWSER_PROFILES_PROFILE_SHORTCUT_MANAGER_H_
7 
8 #include "base/callback.h"
9 #include "base/files/file_path.h"
10 #include "base/strings/string16.h"
11 #include "chrome/browser/profiles/profile_info_cache.h"
12 
13 class ProfileManager;
14 
15 namespace base {
16 class CommandLine;
17 }
18 
19 class ProfileShortcutManager {
20  public:
21   virtual ~ProfileShortcutManager();
22 
23   // Create a profile icon for the profile with path |profile_path|.
24   virtual void CreateOrUpdateProfileIcon(
25       const base::FilePath& profile_path) = 0;
26 
27   // Create a profile shortcut for the profile with path |profile_path|, plus
28   // update the original profile shortcut if |profile_path| is the second
29   // profile created.
30   virtual void CreateProfileShortcut(const base::FilePath& profile_path) = 0;
31 
32   // Removes any desktop profile shortcuts for the profile corresponding to
33   // |profile_path|.
34   virtual void RemoveProfileShortcuts(const base::FilePath& profile_path) = 0;
35 
36   // Checks if a profile at |profile_path| has any shortcuts and invokes
37   // |callback| with the bool result some time later. Does not consider
38   // non-profile specific shortcuts.
39   virtual void HasProfileShortcuts(
40       const base::FilePath& profile_path,
41       const base::Callback<void(bool)>& callback) = 0;
42 
43   // Populates the |command_line|, |name| and |icon_path| that a shortcut for
44   // the given |profile_path| should use.
45   virtual void GetShortcutProperties(const base::FilePath& profile_path,
46                                      base::CommandLine* command_line,
47                                      base::string16* name,
48                                      base::FilePath* icon_path) = 0;
49 
50   static bool IsFeatureEnabled();
51   static ProfileShortcutManager* Create(ProfileManager* manager);
52 
53  protected:
54   ProfileShortcutManager();
55 
56  private:
57   DISALLOW_COPY_AND_ASSIGN(ProfileShortcutManager);
58 };
59 
60 #endif  // CHROME_BROWSER_PROFILES_PROFILE_SHORTCUT_MANAGER_H_
61