- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / app_list / app_list_service_mac.h
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_MAC_H_
6 #define CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_MAC_H_
7
8 #import <Cocoa/Cocoa.h>
9
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"
13
14 @class AppListAnimationController;
15 @class AppListWindowController;
16 template <typename T> struct DefaultSingletonTraits;
17
18 namespace test {
19 class AppListServiceTestApiMac;
20 }
21
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 {
26  public:
27   virtual ~AppListServiceMac();
28
29   static AppListServiceMac* GetInstance();
30
31   void ShowWindowNearDock();
32
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;
43
44
45   // AppListServiceImpl overrides:
46   virtual void CreateShortcut() OVERRIDE;
47
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;
59
60  private:
61   friend struct DefaultSingletonTraits<AppListServiceMac>;
62   friend class test::AppListServiceTestApiMac;
63
64   AppListServiceMac();
65
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_;
70   Profile* profile_;
71
72   DISALLOW_COPY_AND_ASSIGN(AppListServiceMac);
73 };
74
75 #endif  // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_MAC_H_