OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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/toolbar/wrench_menu_model.h" | 5 #include "chrome/browser/ui/toolbar/wrench_menu_model.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 Build(browser); | 241 Build(browser); |
242 } | 242 } |
243 | 243 |
244 private: | 244 private: |
245 void Build(Browser* browser) { | 245 void Build(Browser* browser) { |
246 #if defined(OS_CHROMEOS) && defined(OFFICIAL_BUILD) | 246 #if defined(OS_CHROMEOS) && defined(OFFICIAL_BUILD) |
247 int help_string_id = IDS_GET_HELP; | 247 int help_string_id = IDS_GET_HELP; |
248 #else | 248 #else |
249 int help_string_id = IDS_HELP_PAGE; | 249 int help_string_id = IDS_HELP_PAGE; |
250 #endif | 250 #endif |
| 251 AddItem(IDC_ABOUT, l10n_util::GetStringUTF16(IDS_ABOUT)); |
251 AddItemWithStringId(IDC_HELP_PAGE_VIA_MENU, help_string_id); | 252 AddItemWithStringId(IDC_HELP_PAGE_VIA_MENU, help_string_id); |
252 if (browser_defaults::kShowHelpMenuItemIcon) { | 253 if (browser_defaults::kShowHelpMenuItemIcon) { |
253 ui::ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 254 ui::ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
254 SetIcon(GetIndexOfCommandId(IDC_HELP_PAGE_VIA_MENU), | 255 SetIcon(GetIndexOfCommandId(IDC_HELP_PAGE_VIA_MENU), |
255 rb.GetNativeImageNamed(IDR_HELP_MENU)); | 256 rb.GetNativeImageNamed(IDR_HELP_MENU)); |
256 } | 257 } |
257 | |
258 AddItemWithStringId(IDC_FEEDBACK, IDS_FEEDBACK); | 258 AddItemWithStringId(IDC_FEEDBACK, IDS_FEEDBACK); |
259 } | 259 } |
260 | 260 |
261 DISALLOW_COPY_AND_ASSIGN(HelpMenuModel); | 261 DISALLOW_COPY_AND_ASSIGN(HelpMenuModel); |
262 }; | 262 }; |
263 | 263 |
264 #endif // defined(GOOGLE_CHROME_BUILD) | 264 #endif // defined(GOOGLE_CHROME_BUILD) |
265 | 265 |
266 //////////////////////////////////////////////////////////////////////////////// | 266 //////////////////////////////////////////////////////////////////////////////// |
267 // ToolsMenuModel | 267 // ToolsMenuModel |
268 | 268 |
269 ToolsMenuModel::ToolsMenuModel(ui::SimpleMenuModel::Delegate* delegate, | 269 ToolsMenuModel::ToolsMenuModel(ui::SimpleMenuModel::Delegate* delegate, |
270 Browser* browser) | 270 Browser* browser) |
271 : SimpleMenuModel(delegate) { | 271 : SimpleMenuModel(delegate) { |
272 Build(browser); | 272 Build(browser); |
273 } | 273 } |
274 | 274 |
275 ToolsMenuModel::~ToolsMenuModel() {} | 275 ToolsMenuModel::~ToolsMenuModel() {} |
276 | 276 |
| 277 // More tools submenu is constructed as follows: |
| 278 // - Page specific actions overflow (save page, adding to taskbar). |
| 279 // - Browser / OS level tools (extensions, task manager). |
| 280 // - Developer tools. |
| 281 // - Option to enable profiling. |
277 void ToolsMenuModel::Build(Browser* browser) { | 282 void ToolsMenuModel::Build(Browser* browser) { |
278 bool show_create_shortcuts = true; | 283 bool show_create_shortcuts = true; |
279 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) | 284 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) |
280 show_create_shortcuts = false; | 285 show_create_shortcuts = false; |
281 #elif defined(USE_ASH) | 286 #elif defined(USE_ASH) |
282 if (browser->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) | 287 if (browser->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) |
283 show_create_shortcuts = false; | 288 show_create_shortcuts = false; |
284 #endif | 289 #endif |
285 | 290 AddItemWithStringId(IDC_SAVE_PAGE, IDS_SAVE_PAGE); |
286 AddItemWithStringId(IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA); | |
287 AddItemWithStringId(IDC_MANAGE_EXTENSIONS, IDS_SHOW_EXTENSIONS); | |
288 | |
289 if (chrome::CanOpenTaskManager()) | |
290 AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER); | |
291 | |
292 if (extensions::util::IsNewBookmarkAppsEnabled()) { | 291 if (extensions::util::IsNewBookmarkAppsEnabled()) { |
293 #if defined(OS_MACOSX) | 292 #if defined(OS_MACOSX) |
294 int string_id = IDS_ADD_TO_APPLICATIONS; | 293 int string_id = IDS_ADD_TO_APPLICATIONS; |
295 #elif defined(OS_WIN) | 294 #elif defined(OS_WIN) |
296 int string_id = IDS_ADD_TO_TASKBAR; | 295 int string_id = IDS_ADD_TO_TASKBAR; |
297 #else | 296 #else |
298 int string_id = IDS_ADD_TO_DESKTOP; | 297 int string_id = IDS_ADD_TO_DESKTOP; |
299 #endif | 298 #endif |
300 #if defined(USE_ASH) | 299 #if defined(USE_ASH) |
301 if (browser->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) | 300 if (browser->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) |
302 string_id = IDS_ADD_TO_SHELF; | 301 string_id = IDS_ADD_TO_SHELF; |
303 #endif | 302 #endif |
304 AddItemWithStringId(IDC_CREATE_HOSTED_APP, string_id); | 303 AddItemWithStringId(IDC_CREATE_HOSTED_APP, string_id); |
305 } else if (show_create_shortcuts) { | 304 } else if (show_create_shortcuts) { |
306 AddItemWithStringId(IDC_CREATE_SHORTCUTS, IDS_CREATE_SHORTCUTS); | 305 AddItemWithStringId(IDC_CREATE_SHORTCUTS, IDS_CREATE_SHORTCUTS); |
307 } | 306 } |
308 | 307 |
| 308 AddSeparator(ui::NORMAL_SEPARATOR); |
| 309 AddItemWithStringId(IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA); |
| 310 AddItemWithStringId(IDC_MANAGE_EXTENSIONS, IDS_SHOW_EXTENSIONS); |
| 311 if (chrome::CanOpenTaskManager()) |
| 312 AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER); |
309 #if defined(OS_CHROMEOS) | 313 #if defined(OS_CHROMEOS) |
310 AddItemWithStringId(IDC_TAKE_SCREENSHOT, IDS_TAKE_SCREENSHOT); | 314 AddItemWithStringId(IDC_TAKE_SCREENSHOT, IDS_TAKE_SCREENSHOT); |
311 #endif | 315 #endif |
312 | |
313 encoding_menu_model_.reset(new EncodingMenuModel(browser)); | 316 encoding_menu_model_.reset(new EncodingMenuModel(browser)); |
314 AddSubMenuWithStringId(IDC_ENCODING_MENU, IDS_ENCODING_MENU, | 317 AddSubMenuWithStringId(IDC_ENCODING_MENU, IDS_ENCODING_MENU, |
315 encoding_menu_model_.get()); | 318 encoding_menu_model_.get()); |
| 319 |
316 AddSeparator(ui::NORMAL_SEPARATOR); | 320 AddSeparator(ui::NORMAL_SEPARATOR); |
317 AddItemWithStringId(IDC_DEV_TOOLS, IDS_DEV_TOOLS); | 321 AddItemWithStringId(IDC_DEV_TOOLS, IDS_DEV_TOOLS); |
318 AddItemWithStringId(IDC_VIEW_SOURCE, IDS_VIEW_SOURCE); | |
319 AddItemWithStringId(IDC_DEV_TOOLS_CONSOLE, IDS_DEV_TOOLS_CONSOLE); | |
320 AddItemWithStringId(IDC_DEV_TOOLS_DEVICES, IDS_DEV_TOOLS_DEVICES); | |
321 | 322 |
322 #if defined(ENABLE_PROFILING) && !defined(NO_TCMALLOC) | 323 #if defined(ENABLE_PROFILING) && !defined(NO_TCMALLOC) |
323 AddSeparator(ui::NORMAL_SEPARATOR); | 324 AddSeparator(ui::NORMAL_SEPARATOR); |
324 AddCheckItemWithStringId(IDC_PROFILING_ENABLED, IDS_PROFILING_ENABLED); | 325 AddCheckItemWithStringId(IDC_PROFILING_ENABLED, IDS_PROFILING_ENABLED); |
325 #endif | 326 #endif |
326 } | 327 } |
327 | 328 |
328 //////////////////////////////////////////////////////////////////////////////// | 329 //////////////////////////////////////////////////////////////////////////////// |
329 // WrenchMenuModel | 330 // WrenchMenuModel |
330 | 331 |
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 // - Browser relaunch, quit. | 882 // - Browser relaunch, quit. |
882 void WrenchMenuModel::Build() { | 883 void WrenchMenuModel::Build() { |
883 if (extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()) | 884 if (extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()) |
884 CreateExtensionToolbarOverflowMenu(); | 885 CreateExtensionToolbarOverflowMenu(); |
885 | 886 |
886 AddItem(IDC_VIEW_INCOMPATIBILITIES, | 887 AddItem(IDC_VIEW_INCOMPATIBILITIES, |
887 l10n_util::GetStringUTF16(IDS_VIEW_INCOMPATIBILITIES)); | 888 l10n_util::GetStringUTF16(IDS_VIEW_INCOMPATIBILITIES)); |
888 SetIcon(GetIndexOfCommandId(IDC_VIEW_INCOMPATIBILITIES), | 889 SetIcon(GetIndexOfCommandId(IDC_VIEW_INCOMPATIBILITIES), |
889 ui::ResourceBundle::GetSharedInstance(). | 890 ui::ResourceBundle::GetSharedInstance(). |
890 GetNativeImageNamed(IDR_INPUT_ALERT_MENU)); | 891 GetNativeImageNamed(IDR_INPUT_ALERT_MENU)); |
891 | |
892 if (IsCommandIdVisible(IDC_UPGRADE_DIALOG)) | 892 if (IsCommandIdVisible(IDC_UPGRADE_DIALOG)) |
893 AddItem(IDC_UPGRADE_DIALOG, GetUpgradeDialogMenuItemName()); | 893 AddItem(IDC_UPGRADE_DIALOG, GetUpgradeDialogMenuItemName()); |
894 | |
895 if (AddGlobalErrorMenuItems() || | 894 if (AddGlobalErrorMenuItems() || |
896 IsCommandIdVisible(IDC_VIEW_INCOMPATIBILITIES) || | 895 IsCommandIdVisible(IDC_VIEW_INCOMPATIBILITIES) || |
897 IsCommandIdVisible(IDC_UPGRADE_DIALOG)) | 896 IsCommandIdVisible(IDC_UPGRADE_DIALOG)) |
898 AddSeparator(ui::NORMAL_SEPARATOR); | 897 AddSeparator(ui::NORMAL_SEPARATOR); |
899 | 898 |
900 AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB); | 899 AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB); |
901 AddItemWithStringId(IDC_NEW_WINDOW, IDS_NEW_WINDOW); | 900 AddItemWithStringId(IDC_NEW_WINDOW, IDS_NEW_WINDOW); |
902 if (ShouldShowNewIncognitoWindowMenuItem()) | 901 if (ShouldShowNewIncognitoWindowMenuItem()) |
903 AddItemWithStringId(IDC_NEW_INCOGNITO_WINDOW, IDS_NEW_INCOGNITO_WINDOW); | 902 AddItemWithStringId(IDC_NEW_INCOGNITO_WINDOW, IDS_NEW_INCOGNITO_WINDOW); |
904 | |
905 AddSeparator(ui::NORMAL_SEPARATOR); | 903 AddSeparator(ui::NORMAL_SEPARATOR); |
906 | 904 |
907 AddItemWithStringId(IDC_SHOW_HISTORY, IDS_SHOW_HISTORY); | |
908 AddItemWithStringId(IDC_SHOW_DOWNLOADS, IDS_SHOW_DOWNLOADS); | |
909 | |
910 if (!browser_->profile()->IsOffTheRecord()) { | 905 if (!browser_->profile()->IsOffTheRecord()) { |
911 recent_tabs_sub_menu_model_.reset(new RecentTabsSubMenuModel(provider_, | 906 recent_tabs_sub_menu_model_.reset(new RecentTabsSubMenuModel(provider_, |
912 browser_, | 907 browser_, |
913 NULL)); | 908 NULL)); |
914 AddSubMenuWithStringId(IDC_RECENT_TABS_MENU, IDS_RECENT_TABS_MENU, | 909 AddSubMenuWithStringId(IDC_RECENT_TABS_MENU, IDS_HISTORY_RECENT_TABS_MENU, |
915 recent_tabs_sub_menu_model_.get()); | 910 recent_tabs_sub_menu_model_.get()); |
916 } | 911 } |
917 | 912 AddItemWithStringId(IDC_SHOW_DOWNLOADS, IDS_SHOW_DOWNLOADS); |
918 if (!browser_->profile()->IsGuestSession()) { | 913 if (!browser_->profile()->IsGuestSession()) { |
919 bookmark_sub_menu_model_.reset(new BookmarkSubMenuModel(this, browser_)); | 914 bookmark_sub_menu_model_.reset(new BookmarkSubMenuModel(this, browser_)); |
920 AddSubMenuWithStringId(IDC_BOOKMARKS_MENU, IDS_BOOKMARKS_MENU, | 915 AddSubMenuWithStringId(IDC_BOOKMARKS_MENU, IDS_BOOKMARKS_MENU, |
921 bookmark_sub_menu_model_.get()); | 916 bookmark_sub_menu_model_.get()); |
922 } | 917 } |
923 | 918 |
924 CreateZoomMenu(); | 919 CreateZoomMenu(); |
925 | |
926 AddItemWithStringId(IDC_PRINT, IDS_PRINT); | 920 AddItemWithStringId(IDC_PRINT, IDS_PRINT); |
927 AddItemWithStringId(IDC_SAVE_PAGE, IDS_SAVE_PAGE); | |
928 AddItemWithStringId(IDC_FIND, IDS_FIND); | 921 AddItemWithStringId(IDC_FIND, IDS_FIND); |
929 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 922 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
930 switches::kEnableDomDistiller)) | 923 switches::kEnableDomDistiller)) |
931 AddItemWithStringId(IDC_DISTILL_PAGE, IDS_DISTILL_PAGE); | 924 AddItemWithStringId(IDC_DISTILL_PAGE, IDS_DISTILL_PAGE); |
932 tools_menu_model_.reset(new ToolsMenuModel(this, browser_)); | 925 tools_menu_model_.reset(new ToolsMenuModel(this, browser_)); |
933 AddSubMenuWithStringId( | 926 AddSubMenuWithStringId( |
934 IDC_MORE_TOOLS_MENU, IDS_MORE_TOOLS_MENU, tools_menu_model_.get()); | 927 IDC_MORE_TOOLS_MENU, IDS_MORE_TOOLS_MENU, tools_menu_model_.get()); |
935 | |
936 // Append the full menu including separators. The final separator only gets | 928 // Append the full menu including separators. The final separator only gets |
937 // appended when this is a touch menu - otherwise it would get added twice. | 929 // appended when this is a touch menu - otherwise it would get added twice. |
938 CreateCutCopyPasteMenu(); | 930 CreateCutCopyPasteMenu(); |
939 | 931 |
940 AddItemWithStringId(IDC_OPTIONS, IDS_SETTINGS); | 932 AddItemWithStringId(IDC_OPTIONS, IDS_SETTINGS); |
941 | |
942 #if !defined(OS_CHROMEOS) | 933 #if !defined(OS_CHROMEOS) |
943 if (!switches::IsNewAvatarMenu()) { | 934 if (!switches::IsNewAvatarMenu()) { |
944 // No "Sign in to Chromium..." menu item on ChromeOS. | 935 // No "Sign in to Chromium..." menu item on ChromeOS. |
945 SigninManager* signin = SigninManagerFactory::GetForProfile( | 936 SigninManager* signin = SigninManagerFactory::GetForProfile( |
946 browser_->profile()->GetOriginalProfile()); | 937 browser_->profile()->GetOriginalProfile()); |
947 if (signin && signin->IsSigninAllowed() && | 938 if (signin && signin->IsSigninAllowed() && |
948 signin_ui_util::GetSignedInServiceErrors( | 939 signin_ui_util::GetSignedInServiceErrors( |
949 browser_->profile()->GetOriginalProfile()).empty()) { | 940 browser_->profile()->GetOriginalProfile()).empty()) { |
950 AddItem(IDC_SHOW_SYNC_SETUP, | 941 AddItem(IDC_SHOW_SYNC_SETUP, |
951 l10n_util::GetStringFUTF16( | 942 l10n_util::GetStringFUTF16( |
952 IDS_SYNC_MENU_PRE_SYNCED_LABEL, | 943 IDS_SYNC_MENU_PRE_SYNCED_LABEL, |
953 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME))); | 944 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME))); |
954 } | 945 } |
955 } | 946 } |
956 #endif | 947 #endif |
957 | 948 // The help submenu is only displayed on official Chrome builds. As the |
958 // On ChromeOS we don't want the about menu option. | 949 // 'About' item has been moved to this submenu, it's reinstated here for |
959 #if !defined(OS_CHROMEOS) | 950 // Chromium builds. |
960 AddItem(IDC_ABOUT, l10n_util::GetStringUTF16(IDS_ABOUT)); | |
961 #endif | |
962 | |
963 #if defined(GOOGLE_CHROME_BUILD) | 951 #if defined(GOOGLE_CHROME_BUILD) |
964 help_menu_model_.reset(new HelpMenuModel(this, browser_)); | 952 help_menu_model_.reset(new HelpMenuModel(this, browser_)); |
965 AddSubMenuWithStringId(IDC_HELP_MENU, IDS_HELP_MENU, | 953 AddSubMenuWithStringId(IDC_HELP_MENU, IDS_HELP_MENU, |
966 help_menu_model_.get()); | 954 help_menu_model_.get()); |
| 955 #else |
| 956 AddItem(IDC_ABOUT, l10n_util::GetStringUTF16(IDS_ABOUT)); |
967 #endif | 957 #endif |
968 | |
969 #if defined(OS_CHROMEOS) | 958 #if defined(OS_CHROMEOS) |
970 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 959 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
971 chromeos::switches::kEnableRequestTabletSite)) | 960 chromeos::switches::kEnableRequestTabletSite)) |
972 AddCheckItemWithStringId(IDC_TOGGLE_REQUEST_TABLET_SITE, | 961 AddCheckItemWithStringId(IDC_TOGGLE_REQUEST_TABLET_SITE, |
973 IDS_TOGGLE_REQUEST_TABLET_SITE); | 962 IDS_TOGGLE_REQUEST_TABLET_SITE); |
974 #endif | 963 #endif |
975 | 964 |
976 #if defined(OS_WIN) | 965 #if defined(OS_WIN) |
977 int command_id = IDC_WIN_DESKTOP_RESTART; | 966 int command_id = IDC_WIN_DESKTOP_RESTART; |
978 int string_id = IDS_WIN_DESKTOP_RESTART; | 967 int string_id = IDS_WIN_DESKTOP_RESTART; |
979 if (GetRestartMenuItemIfRequired(browser_->host_desktop_type(), | 968 if (GetRestartMenuItemIfRequired(browser_->host_desktop_type(), |
980 &command_id, | 969 &command_id, |
981 &string_id)) { | 970 &string_id)) { |
982 AddSeparator(ui::NORMAL_SEPARATOR); | 971 AddSeparator(ui::NORMAL_SEPARATOR); |
983 AddItemWithStringId(command_id, string_id); | 972 AddItemWithStringId(command_id, string_id); |
984 } | 973 } |
985 #endif | 974 #endif |
986 | |
987 bool show_exit_menu = browser_defaults::kShowExitMenuItem; | 975 bool show_exit_menu = browser_defaults::kShowExitMenuItem; |
988 #if defined(OS_WIN) | 976 #if defined(OS_WIN) |
989 if (browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) | 977 if (browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) |
990 show_exit_menu = false; | 978 show_exit_menu = false; |
991 #endif | 979 #endif |
992 | |
993 if (show_exit_menu) { | 980 if (show_exit_menu) { |
994 AddSeparator(ui::NORMAL_SEPARATOR); | 981 AddSeparator(ui::NORMAL_SEPARATOR); |
995 AddItemWithStringId(IDC_EXIT, IDS_EXIT); | 982 AddItemWithStringId(IDC_EXIT, IDS_EXIT); |
996 } | 983 } |
997 uma_action_recorded_ = false; | 984 uma_action_recorded_ = false; |
998 } | 985 } |
999 | 986 |
1000 bool WrenchMenuModel::AddGlobalErrorMenuItems() { | 987 bool WrenchMenuModel::AddGlobalErrorMenuItems() { |
1001 // TODO(sail): Currently we only build the wrench menu once per browser | 988 // TODO(sail): Currently we only build the wrench menu once per browser |
1002 // window. This means that if a new error is added after the menu is built | 989 // window. This means that if a new error is added after the menu is built |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1108 ->GetZoomPercent(); | 1095 ->GetZoomPercent(); |
1109 } | 1096 } |
1110 zoom_label_ = l10n_util::GetStringFUTF16( | 1097 zoom_label_ = l10n_util::GetStringFUTF16( |
1111 IDS_ZOOM_PERCENT, base::IntToString16(zoom_percent)); | 1098 IDS_ZOOM_PERCENT, base::IntToString16(zoom_percent)); |
1112 } | 1099 } |
1113 | 1100 |
1114 void WrenchMenuModel::OnZoomLevelChanged( | 1101 void WrenchMenuModel::OnZoomLevelChanged( |
1115 const content::HostZoomMap::ZoomLevelChange& change) { | 1102 const content::HostZoomMap::ZoomLevelChange& change) { |
1116 UpdateZoomControls(); | 1103 UpdateZoomControls(); |
1117 } | 1104 } |
OLD | NEW |