#ifndef CHROME_BROWSER_UI_VIEWS_APP_LIST_LINUX_APP_LIST_SERVICE_LINUX_H_
#define CHROME_BROWSER_UI_VIEWS_APP_LIST_LINUX_APP_LIST_SERVICE_LINUX_H_
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/ui/app_list/app_list_service_impl.h"
template <typename T> struct DefaultSingletonTraits;
class AppListShower;
class AppListServiceLinux : public AppListServiceImpl {
 public:
  virtual ~AppListServiceLinux();
  static AppListServiceLinux* GetInstance();
  void set_can_close(bool can_close);
  void OnAppListClosing();
  
  virtual void Init(Profile* initial_profile) OVERRIDE;
  virtual void CreateForProfile(Profile* requested_profile) OVERRIDE;
  virtual void ShowForProfile(Profile* requested_profile) OVERRIDE;
  virtual void DismissAppList() OVERRIDE;
  virtual bool IsAppListVisible() const OVERRIDE;
  virtual gfx::NativeWindow GetAppListWindow() OVERRIDE;
  virtual Profile* GetCurrentAppListProfile() OVERRIDE;
  virtual AppListControllerDelegate* GetControllerDelegate() OVERRIDE;
  
  virtual void CreateShortcut() OVERRIDE;
 private:
  friend struct DefaultSingletonTraits<AppListServiceLinux>;
  AppListServiceLinux();
  
  scoped_ptr<AppListShower> shower_;
  scoped_ptr<AppListControllerDelegate> controller_delegate_;
  DISALLOW_COPY_AND_ASSIGN(AppListServiceLinux);
};
#endif