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