app_list_service_mac.h revision 1e9bf3e0803691d0a228da41fc608347b6db4340
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;
16template <typename T> struct DefaultSingletonTraits;
17
18namespace test {
19class 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.
24class 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 gfx::NativeWindow GetAppListWindow() OVERRIDE;
40  virtual AppListControllerDelegate* CreateControllerDelegate() OVERRIDE;
41  virtual Profile* GetCurrentAppListProfile() OVERRIDE;
42
43
44  // AppListServiceImpl overrides:
45  virtual void CreateShortcut() OVERRIDE;
46
47  // AppShimHandler overrides:
48  virtual void OnShimLaunch(apps::AppShimHandler::Host* host,
49                            apps::AppShimLaunchType launch_type,
50                            const std::vector<base::FilePath>& files) OVERRIDE;
51  virtual void OnShimClose(apps::AppShimHandler::Host* host) OVERRIDE;
52  virtual void OnShimFocus(apps::AppShimHandler::Host* host,
53                           apps::AppShimFocusType focus_type,
54                           const std::vector<base::FilePath>& files) OVERRIDE;
55  virtual void OnShimSetHidden(apps::AppShimHandler::Host* host,
56                               bool hidden) OVERRIDE;
57  virtual void OnShimQuit(apps::AppShimHandler::Host* host) OVERRIDE;
58
59 private:
60  friend struct DefaultSingletonTraits<AppListServiceMac>;
61  friend class test::AppListServiceTestApiMac;
62
63  AppListServiceMac();
64
65  base::scoped_nsobject<AppListWindowController> window_controller_;
66  base::scoped_nsobject<AppListAnimationController> animation_controller_;
67  base::scoped_nsobject<NSRunningApplication> previously_active_application_;
68  NSPoint last_start_origin_;
69  Profile* profile_;
70
71  DISALLOW_COPY_AND_ASSIGN(AppListServiceMac);
72};
73
74#endif  // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_MAC_H_
75