blob: 3f60d49c8ab5bae6feb61c5c7a21e6f734cf80db [file] [log] [blame]
// Copyright (c) 2012 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_controller_ash.h"
#include "ash/shell.h"
#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
#include "extensions/common/extension.h"
AppListControllerDelegateAsh::AppListControllerDelegateAsh() {}
AppListControllerDelegateAsh::~AppListControllerDelegateAsh() {}
void AppListControllerDelegateAsh::DismissView() {
DCHECK(ash::Shell::HasInstance());
if (ash::Shell::GetInstance()->GetAppListTargetVisibility())
ash::Shell::GetInstance()->ToggleAppList(NULL);
}
gfx::NativeWindow AppListControllerDelegateAsh::GetAppListWindow() {
DCHECK(ash::Shell::HasInstance());
return ash::Shell::GetInstance()->GetAppListWindow();
}
gfx::ImageSkia AppListControllerDelegateAsh::GetWindowIcon() {
return gfx::ImageSkia();
}
bool AppListControllerDelegateAsh::IsAppPinned(
const std::string& extension_id) {
return ChromeLauncherController::instance()->IsAppPinned(extension_id);
}
void AppListControllerDelegateAsh::PinApp(const std::string& extension_id) {
ChromeLauncherController::instance()->PinAppWithID(extension_id);
}
void AppListControllerDelegateAsh::UnpinApp(const std::string& extension_id) {
ChromeLauncherController::instance()->UnpinAppWithID(extension_id);
}
AppListControllerDelegate::Pinnable
AppListControllerDelegateAsh::GetPinnable() {
return ChromeLauncherController::instance()->CanPin() ? PIN_EDITABLE :
PIN_FIXED;
}
bool AppListControllerDelegateAsh::CanDoCreateShortcutsFlow() {
return false;
}
void AppListControllerDelegateAsh::DoCreateShortcutsFlow(
Profile* profile,
const std::string& extension_id) {
NOTREACHED();
}
void AppListControllerDelegateAsh::CreateNewWindow(Profile* profile,
bool incognito) {
if (incognito)
ChromeLauncherController::instance()->CreateNewIncognitoWindow();
else
ChromeLauncherController::instance()->CreateNewWindow();
}
void AppListControllerDelegateAsh::ActivateApp(
Profile* profile,
const extensions::Extension* extension,
AppListSource source,
int event_flags) {
ChromeLauncherController::instance()->ActivateApp(
extension->id(),
AppListSourceToLaunchSource(source),
event_flags);
DismissView();
}
void AppListControllerDelegateAsh::LaunchApp(
Profile* profile,
const extensions::Extension* extension,
AppListSource source,
int event_flags) {
ChromeLauncherController::instance()->LaunchApp(
extension->id(),
AppListSourceToLaunchSource(source),
event_flags);
DismissView();
}
void AppListControllerDelegateAsh::ShowForProfileByPath(
const base::FilePath& profile_path) {
// Ash doesn't have profile switching.
NOTREACHED();
}
bool AppListControllerDelegateAsh::ShouldShowUserIcon() {
return false;
}
ash::LaunchSource AppListControllerDelegateAsh::AppListSourceToLaunchSource(
AppListSource source) {
switch (source) {
case LAUNCH_FROM_APP_LIST:
return ash::LAUNCH_FROM_APP_LIST;
case LAUNCH_FROM_APP_LIST_SEARCH:
return ash::LAUNCH_FROM_APP_LIST_SEARCH;
default:
return ash::LAUNCH_FROM_UNKNOWN;
}
}