app_list_service_ash.cc revision 0529e5d033099cbfc42635f6f6183833b09dff6e
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#include "chrome/browser/ui/ash/app_list/app_list_service_ash.h" 6 7#include "ash/shell.h" 8#include "base/files/file_path.h" 9#include "base/memory/singleton.h" 10#include "chrome/browser/profiles/profile.h" 11#include "chrome/browser/ui/ash/app_list/app_list_controller_ash.h" 12#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" 13 14// static 15AppListServiceAsh* AppListServiceAsh::GetInstance() { 16 return Singleton<AppListServiceAsh, 17 LeakySingletonTraits<AppListServiceAsh> >::get(); 18} 19 20AppListServiceAsh::AppListServiceAsh() 21 : controller_delegate_(new AppListControllerDelegateAsh()) { 22} 23 24AppListServiceAsh::~AppListServiceAsh() { 25} 26 27base::FilePath AppListServiceAsh::GetProfilePath( 28 const base::FilePath& user_data_dir) { 29 return ChromeLauncherController::instance()->profile()->GetPath(); 30} 31 32void AppListServiceAsh::CreateForProfile(Profile* default_profile) {} 33 34void AppListServiceAsh::ShowForProfile(Profile* default_profile) { 35 // This may not work correctly if the profile passed in is different from the 36 // one the ash Shell is currently using. 37 // TODO(ananta): Handle profile changes correctly when !defined(OS_CHROMEOS). 38 if (!ash::Shell::GetInstance()->GetAppListTargetVisibility()) 39 ash::Shell::GetInstance()->ToggleAppList(NULL); 40} 41 42bool AppListServiceAsh::IsAppListVisible() const { 43 return ash::Shell::GetInstance()->GetAppListTargetVisibility(); 44} 45 46void AppListServiceAsh::DismissAppList() { 47 if (IsAppListVisible()) 48 ash::Shell::GetInstance()->ToggleAppList(NULL); 49} 50 51void AppListServiceAsh::EnableAppList(Profile* initial_profile, 52 AppListEnableSource enable_source) {} 53 54gfx::NativeWindow AppListServiceAsh::GetAppListWindow() { 55 if (ash::Shell::HasInstance()) 56 return ash::Shell::GetInstance()->GetAppListWindow(); 57 return NULL; 58} 59 60Profile* AppListServiceAsh::GetCurrentAppListProfile() { 61 return ChromeLauncherController::instance()->profile(); 62} 63 64AppListControllerDelegate* AppListServiceAsh::GetControllerDelegate() { 65 return controller_delegate_.get(); 66} 67 68// Windows Ash additionally supports a native UI. See app_list_service_win.cc. 69#if !defined(OS_WIN) 70 71// static 72AppListService* AppListService::Get(chrome::HostDesktopType desktop_type) { 73 return AppListServiceAsh::GetInstance(); 74} 75 76// static 77void AppListService::InitAll(Profile* initial_profile) { 78 AppListServiceAsh::GetInstance()->Init(initial_profile); 79} 80 81#endif // !defined(OS_WIN) 82