app_list_service.h revision f2477e01787aa58f445919b809d89e252beef54f
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_UI_APP_LIST_APP_LIST_SERVICE_H_
6#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "base/compiler_specific.h"
12#include "chrome/browser/ui/host_desktop.h"
13#include "ui/gfx/native_widget_types.h"
14
15class AppListControllerDelegate;
16class CommandLine;
17class PrefRegistrySimple;
18class Profile;
19
20namespace base {
21class FilePath;
22}
23
24namespace gfx {
25class ImageSkia;
26}
27
28class AppListService {
29 public:
30  // Get the AppListService for the current platform and specified
31  // |desktop_type|.
32  static AppListService* Get(chrome::HostDesktopType desktop_type);
33
34  // Call Init for all AppListService instances on this platform.
35  static void InitAll(Profile* initial_profile);
36
37  static void RegisterPrefs(PrefRegistrySimple* registry);
38
39  static void RecordShowTimings(const CommandLine& command_line);
40
41  // Indicates that |callback| should be called next time the app list is
42  // painted.
43  virtual void SetAppListNextPaintCallback(void (*callback)()) = 0;
44
45  // Perform Chrome first run logic. This is executed before Chrome's threads
46  // have been created.
47  virtual void HandleFirstRun() = 0;
48
49  virtual base::FilePath GetProfilePath(
50      const base::FilePath& user_data_dir) = 0;
51  virtual void SetProfilePath(const base::FilePath& profile_path) = 0;
52
53  // Show the app list for the profile configured in the user data dir for the
54  // current browser process.
55  virtual void Show() = 0;
56
57  // Create the app list UI, and maintain its state, but do not show it.
58  virtual void CreateForProfile(Profile* requested_profile) = 0;
59
60  // Show the app list for the given profile. If it differs from the profile the
61  // app list is currently showing, repopulate the app list and save the new
62  // profile to local prefs as the default app list profile.
63  virtual void ShowForProfile(Profile* requested_profile) = 0;
64
65  // Dismiss the app list.
66  virtual void DismissAppList() = 0;
67
68  // Get the profile the app list is currently showing.
69  virtual Profile* GetCurrentAppListProfile() = 0;
70
71  // Returns true if the app list is visible.
72  virtual bool IsAppListVisible() const = 0;
73
74  // Enable the app list. What this does specifically will depend on the host
75  // operating system and shell.
76  virtual void EnableAppList(Profile* initial_profile) = 0;
77
78  // Get the window the app list is in, or NULL if the app list isn't visible.
79  virtual gfx::NativeWindow GetAppListWindow() = 0;
80
81  // Returns a pointer to the platform specific AppListControllerDelegate.
82  virtual AppListControllerDelegate* GetControllerDelegate() = 0;
83
84 protected:
85  AppListService() {}
86  virtual ~AppListService() {}
87
88  // Do any once off initialization needed for the app list.
89  virtual void Init(Profile* initial_profile) = 0;
90
91 private:
92  DISALLOW_COPY_AND_ASSIGN(AppListService);
93};
94
95#endif  // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_H_
96