Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: chrome/browser/ui/app_list/app_context_menu.cc

Issue 106713002: Move LaunchContainer enum to extension_constants.h. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/app_list/app_context_menu.h" 5 #include "chrome/browser/ui/app_list/app_context_menu.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "chrome/app/chrome_command_ids.h" 9 #include "chrome/app/chrome_command_ids.h"
10 #include "chrome/browser/extensions/context_menu_matcher.h" 10 #include "chrome/browser/extensions/context_menu_matcher.h"
11 #include "chrome/browser/extensions/launch_util.h"
12 #include "chrome/browser/prefs/incognito_mode_prefs.h" 11 #include "chrome/browser/prefs/incognito_mode_prefs.h"
13 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/ui/app_list/app_context_menu_delegate.h" 13 #include "chrome/browser/ui/app_list/app_context_menu_delegate.h"
15 #include "chrome/browser/ui/app_list/app_list_controller_delegate.h" 14 #include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
16 #include "chrome/common/chrome_switches.h" 15 #include "chrome/common/chrome_switches.h"
17 #include "chrome/common/extensions/extension_constants.h" 16 #include "chrome/common/extensions/extension_constants.h"
18 #include "chrome/common/extensions/manifest_url_handler.h" 17 #include "chrome/common/extensions/manifest_url_handler.h"
19 #include "content/public/common/context_menu_params.h" 18 #include "content/public/common/context_menu_params.h"
20 #include "grit/chromium_strings.h" 19 #include "grit/chromium_strings.h"
21 #include "grit/generated_resources.h" 20 #include "grit/generated_resources.h"
22 #include "ui/base/l10n/l10n_util.h" 21 #include "ui/base/l10n/l10n_util.h"
23 22
24 #if defined(USE_ASH) 23 #if defined(USE_ASH)
25 #include "ash/shell.h" 24 #include "ash/shell.h"
26 #endif 25 #endif
27 26
28 namespace app_list { 27 namespace app_list {
29 28
30 namespace { 29 namespace {
31 30
32 enum CommandId { 31 enum CommandId {
33 LAUNCH_NEW = 100, 32 LAUNCH_NEW = 100,
34 TOGGLE_PIN, 33 TOGGLE_PIN,
35 CREATE_SHORTCUTS, 34 CREATE_SHORTCUTS,
36 OPTIONS, 35 OPTIONS,
37 UNINSTALL, 36 UNINSTALL,
38 DETAILS, 37 DETAILS,
39 MENU_NEW_WINDOW, 38 MENU_NEW_WINDOW,
40 MENU_NEW_INCOGNITO_WINDOW, 39 MENU_NEW_INCOGNITO_WINDOW,
41 // Order matters in LAUNCHER_TYPE_xxxx and must match LaunchType. 40 // Order matters in USE_LAUNCH_TYPE_* and must match the LaunchType enum.
42 LAUNCH_TYPE_START = 200, 41 USE_LAUNCH_TYPE_COMMAND_START = 200,
43 LAUNCH_TYPE_PINNED_TAB = LAUNCH_TYPE_START, 42 USE_LAUNCH_TYPE_PINNED = USE_LAUNCH_TYPE_COMMAND_START,
44 LAUNCH_TYPE_REGULAR_TAB, 43 USE_LAUNCH_TYPE_REGULAR,
45 LAUNCH_TYPE_FULLSCREEN, 44 USE_LAUNCH_TYPE_FULLSCREEN,
46 LAUNCH_TYPE_WINDOW, 45 USE_LAUNCH_TYPE_WINDOW,
47 LAUNCH_TYPE_LAST, 46 USE_LAUNCH_TYPE_COMMAND_END,
48 }; 47 };
49 48
50 bool MenuItemHasLauncherContext(const extensions::MenuItem* item) { 49 bool MenuItemHasLauncherContext(const extensions::MenuItem* item) {
51 return item->contexts().Contains(extensions::MenuItem::LAUNCHER); 50 return item->contexts().Contains(extensions::MenuItem::LAUNCHER);
52 } 51 }
53 52
54 } // namespace 53 } // namespace
55 54
56 AppContextMenu::AppContextMenu(AppContextMenuDelegate* delegate, 55 AppContextMenu::AppContextMenu(AppContextMenuDelegate* delegate,
57 Profile* profile, 56 Profile* profile,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 IDS_APP_LIST_CONTEXT_MENU_PIN); 108 IDS_APP_LIST_CONTEXT_MENU_PIN);
110 } 109 }
111 110
112 if (controller_->CanDoCreateShortcutsFlow()) { 111 if (controller_->CanDoCreateShortcutsFlow()) {
113 menu_model_->AddItemWithStringId(CREATE_SHORTCUTS, 112 menu_model_->AddItemWithStringId(CREATE_SHORTCUTS,
114 IDS_NEW_TAB_APP_CREATE_SHORTCUT); 113 IDS_NEW_TAB_APP_CREATE_SHORTCUT);
115 } 114 }
116 115
117 if (!is_platform_app_) { 116 if (!is_platform_app_) {
118 menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); 117 menu_model_->AddSeparator(ui::NORMAL_SEPARATOR);
119 // Streamlined hosted apps can only toggle between LAUNCH_WINDOW and 118 // Streamlined hosted apps can only toggle between LAUNCH_TYPE_WINDOW and
Yoyo Zhou 2013/12/05 22:37:02 nit: USE_LAUNCH_TYPE... (twice in this comment)
Daniel Erat 2013/12/06 03:14:13 Done.
120 // LAUNCH_REGULAR. 119 // LAUNCH_TYPE_REGULAR.
121 if (CommandLine::ForCurrentProcess()->HasSwitch( 120 if (CommandLine::ForCurrentProcess()->HasSwitch(
122 switches::kEnableStreamlinedHostedApps)) { 121 switches::kEnableStreamlinedHostedApps)) {
123 menu_model_->AddCheckItemWithStringId( 122 menu_model_->AddCheckItemWithStringId(
124 LAUNCH_TYPE_REGULAR_TAB, 123 USE_LAUNCH_TYPE_REGULAR,
125 IDS_APP_CONTEXT_MENU_OPEN_TAB); 124 IDS_APP_CONTEXT_MENU_OPEN_TAB);
126 } else { 125 } else {
127 menu_model_->AddCheckItemWithStringId( 126 menu_model_->AddCheckItemWithStringId(
128 LAUNCH_TYPE_REGULAR_TAB, 127 USE_LAUNCH_TYPE_REGULAR,
129 IDS_APP_CONTEXT_MENU_OPEN_REGULAR); 128 IDS_APP_CONTEXT_MENU_OPEN_REGULAR);
130 menu_model_->AddCheckItemWithStringId( 129 menu_model_->AddCheckItemWithStringId(
131 LAUNCH_TYPE_PINNED_TAB, 130 USE_LAUNCH_TYPE_PINNED,
132 IDS_APP_CONTEXT_MENU_OPEN_PINNED); 131 IDS_APP_CONTEXT_MENU_OPEN_PINNED);
133 #if defined(OS_MACOSX) 132 #if defined(OS_MACOSX)
134 // Mac does not support standalone web app browser windows or maximize. 133 // Mac does not support standalone web app browser windows or maximize.
135 menu_model_->AddCheckItemWithStringId( 134 menu_model_->AddCheckItemWithStringId(
136 LAUNCH_TYPE_FULLSCREEN, 135 USE_LAUNCH_TYPE_FULLSCREEN,
137 IDS_APP_CONTEXT_MENU_OPEN_FULLSCREEN); 136 IDS_APP_CONTEXT_MENU_OPEN_FULLSCREEN);
138 #else 137 #else
139 menu_model_->AddCheckItemWithStringId( 138 menu_model_->AddCheckItemWithStringId(
140 LAUNCH_TYPE_WINDOW, 139 USE_LAUNCH_TYPE_WINDOW,
141 IDS_APP_CONTEXT_MENU_OPEN_WINDOW); 140 IDS_APP_CONTEXT_MENU_OPEN_WINDOW);
142 // Even though the launch type is Full Screen it is more accurately 141 // Even though the launch type is Full Screen it is more accurately
143 // described as Maximized in Ash. 142 // described as Maximized in Ash.
144 menu_model_->AddCheckItemWithStringId( 143 menu_model_->AddCheckItemWithStringId(
145 LAUNCH_TYPE_FULLSCREEN, 144 USE_LAUNCH_TYPE_FULLSCREEN,
146 IDS_APP_CONTEXT_MENU_OPEN_MAXIMIZED); 145 IDS_APP_CONTEXT_MENU_OPEN_MAXIMIZED);
147 #endif 146 #endif
148 } 147 }
149 menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); 148 menu_model_->AddSeparator(ui::NORMAL_SEPARATOR);
150 menu_model_->AddItemWithStringId(OPTIONS, IDS_NEW_TAB_APP_OPTIONS); 149 menu_model_->AddItemWithStringId(OPTIONS, IDS_NEW_TAB_APP_OPTIONS);
151 } 150 }
152 151
153 menu_model_->AddItemWithStringId(DETAILS, IDS_NEW_TAB_APP_DETAILS); 152 menu_model_->AddItemWithStringId(DETAILS, IDS_NEW_TAB_APP_DETAILS);
154 menu_model_->AddItemWithStringId( 153 menu_model_->AddItemWithStringId(
155 UNINSTALL, 154 UNINSTALL,
(...skipping 11 matching lines...) Expand all
167 string16 AppContextMenu::GetLabelForCommandId(int command_id) const { 166 string16 AppContextMenu::GetLabelForCommandId(int command_id) const {
168 if (command_id == TOGGLE_PIN) { 167 if (command_id == TOGGLE_PIN) {
169 return controller_->IsAppPinned(app_id_) ? 168 return controller_->IsAppPinned(app_id_) ?
170 l10n_util::GetStringUTF16(IDS_APP_LIST_CONTEXT_MENU_UNPIN) : 169 l10n_util::GetStringUTF16(IDS_APP_LIST_CONTEXT_MENU_UNPIN) :
171 l10n_util::GetStringUTF16(IDS_APP_LIST_CONTEXT_MENU_PIN); 170 l10n_util::GetStringUTF16(IDS_APP_LIST_CONTEXT_MENU_PIN);
172 } else if (command_id == LAUNCH_NEW) { 171 } else if (command_id == LAUNCH_NEW) {
173 #if defined(OS_MACOSX) 172 #if defined(OS_MACOSX)
174 // Even fullscreen windows launch in a browser tab on Mac. 173 // Even fullscreen windows launch in a browser tab on Mac.
175 const bool launches_in_tab = true; 174 const bool launches_in_tab = true;
176 #else 175 #else
177 const bool launches_in_tab = IsCommandIdChecked(LAUNCH_TYPE_PINNED_TAB) || 176 const bool launches_in_tab = IsCommandIdChecked(USE_LAUNCH_TYPE_PINNED) ||
178 IsCommandIdChecked(LAUNCH_TYPE_REGULAR_TAB); 177 IsCommandIdChecked(USE_LAUNCH_TYPE_REGULAR);
179 #endif 178 #endif
180 return launches_in_tab ? 179 return launches_in_tab ?
181 l10n_util::GetStringUTF16(IDS_APP_LIST_CONTEXT_MENU_NEW_TAB) : 180 l10n_util::GetStringUTF16(IDS_APP_LIST_CONTEXT_MENU_NEW_TAB) :
182 l10n_util::GetStringUTF16(IDS_APP_LIST_CONTEXT_MENU_NEW_WINDOW); 181 l10n_util::GetStringUTF16(IDS_APP_LIST_CONTEXT_MENU_NEW_WINDOW);
183 } else { 182 } else {
184 NOTREACHED(); 183 NOTREACHED();
185 return string16(); 184 return string16();
186 } 185 }
187 } 186 }
188 187
189 bool AppContextMenu::IsCommandIdChecked(int command_id) const { 188 bool AppContextMenu::IsCommandIdChecked(int command_id) const {
190 if (command_id >= LAUNCH_TYPE_START && command_id < LAUNCH_TYPE_LAST) { 189 if (command_id >= USE_LAUNCH_TYPE_COMMAND_START &&
190 command_id < USE_LAUNCH_TYPE_COMMAND_END) {
191 return static_cast<int>(controller_->GetExtensionLaunchType( 191 return static_cast<int>(controller_->GetExtensionLaunchType(
192 profile_, app_id_)) + LAUNCH_TYPE_START == command_id; 192 profile_, app_id_)) + USE_LAUNCH_TYPE_COMMAND_START == command_id;
193 } else if (command_id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST && 193 } else if (command_id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST &&
194 command_id <= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) { 194 command_id <= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) {
195 return extension_menu_items_->IsCommandIdChecked(command_id); 195 return extension_menu_items_->IsCommandIdChecked(command_id);
196 } 196 }
197 return false; 197 return false;
198 } 198 }
199 199
200 bool AppContextMenu::IsCommandIdEnabled(int command_id) const { 200 bool AppContextMenu::IsCommandIdEnabled(int command_id) const {
201 if (command_id == TOGGLE_PIN) { 201 if (command_id == TOGGLE_PIN) {
202 return controller_->GetPinnable() == 202 return controller_->GetPinnable() ==
(...skipping 29 matching lines...) Expand all
232 if (command_id == LAUNCH_NEW) { 232 if (command_id == LAUNCH_NEW) {
233 delegate_->ExecuteLaunchCommand(event_flags); 233 delegate_->ExecuteLaunchCommand(event_flags);
234 } else if (command_id == TOGGLE_PIN && controller_->GetPinnable() == 234 } else if (command_id == TOGGLE_PIN && controller_->GetPinnable() ==
235 AppListControllerDelegate::PIN_EDITABLE) { 235 AppListControllerDelegate::PIN_EDITABLE) {
236 if (controller_->IsAppPinned(app_id_)) 236 if (controller_->IsAppPinned(app_id_))
237 controller_->UnpinApp(app_id_); 237 controller_->UnpinApp(app_id_);
238 else 238 else
239 controller_->PinApp(app_id_); 239 controller_->PinApp(app_id_);
240 } else if (command_id == CREATE_SHORTCUTS) { 240 } else if (command_id == CREATE_SHORTCUTS) {
241 controller_->DoCreateShortcutsFlow(profile_, app_id_); 241 controller_->DoCreateShortcutsFlow(profile_, app_id_);
242 } else if (command_id >= LAUNCH_TYPE_START && 242 } else if (command_id >= USE_LAUNCH_TYPE_COMMAND_START &&
243 command_id < LAUNCH_TYPE_LAST) { 243 command_id < USE_LAUNCH_TYPE_COMMAND_END) {
244 extensions::LaunchType launch_type = 244 extensions::LaunchType launch_type = static_cast<extensions::LaunchType>(
245 static_cast<extensions::LaunchType>(command_id - LAUNCH_TYPE_START); 245 command_id - USE_LAUNCH_TYPE_COMMAND_START);
246 // Streamlined hosted apps can only toggle between LAUNCH_WINDOW and 246 // Streamlined hosted apps can only toggle between LAUNCH_TYPE_WINDOW and
247 // LAUNCH_REGULAR. 247 // LAUNCH_TYPE_REGULAR.
248 if (CommandLine::ForCurrentProcess()->HasSwitch( 248 if (CommandLine::ForCurrentProcess()->HasSwitch(
249 switches::kEnableStreamlinedHostedApps)) { 249 switches::kEnableStreamlinedHostedApps)) {
250 launch_type = (controller_->GetExtensionLaunchType(profile_, app_id_) == 250 launch_type = (controller_->GetExtensionLaunchType(profile_, app_id_) ==
251 extensions::LAUNCH_TYPE_REGULAR) ? 251 extensions::LAUNCH_TYPE_REGULAR) ?
252 extensions::LAUNCH_TYPE_WINDOW : 252 extensions::LAUNCH_TYPE_WINDOW :
253 extensions::LAUNCH_TYPE_REGULAR; 253 extensions::LAUNCH_TYPE_REGULAR;
254 } 254 }
255 controller_->SetExtensionLaunchType(profile_, app_id_, launch_type); 255 controller_->SetExtensionLaunchType(profile_, app_id_, launch_type);
256 } else if (command_id == OPTIONS) { 256 } else if (command_id == OPTIONS) {
257 controller_->ShowOptionsPage(profile_, app_id_); 257 controller_->ShowOptionsPage(profile_, app_id_);
258 } else if (command_id == UNINSTALL) { 258 } else if (command_id == UNINSTALL) {
259 controller_->UninstallApp(profile_, app_id_); 259 controller_->UninstallApp(profile_, app_id_);
260 } else if (command_id == DETAILS) { 260 } else if (command_id == DETAILS) {
261 controller_->ShowAppInWebStore(profile_, app_id_, is_search_result_); 261 controller_->ShowAppInWebStore(profile_, app_id_, is_search_result_);
262 } else if (command_id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST && 262 } else if (command_id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST &&
263 command_id <= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) { 263 command_id <= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) {
264 extension_menu_items_->ExecuteCommand(command_id, NULL, 264 extension_menu_items_->ExecuteCommand(command_id, NULL,
265 content::ContextMenuParams()); 265 content::ContextMenuParams());
266 } else if (command_id == MENU_NEW_WINDOW) { 266 } else if (command_id == MENU_NEW_WINDOW) {
267 controller_->CreateNewWindow(profile_, false); 267 controller_->CreateNewWindow(profile_, false);
268 } else if (command_id == MENU_NEW_INCOGNITO_WINDOW) { 268 } else if (command_id == MENU_NEW_INCOGNITO_WINDOW) {
269 controller_->CreateNewWindow(profile_, true); 269 controller_->CreateNewWindow(profile_, true);
270 } 270 }
271 } 271 }
272 272
273 } // namespace app_list 273 } // namespace app_list
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698