NaCl: Update revision in DEPS, r12770 -> r12773
[chromium-blink-merge.git] / chrome / browser / ui / app_list / app_list_service_impl.h
blob213da34fc9c82461d071b5dfc26a7fcf8fb04dbc
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.
5 #ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_IMPL_H_
6 #define CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_IMPL_H_
8 #include <string>
10 #include "base/basictypes.h"
11 #include "base/command_line.h"
12 #include "base/compiler_specific.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "base/memory/weak_ptr.h"
15 #include "chrome/browser/profiles/profile.h"
16 #include "chrome/browser/profiles/profile_info_cache_observer.h"
17 #include "chrome/browser/ui/app_list/app_list_service.h"
18 #include "chrome/browser/ui/app_list/keep_alive_service.h"
19 #include "chrome/browser/ui/app_list/profile_loader.h"
21 class ProfileStore;
23 namespace base {
24 class FilePath;
27 // Parts of the AppListService implementation shared between platforms.
28 class AppListServiceImpl : public AppListService,
29 public ProfileInfoCacheObserver {
30 public:
31 virtual ~AppListServiceImpl();
33 // Constructor used for testing.
34 AppListServiceImpl(const CommandLine& command_line,
35 PrefService* local_state,
36 scoped_ptr<ProfileStore> profile_store,
37 scoped_ptr<KeepAliveService> keep_alive_service);
39 void RecordAppListLaunch();
40 static void RecordAppListAppLaunch();
42 // AppListService overrides:
43 virtual void SetAppListNextPaintCallback(void (*callback)()) OVERRIDE;
44 virtual void HandleFirstRun() OVERRIDE;
45 virtual void Init(Profile* initial_profile) OVERRIDE;
46 virtual base::FilePath GetProfilePath(
47 const base::FilePath& user_data_dir) OVERRIDE;
48 virtual void SetProfilePath(const base::FilePath& profile_path) OVERRIDE;
49 virtual void Show() OVERRIDE;
50 virtual void AutoShowForProfile(Profile* requested_profile) OVERRIDE;
51 virtual void EnableAppList(Profile* initial_profile,
52 AppListEnableSource enable_source) OVERRIDE;
54 protected:
55 AppListServiceImpl();
57 void InvalidatePendingProfileLoads();
58 ProfileLoader& profile_loader() { return *profile_loader_; }
59 const ProfileLoader& profile_loader() const { return *profile_loader_; }
61 // Perform startup checks shared between desktop implementations of the app
62 // list. Currently this checks command line flags to enable or disable the app
63 // list, and records UMA stats delayed from a previous Chrome process.
64 void PerformStartupChecks(Profile* initial_profile);
66 // Create a platform-specific shortcut for the app list.
67 virtual void CreateShortcut();
69 private:
70 static void SendAppListStats();
72 // Loads a profile asynchronously and calls OnProfileLoaded() when done.
73 void LoadProfileAsync(const base::FilePath& profile_file_path);
75 // Callback for asynchronous profile load.
76 void OnProfileLoaded(int profile_load_sequence_id,
77 Profile* profile,
78 Profile::CreateStatus status);
80 // ProfileInfoCacheObserver overrides:
81 virtual void OnProfileWillBeRemoved(
82 const base::FilePath& profile_path) OVERRIDE;
84 scoped_ptr<ProfileStore> profile_store_;
85 base::WeakPtrFactory<AppListServiceImpl> weak_factory_;
86 CommandLine command_line_;
87 PrefService* local_state_;
88 scoped_ptr<ProfileLoader> profile_loader_;
90 DISALLOW_COPY_AND_ASSIGN(AppListServiceImpl);
93 #endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_IMPL_H_