- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / ash / app_list / app_list_controller_ash.cc
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
10 AppListControllerDelegateAsh::AppListControllerDelegateAsh() {}
11
12 AppListControllerDelegateAsh::~AppListControllerDelegateAsh() {}
13
14 void AppListControllerDelegateAsh::DismissView() {
15   DCHECK(ash::Shell::HasInstance());
16   if (ash::Shell::GetInstance()->GetAppListTargetVisibility())
17     ash::Shell::GetInstance()->ToggleAppList(NULL);
18 }
19
20 gfx::NativeWindow AppListControllerDelegateAsh::GetAppListWindow() {
21   DCHECK(ash::Shell::HasInstance());
22   return ash::Shell::GetInstance()->GetAppListWindow();
23 }
24
25 gfx::ImageSkia AppListControllerDelegateAsh::GetWindowIcon() {
26   return gfx::ImageSkia();
27 }
28
29 bool AppListControllerDelegateAsh::IsAppPinned(
30     const std::string& extension_id) {
31   return ChromeLauncherController::instance()->IsAppPinned(extension_id);
32 }
33
34 void AppListControllerDelegateAsh::PinApp(const std::string& extension_id) {
35   ChromeLauncherController::instance()->PinAppWithID(extension_id);
36 }
37
38 void AppListControllerDelegateAsh::UnpinApp(const std::string& extension_id) {
39   ChromeLauncherController::instance()->UnpinAppWithID(extension_id);
40 }
41
42 AppListControllerDelegate::Pinnable
43     AppListControllerDelegateAsh::GetPinnable() {
44   return ChromeLauncherController::instance()->CanPin() ? PIN_EDITABLE :
45       PIN_FIXED;
46 }
47
48 bool AppListControllerDelegateAsh::CanDoCreateShortcutsFlow() {
49   return false;
50 }
51
52 void AppListControllerDelegateAsh::DoCreateShortcutsFlow(
53     Profile* profile,
54     const std::string& extension_id) {
55   NOTREACHED();
56 }
57
58 void AppListControllerDelegateAsh::CreateNewWindow(Profile* profile,
59                                                    bool incognito) {
60   if (incognito)
61     ChromeLauncherController::instance()->CreateNewIncognitoWindow();
62   else
63     ChromeLauncherController::instance()->CreateNewWindow();
64 }
65
66 void AppListControllerDelegateAsh::ActivateApp(
67     Profile* profile,
68     const extensions::Extension* extension,
69     AppListSource source,
70     int event_flags) {
71   ChromeLauncherController::instance()->ActivateApp(
72       extension->id(),
73       AppListSourceToLaunchSource(source),
74       event_flags);
75
76   DismissView();
77 }
78
79 void AppListControllerDelegateAsh::LaunchApp(
80     Profile* profile,
81     const extensions::Extension* extension,
82     AppListSource source,
83     int event_flags) {
84   ChromeLauncherController::instance()->LaunchApp(
85       extension->id(),
86       AppListSourceToLaunchSource(source),
87       event_flags);
88   DismissView();
89 }
90
91 void AppListControllerDelegateAsh::ShowForProfileByPath(
92     const base::FilePath& profile_path) {
93   // Ash doesn't have profile switching.
94   NOTREACHED();
95 }
96
97 bool AppListControllerDelegateAsh::ShouldShowUserIcon() {
98   return false;
99 }
100
101 ash::LaunchSource AppListControllerDelegateAsh::AppListSourceToLaunchSource(
102     AppListSource source) {
103   switch (source) {
104     case LAUNCH_FROM_APP_LIST:
105       return ash::LAUNCH_FROM_APP_LIST;
106     case LAUNCH_FROM_APP_LIST_SEARCH:
107       return ash::LAUNCH_FROM_APP_LIST_SEARCH;
108     default:
109       return ash::LAUNCH_FROM_UNKNOWN;
110   }
111 }