OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/ash/launcher/launcher_context_menu.h" | 5 #include "chrome/browser/ui/ash/launcher/launcher_context_menu.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "ash/common/session/session_state_delegate.h" | 9 #include "ash/common/session/session_state_delegate.h" |
10 #include "ash/common/shelf/shelf_model.h" | 10 #include "ash/common/shelf/shelf_model.h" |
11 #include "ash/common/shelf/shelf_widget.h" | |
12 #include "ash/common/shelf/wm_shelf.h" | 11 #include "ash/common/shelf/wm_shelf.h" |
13 #include "ash/common/strings/grit/ash_strings.h" | 12 #include "ash/common/strings/grit/ash_strings.h" |
14 #include "ash/common/wallpaper/wallpaper_delegate.h" | 13 #include "ash/common/wallpaper/wallpaper_delegate.h" |
15 #include "ash/common/wm_shell.h" | 14 #include "ash/common/wm_shell.h" |
16 #include "build/build_config.h" | 15 #include "build/build_config.h" |
17 #include "chrome/browser/fullscreen.h" | 16 #include "chrome/browser/fullscreen.h" |
18 #include "chrome/browser/profiles/profile.h" | 17 #include "chrome/browser/profiles/profile.h" |
19 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" | 18 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" |
20 #include "chrome/browser/ui/ash/launcher/arc_launcher_context_menu.h" | 19 #include "chrome/browser/ui/ash/launcher/arc_launcher_context_menu.h" |
21 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h" | 20 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h" |
(...skipping 21 matching lines...) Expand all Loading... |
43 const ash::ShelfItem* item, | 42 const ash::ShelfItem* item, |
44 ash::WmShelf* wm_shelf) { | 43 ash::WmShelf* wm_shelf) { |
45 DCHECK(controller); | 44 DCHECK(controller); |
46 DCHECK(wm_shelf); | 45 DCHECK(wm_shelf); |
47 // Create DesktopShellLauncherContextMenu if no item is selected. | 46 // Create DesktopShellLauncherContextMenu if no item is selected. |
48 if (!item || item->id == 0) | 47 if (!item || item->id == 0) |
49 return new DesktopShellLauncherContextMenu(controller, item, wm_shelf); | 48 return new DesktopShellLauncherContextMenu(controller, item, wm_shelf); |
50 | 49 |
51 // Create ArcLauncherContextMenu if the item is an Arc app. | 50 // Create ArcLauncherContextMenu if the item is an Arc app. |
52 const std::string& app_id = controller->GetAppIDForShelfID(item->id); | 51 const std::string& app_id = controller->GetAppIDForShelfID(item->id); |
53 ArcAppListPrefs* arc_prefs = ArcAppListPrefs::Get(controller->GetProfile()); | 52 ArcAppListPrefs* arc_prefs = ArcAppListPrefs::Get(controller->profile()); |
54 if (arc_prefs && arc_prefs->IsRegistered(app_id)) | 53 if (arc_prefs && arc_prefs->IsRegistered(app_id)) |
55 return new ArcLauncherContextMenu(controller, item, wm_shelf); | 54 return new ArcLauncherContextMenu(controller, item, wm_shelf); |
56 | 55 |
57 // Create ExtensionLauncherContextMenu for the item. | 56 // Create ExtensionLauncherContextMenu for the item. |
58 return new ExtensionLauncherContextMenu(controller, item, wm_shelf); | 57 return new ExtensionLauncherContextMenu(controller, item, wm_shelf); |
59 } | 58 } |
60 | 59 |
61 LauncherContextMenu::LauncherContextMenu( | 60 LauncherContextMenu::LauncherContextMenu( |
62 ChromeLauncherControllerImpl* controller, | 61 ChromeLauncherControllerImpl* controller, |
63 const ash::ShelfItem* item, | 62 const ash::ShelfItem* item, |
(...skipping 29 matching lines...) Expand all Loading... |
93 | 92 |
94 bool LauncherContextMenu::IsCommandIdEnabled(int command_id) const { | 93 bool LauncherContextMenu::IsCommandIdEnabled(int command_id) const { |
95 switch (command_id) { | 94 switch (command_id) { |
96 case MENU_PIN: | 95 case MENU_PIN: |
97 return controller_->IsPinnable(item_.id); | 96 return controller_->IsPinnable(item_.id); |
98 case MENU_CHANGE_WALLPAPER: | 97 case MENU_CHANGE_WALLPAPER: |
99 return ash::WmShell::Get() | 98 return ash::WmShell::Get() |
100 ->wallpaper_delegate() | 99 ->wallpaper_delegate() |
101 ->CanOpenSetWallpaperPage(); | 100 ->CanOpenSetWallpaperPage(); |
102 case MENU_AUTO_HIDE: | 101 case MENU_AUTO_HIDE: |
103 return CanUserModifyShelfAutoHideBehavior(controller_->GetProfile()); | 102 return CanUserModifyShelfAutoHideBehavior(controller_->profile()); |
104 default: | 103 default: |
105 DCHECK(command_id < MENU_ITEM_COUNT); | 104 DCHECK(command_id < MENU_ITEM_COUNT); |
106 return true; | 105 return true; |
107 } | 106 } |
108 } | 107 } |
109 | 108 |
110 void LauncherContextMenu::ExecuteCommand(int command_id, int event_flags) { | 109 void LauncherContextMenu::ExecuteCommand(int command_id, int event_flags) { |
111 switch (static_cast<MenuItem>(command_id)) { | 110 switch (static_cast<MenuItem>(command_id)) { |
112 case MENU_OPEN_NEW: | 111 case MENU_OPEN_NEW: |
113 controller_->Launch(item_.id, ui::EF_NONE); | 112 controller_->Launch(item_.id, ui::EF_NONE); |
(...skipping 29 matching lines...) Expand all Loading... |
143 default: | 142 default: |
144 NOTREACHED(); | 143 NOTREACHED(); |
145 } | 144 } |
146 } | 145 } |
147 | 146 |
148 void LauncherContextMenu::AddPinMenu() { | 147 void LauncherContextMenu::AddPinMenu() { |
149 // Expect an item with a none zero id to add pin/unpin menu item. | 148 // Expect an item with a none zero id to add pin/unpin menu item. |
150 DCHECK(item_.id); | 149 DCHECK(item_.id); |
151 int menu_pin_string_id; | 150 int menu_pin_string_id; |
152 const std::string app_id = controller_->GetAppIDForShelfID(item_.id); | 151 const std::string app_id = controller_->GetAppIDForShelfID(item_.id); |
153 switch (GetPinnableForAppID(app_id, controller_->GetProfile())) { | 152 switch (GetPinnableForAppID(app_id, controller_->profile())) { |
154 case AppListControllerDelegate::PIN_EDITABLE: | 153 case AppListControllerDelegate::PIN_EDITABLE: |
155 menu_pin_string_id = controller_->IsPinned(item_.id) | 154 menu_pin_string_id = controller_->IsPinned(item_.id) |
156 ? IDS_LAUNCHER_CONTEXT_MENU_UNPIN | 155 ? IDS_LAUNCHER_CONTEXT_MENU_UNPIN |
157 : IDS_LAUNCHER_CONTEXT_MENU_PIN; | 156 : IDS_LAUNCHER_CONTEXT_MENU_PIN; |
158 break; | 157 break; |
159 case AppListControllerDelegate::PIN_FIXED: | 158 case AppListControllerDelegate::PIN_FIXED: |
160 menu_pin_string_id = IDS_LAUNCHER_CONTEXT_MENU_PIN_ENFORCED_BY_POLICY; | 159 menu_pin_string_id = IDS_LAUNCHER_CONTEXT_MENU_PIN_ENFORCED_BY_POLICY; |
161 break; | 160 break; |
162 case AppListControllerDelegate::NO_PIN: | 161 case AppListControllerDelegate::NO_PIN: |
163 return; | 162 return; |
164 default: | 163 default: |
165 NOTREACHED(); | 164 NOTREACHED(); |
166 return; | 165 return; |
167 } | 166 } |
168 AddItemWithStringId(MENU_PIN, menu_pin_string_id); | 167 AddItemWithStringId(MENU_PIN, menu_pin_string_id); |
169 } | 168 } |
170 | 169 |
171 void LauncherContextMenu::AddShelfOptionsMenu() { | 170 void LauncherContextMenu::AddShelfOptionsMenu() { |
172 // In fullscreen, the launcher is either hidden or autohidden depending | 171 // In fullscreen, the launcher is either hidden or autohidden depending |
173 // on thethe type of fullscreen. Do not show the auto-hide menu item while in | 172 // on thethe type of fullscreen. Do not show the auto-hide menu item while in |
174 // while in fullscreen because it is confusing when the preference appears | 173 // while in fullscreen because it is confusing when the preference appears |
175 // not to apply. | 174 // not to apply. |
176 if (!IsFullScreenMode() && | 175 if (!IsFullScreenMode() && |
177 CanUserModifyShelfAutoHideBehavior(controller_->GetProfile())) { | 176 CanUserModifyShelfAutoHideBehavior(controller_->profile())) { |
178 AddCheckItemWithStringId(MENU_AUTO_HIDE, | 177 AddCheckItemWithStringId(MENU_AUTO_HIDE, |
179 IDS_ASH_SHELF_CONTEXT_MENU_AUTO_HIDE); | 178 IDS_ASH_SHELF_CONTEXT_MENU_AUTO_HIDE); |
180 } | 179 } |
181 if (ash::ShelfWidget::ShelfAlignmentAllowed() && | 180 if (ash::WmShelf::CanChangeShelfAlignment() && |
182 !ash::WmShell::Get()->GetSessionStateDelegate()->IsScreenLocked()) { | 181 !ash::WmShell::Get()->GetSessionStateDelegate()->IsScreenLocked()) { |
183 AddSubMenuWithStringId(MENU_ALIGNMENT_MENU, | 182 AddSubMenuWithStringId(MENU_ALIGNMENT_MENU, |
184 IDS_ASH_SHELF_CONTEXT_MENU_POSITION, | 183 IDS_ASH_SHELF_CONTEXT_MENU_POSITION, |
185 &shelf_alignment_menu_); | 184 &shelf_alignment_menu_); |
186 } | 185 } |
187 if (!controller_->GetProfile()->IsGuestSession()) | 186 if (!controller_->profile()->IsGuestSession()) |
188 AddItemWithStringId(MENU_CHANGE_WALLPAPER, IDS_AURA_SET_DESKTOP_WALLPAPER); | 187 AddItemWithStringId(MENU_CHANGE_WALLPAPER, IDS_AURA_SET_DESKTOP_WALLPAPER); |
189 } | 188 } |
190 | 189 |
191 bool LauncherContextMenu::ExecuteCommonCommand(int command_id, | 190 bool LauncherContextMenu::ExecuteCommonCommand(int command_id, |
192 int event_flags) { | 191 int event_flags) { |
193 switch (command_id) { | 192 switch (command_id) { |
194 case MENU_OPEN_NEW: | 193 case MENU_OPEN_NEW: |
195 case MENU_CLOSE: | 194 case MENU_CLOSE: |
196 case MENU_PIN: | 195 case MENU_PIN: |
197 case MENU_AUTO_HIDE: | 196 case MENU_AUTO_HIDE: |
198 case MENU_ALIGNMENT_MENU: | 197 case MENU_ALIGNMENT_MENU: |
199 case MENU_CHANGE_WALLPAPER: | 198 case MENU_CHANGE_WALLPAPER: |
200 LauncherContextMenu::ExecuteCommand(command_id, event_flags); | 199 LauncherContextMenu::ExecuteCommand(command_id, event_flags); |
201 return true; | 200 return true; |
202 default: | 201 default: |
203 return false; | 202 return false; |
204 } | 203 } |
205 } | 204 } |
OLD | NEW |