app_list_service_mac.h revision 58537e28ecd584eab876aee8be7156509866d23a
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
42  // AppListServiceImpl overrides:
43  virtual void CreateShortcut() OVERRIDE;
44
45  // AppShimHandler overrides:
46  virtual void OnShimLaunch(apps::AppShimHandler::Host* host,
47                            apps::AppShimLaunchType launch_type,
48                            const std::vector<base::FilePath>& files) OVERRIDE;
49  virtual void OnShimClose(apps::AppShimHandler::Host* host) OVERRIDE;
50  virtual void OnShimFocus(apps::AppShimHandler::Host* host,
51                           apps::AppShimFocusType focus_type,
52                           const std::vector<base::FilePath>& files) OVERRIDE;
53  virtual void OnShimSetHidden(apps::AppShimHandler::Host* host,
54                               bool hidden) OVERRIDE;
55  virtual void OnShimQuit(apps::AppShimHandler::Host* host) OVERRIDE;
56
57 private:
58  friend struct DefaultSingletonTraits<AppListServiceMac>;
59  friend class test::AppListServiceTestApiMac;
60
61  AppListServiceMac();
62
63  base::scoped_nsobject<AppListWindowController> window_controller_;
64  base::scoped_nsobject<AppListAnimationController> animation_controller_;
65  base::scoped_nsobject<NSRunningApplication> previously_active_application_;
66  NSPoint last_start_origin_;
67
68  DISALLOW_COPY_AND_ASSIGN(AppListServiceMac);
69};
70
71#endif  // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_MAC_H_
72