Home | History | Annotate | Download | only in app_list
      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
     15 AppListServiceAsh* AppListServiceAsh::GetInstance() {
     16   return Singleton<AppListServiceAsh,
     17                    LeakySingletonTraits<AppListServiceAsh> >::get();
     18 }
     19 
     20 AppListServiceAsh::AppListServiceAsh()
     21     : controller_delegate_(new AppListControllerDelegateAsh()) {
     22 }
     23 
     24 AppListServiceAsh::~AppListServiceAsh() {
     25 }
     26 
     27 base::FilePath AppListServiceAsh::GetProfilePath(
     28     const base::FilePath& user_data_dir) {
     29   return ChromeLauncherController::instance()->profile()->GetPath();
     30 }
     31 
     32 void AppListServiceAsh::CreateForProfile(Profile* default_profile) {}
     33 
     34 void 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   ash::Shell::GetInstance()->ShowAppList(NULL);
     39 }
     40 
     41 bool AppListServiceAsh::IsAppListVisible() const {
     42   return ash::Shell::GetInstance()->GetAppListTargetVisibility();
     43 }
     44 
     45 void AppListServiceAsh::DismissAppList() {
     46   ash::Shell::GetInstance()->DismissAppList();
     47 }
     48 
     49 void AppListServiceAsh::EnableAppList(Profile* initial_profile,
     50                                       AppListEnableSource enable_source) {}
     51 
     52 gfx::NativeWindow AppListServiceAsh::GetAppListWindow() {
     53   if (ash::Shell::HasInstance())
     54     return ash::Shell::GetInstance()->GetAppListWindow();
     55   return NULL;
     56 }
     57 
     58 Profile* AppListServiceAsh::GetCurrentAppListProfile() {
     59   return ChromeLauncherController::instance()->profile();
     60 }
     61 
     62 AppListControllerDelegate* AppListServiceAsh::GetControllerDelegate() {
     63   return controller_delegate_.get();
     64 }
     65 
     66 void AppListServiceAsh::DestroyAppList() {
     67   // On Ash, the app list is torn down whenever it is dismissed, so just ensure
     68   // that it is dismissed.
     69   DismissAppList();
     70 }
     71 
     72 // Windows and Linux Ash additionally supports a native UI. See
     73 // app_list_service_{win,linux}.cc.
     74 #if defined(OS_CHROMEOS)
     75 
     76 // static
     77 AppListService* AppListService::Get(chrome::HostDesktopType desktop_type) {
     78   return AppListServiceAsh::GetInstance();
     79 }
     80 
     81 // static
     82 void AppListService::InitAll(Profile* initial_profile) {
     83   AppListServiceAsh::GetInstance()->Init(initial_profile);
     84 }
     85 
     86 #endif  // !defined(OS_WIN)
     87