blob: 59f599a75d02236193745cc47178f8f7d55eda14 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/ash/app_list/app_list_service_ash.h"
#include "ash/shell.h"
#include "base/files/file_path.h"
#include "base/memory/singleton.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/ash/app_list/app_list_controller_ash.h"
#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
// static
AppListServiceAsh* AppListServiceAsh::GetInstance() {
return Singleton<AppListServiceAsh,
LeakySingletonTraits<AppListServiceAsh> >::get();
}
AppListServiceAsh::AppListServiceAsh()
: controller_delegate_(new AppListControllerDelegateAsh()) {
}
AppListServiceAsh::~AppListServiceAsh() {
}
base::FilePath AppListServiceAsh::GetProfilePath(
const base::FilePath& user_data_dir) {
return ChromeLauncherController::instance()->profile()->GetPath();
}
void AppListServiceAsh::CreateForProfile(Profile* default_profile) {}
void AppListServiceAsh::ShowForProfile(Profile* default_profile) {
// This may not work correctly if the profile passed in is different from the
// one the ash Shell is currently using.
// TODO(ananta): Handle profile changes correctly when !defined(OS_CHROMEOS).
ash::Shell::GetInstance()->ShowAppList(NULL);
}
bool AppListServiceAsh::IsAppListVisible() const {
return ash::Shell::GetInstance()->GetAppListTargetVisibility();
}
void AppListServiceAsh::DismissAppList() {
ash::Shell::GetInstance()->DismissAppList();
}
void AppListServiceAsh::EnableAppList(Profile* initial_profile,
AppListEnableSource enable_source) {}
gfx::NativeWindow AppListServiceAsh::GetAppListWindow() {
if (ash::Shell::HasInstance())
return ash::Shell::GetInstance()->GetAppListWindow();
return NULL;
}
Profile* AppListServiceAsh::GetCurrentAppListProfile() {
return ChromeLauncherController::instance()->profile();
}
AppListControllerDelegate* AppListServiceAsh::GetControllerDelegate() {
return controller_delegate_.get();
}
// Windows and Linux Ash additionally supports a native UI. See
// app_list_service_{win,linux}.cc.
#if defined(OS_CHROMEOS)
// static
AppListService* AppListService::Get(chrome::HostDesktopType desktop_type) {
return AppListServiceAsh::GetInstance();
}
// static
void AppListService::InitAll(Profile* initial_profile) {
AppListServiceAsh::GetInstance()->Init(initial_profile);
}
#endif // !defined(OS_WIN)