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_MAC_H_
6 #define CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_MAC_H_
8 #import <Cocoa/Cocoa.h>
10 #include "apps/app_shim/app_shim_handler_mac.h"
11 #include "base/mac/scoped_nsobject.h"
12 #include "chrome/browser/ui/app_list/app_list_service_impl.h"
14 @class AppListAnimationController;
15 @class AppListWindowController;
16 template <typename T> struct DefaultSingletonTraits;
19 class AppListServiceTestApiMac;
22 // AppListServiceMac manages global resources needed for the app list to
23 // operate, and controls when the app list is opened and closed.
24 class AppListServiceMac : public AppListServiceImpl,
25 public apps::AppShimHandler {
27 virtual ~AppListServiceMac();
29 static AppListServiceMac* GetInstance();
31 void ShowWindowNearDock();
33 // AppListService overrides:
34 virtual void Init(Profile* initial_profile) OVERRIDE;
35 virtual void CreateForProfile(Profile* requested_profile) OVERRIDE;
36 virtual void ShowForProfile(Profile* requested_profile) OVERRIDE;
37 virtual void DismissAppList() OVERRIDE;
38 virtual bool IsAppListVisible() const OVERRIDE;
39 virtual void EnableAppList(Profile* initial_profile) OVERRIDE;
40 virtual gfx::NativeWindow GetAppListWindow() OVERRIDE;
41 virtual AppListControllerDelegate* CreateControllerDelegate() OVERRIDE;
42 virtual Profile* GetCurrentAppListProfile() OVERRIDE;
45 // AppListServiceImpl overrides:
46 virtual void CreateShortcut() OVERRIDE;
48 // AppShimHandler overrides:
49 virtual void OnShimLaunch(apps::AppShimHandler::Host* host,
50 apps::AppShimLaunchType launch_type,
51 const std::vector<base::FilePath>& files) OVERRIDE;
52 virtual void OnShimClose(apps::AppShimHandler::Host* host) OVERRIDE;
53 virtual void OnShimFocus(apps::AppShimHandler::Host* host,
54 apps::AppShimFocusType focus_type,
55 const std::vector<base::FilePath>& files) OVERRIDE;
56 virtual void OnShimSetHidden(apps::AppShimHandler::Host* host,
57 bool hidden) OVERRIDE;
58 virtual void OnShimQuit(apps::AppShimHandler::Host* host) OVERRIDE;
61 friend struct DefaultSingletonTraits<AppListServiceMac>;
62 friend class test::AppListServiceTestApiMac;
66 base::scoped_nsobject<AppListWindowController> window_controller_;
67 base::scoped_nsobject<AppListAnimationController> animation_controller_;
68 base::scoped_nsobject<NSRunningApplication> previously_active_application_;
69 NSPoint last_start_origin_;
72 DISALLOW_COPY_AND_ASSIGN(AppListServiceMac);
75 #endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_MAC_H_