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   if (!ash::Shell::GetInstance()->GetAppListTargetVisibility())
     39     ash::Shell::GetInstance()->ToggleAppList(NULL);
     40 }
     41 
     42 bool AppListServiceAsh::IsAppListVisible() const {
     43   return ash::Shell::GetInstance()->GetAppListTargetVisibility();
     44 }
     45 
     46 void AppListServiceAsh::DismissAppList() {
     47   if (IsAppListVisible())
     48     ash::Shell::GetInstance()->ToggleAppList(NULL);
     49 }
     50 
     51 void AppListServiceAsh::EnableAppList(Profile* initial_profile,
     52                                       AppListEnableSource enable_source) {}
     53 
     54 gfx::NativeWindow AppListServiceAsh::GetAppListWindow() {
     55   if (ash::Shell::HasInstance())
     56     return ash::Shell::GetInstance()->GetAppListWindow();
     57   return NULL;
     58 }
     59 
     60 Profile* AppListServiceAsh::GetCurrentAppListProfile() {
     61   return ChromeLauncherController::instance()->profile();
     62 }
     63 
     64 AppListControllerDelegate* AppListServiceAsh::GetControllerDelegate() {
     65   return controller_delegate_.get();
     66 }
     67 
     68 // Windows and Linux Ash additionally supports a native UI. See
     69 // app_list_service_{win,linux}.cc.
     70 #if defined(OS_CHROMEOS)
     71 
     72 // static
     73 AppListService* AppListService::Get(chrome::HostDesktopType desktop_type) {
     74   return AppListServiceAsh::GetInstance();
     75 }
     76 
     77 // static
     78 void AppListService::InitAll(Profile* initial_profile) {
     79   AppListServiceAsh::GetInstance()->Init(initial_profile);
     80 }
     81 
     82 #endif  // !defined(OS_WIN)
     83