1// Copyright (c) 2012 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_controller_ash.h" 6 7#include "ash/shell.h" 8#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" 9#include "extensions/common/extension.h" 10#include "ui/app_list/views/app_list_view.h" 11 12AppListControllerDelegateAsh::AppListControllerDelegateAsh() {} 13 14AppListControllerDelegateAsh::~AppListControllerDelegateAsh() {} 15 16void AppListControllerDelegateAsh::DismissView() { 17 DCHECK(ash::Shell::HasInstance()); 18 ash::Shell::GetInstance()->DismissAppList(); 19} 20 21gfx::NativeWindow AppListControllerDelegateAsh::GetAppListWindow() { 22 DCHECK(ash::Shell::HasInstance()); 23 return ash::Shell::GetInstance()->GetAppListWindow(); 24} 25 26gfx::Rect AppListControllerDelegateAsh::GetAppListBounds() { 27 app_list::AppListView* app_list_view = 28 ash::Shell::GetInstance()->GetAppListView(); 29 if (app_list_view) 30 return app_list_view->GetBoundsInScreen(); 31 return gfx::Rect(); 32} 33 34gfx::ImageSkia AppListControllerDelegateAsh::GetWindowIcon() { 35 return gfx::ImageSkia(); 36} 37 38bool AppListControllerDelegateAsh::IsAppPinned( 39 const std::string& extension_id) { 40 return ChromeLauncherController::instance()->IsAppPinned(extension_id); 41} 42 43void AppListControllerDelegateAsh::PinApp(const std::string& extension_id) { 44 ChromeLauncherController::instance()->PinAppWithID(extension_id); 45} 46 47void AppListControllerDelegateAsh::UnpinApp(const std::string& extension_id) { 48 ChromeLauncherController::instance()->UnpinAppWithID(extension_id); 49} 50 51AppListControllerDelegate::Pinnable 52 AppListControllerDelegateAsh::GetPinnable() { 53 return ChromeLauncherController::instance()->CanPin() ? PIN_EDITABLE : 54 PIN_FIXED; 55} 56 57void AppListControllerDelegateAsh::OnShowChildDialog() { 58 app_list::AppListView* app_list_view = 59 ash::Shell::GetInstance()->GetAppListView(); 60 if (app_list_view) 61 app_list_view->SetAppListOverlayVisible(true); 62} 63 64void AppListControllerDelegateAsh::OnCloseChildDialog() { 65 app_list::AppListView* app_list_view = 66 ash::Shell::GetInstance()->GetAppListView(); 67 if (app_list_view) 68 app_list_view->SetAppListOverlayVisible(false); 69} 70 71bool AppListControllerDelegateAsh::CanDoCreateShortcutsFlow() { 72 return false; 73} 74 75void AppListControllerDelegateAsh::DoCreateShortcutsFlow( 76 Profile* profile, 77 const std::string& extension_id) { 78 NOTREACHED(); 79} 80 81void AppListControllerDelegateAsh::CreateNewWindow(Profile* profile, 82 bool incognito) { 83 if (incognito) 84 ChromeLauncherController::instance()->CreateNewIncognitoWindow(); 85 else 86 ChromeLauncherController::instance()->CreateNewWindow(); 87} 88 89void AppListControllerDelegateAsh::ActivateApp( 90 Profile* profile, 91 const extensions::Extension* extension, 92 AppListSource source, 93 int event_flags) { 94 ChromeLauncherController::instance()->ActivateApp( 95 extension->id(), 96 AppListSourceToLaunchSource(source), 97 event_flags); 98 99 DismissView(); 100} 101 102void AppListControllerDelegateAsh::LaunchApp( 103 Profile* profile, 104 const extensions::Extension* extension, 105 AppListSource source, 106 int event_flags) { 107 ChromeLauncherController::instance()->LaunchApp( 108 extension->id(), 109 AppListSourceToLaunchSource(source), 110 event_flags); 111 DismissView(); 112} 113 114void AppListControllerDelegateAsh::ShowForProfileByPath( 115 const base::FilePath& profile_path) { 116 // Ash doesn't have profile switching. 117 NOTREACHED(); 118} 119 120bool AppListControllerDelegateAsh::ShouldShowUserIcon() { 121 return false; 122} 123 124ash::LaunchSource AppListControllerDelegateAsh::AppListSourceToLaunchSource( 125 AppListSource source) { 126 switch (source) { 127 case LAUNCH_FROM_APP_LIST: 128 return ash::LAUNCH_FROM_APP_LIST; 129 case LAUNCH_FROM_APP_LIST_SEARCH: 130 return ash::LAUNCH_FROM_APP_LIST_SEARCH; 131 default: 132 return ash::LAUNCH_FROM_UNKNOWN; 133 } 134} 135