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

Side by Side Diff: chrome/browser/ui/toolbar/wrench_menu_model.cc

Issue 1007993004: Restructure the wrench menu into an action based order (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nits Created 5 years, 8 months 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
OLDNEW
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 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 232
233 void ToolsMenuModel::Build(Browser* browser) { 233 void ToolsMenuModel::Build(Browser* browser) {
234 bool show_create_shortcuts = true; 234 bool show_create_shortcuts = true;
235 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) 235 #if defined(OS_CHROMEOS) || defined(OS_MACOSX)
236 show_create_shortcuts = false; 236 show_create_shortcuts = false;
237 #elif defined(USE_ASH) 237 #elif defined(USE_ASH)
238 if (browser->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) 238 if (browser->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH)
239 show_create_shortcuts = false; 239 show_create_shortcuts = false;
240 #endif 240 #endif
241 241
242 AddItemWithStringId(IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA);
243 AddItemWithStringId(IDC_MANAGE_EXTENSIONS, IDS_SHOW_EXTENSIONS);
244
245 if (chrome::CanOpenTaskManager())
246 AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
247
242 if (extensions::util::IsNewBookmarkAppsEnabled()) { 248 if (extensions::util::IsNewBookmarkAppsEnabled()) {
243 #if defined(OS_MACOSX) 249 #if defined(OS_MACOSX)
244 int string_id = IDS_ADD_TO_APPLICATIONS; 250 int string_id = IDS_ADD_TO_APPLICATIONS;
245 #elif defined(OS_WIN) 251 #elif defined(OS_WIN)
246 int string_id = IDS_ADD_TO_TASKBAR; 252 int string_id = IDS_ADD_TO_TASKBAR;
247 #else 253 #else
248 int string_id = IDS_ADD_TO_DESKTOP; 254 int string_id = IDS_ADD_TO_DESKTOP;
249 #endif 255 #endif
250 #if defined(USE_ASH) 256 #if defined(USE_ASH)
251 if (browser->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) 257 if (browser->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH)
252 string_id = IDS_ADD_TO_SHELF; 258 string_id = IDS_ADD_TO_SHELF;
253 #endif 259 #endif
254 AddItemWithStringId(IDC_CREATE_HOSTED_APP, string_id); 260 AddItemWithStringId(IDC_CREATE_HOSTED_APP, string_id);
255 AddSeparator(ui::NORMAL_SEPARATOR);
256 } else if (show_create_shortcuts) { 261 } else if (show_create_shortcuts) {
257 AddItemWithStringId(IDC_CREATE_SHORTCUTS, IDS_CREATE_SHORTCUTS); 262 AddItemWithStringId(IDC_CREATE_SHORTCUTS, IDS_CREATE_SHORTCUTS);
258 AddSeparator(ui::NORMAL_SEPARATOR);
259 } 263 }
260 264
261 AddItemWithStringId(IDC_MANAGE_EXTENSIONS, IDS_SHOW_EXTENSIONS);
262
263 if (chrome::CanOpenTaskManager())
264 AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
265
266 AddItemWithStringId(IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA);
267
268 #if defined(OS_CHROMEOS) 265 #if defined(OS_CHROMEOS)
269 AddItemWithStringId(IDC_TAKE_SCREENSHOT, IDS_TAKE_SCREENSHOT); 266 AddItemWithStringId(IDC_TAKE_SCREENSHOT, IDS_TAKE_SCREENSHOT);
270 #endif 267 #endif
271 268
272 AddSeparator(ui::NORMAL_SEPARATOR);
273
274 encoding_menu_model_.reset(new EncodingMenuModel(browser)); 269 encoding_menu_model_.reset(new EncodingMenuModel(browser));
275 AddSubMenuWithStringId(IDC_ENCODING_MENU, IDS_ENCODING_MENU, 270 AddSubMenuWithStringId(IDC_ENCODING_MENU, IDS_ENCODING_MENU,
276 encoding_menu_model_.get()); 271 encoding_menu_model_.get());
272 AddSeparator(ui::NORMAL_SEPARATOR);
273 AddItemWithStringId(IDC_DEV_TOOLS, IDS_DEV_TOOLS);
277 AddItemWithStringId(IDC_VIEW_SOURCE, IDS_VIEW_SOURCE); 274 AddItemWithStringId(IDC_VIEW_SOURCE, IDS_VIEW_SOURCE);
278 AddItemWithStringId(IDC_DEV_TOOLS, IDS_DEV_TOOLS);
279 AddItemWithStringId(IDC_DEV_TOOLS_CONSOLE, IDS_DEV_TOOLS_CONSOLE); 275 AddItemWithStringId(IDC_DEV_TOOLS_CONSOLE, IDS_DEV_TOOLS_CONSOLE);
280 AddItemWithStringId(IDC_DEV_TOOLS_DEVICES, IDS_DEV_TOOLS_DEVICES); 276 AddItemWithStringId(IDC_DEV_TOOLS_DEVICES, IDS_DEV_TOOLS_DEVICES);
281 277
282 #if defined(ENABLE_PROFILING) && !defined(NO_TCMALLOC) 278 #if defined(ENABLE_PROFILING) && !defined(NO_TCMALLOC)
283 AddSeparator(ui::NORMAL_SEPARATOR); 279 AddSeparator(ui::NORMAL_SEPARATOR);
284 AddCheckItemWithStringId(IDC_PROFILING_ENABLED, IDS_PROFILING_ENABLED); 280 AddCheckItemWithStringId(IDC_PROFILING_ENABLED, IDS_PROFILING_ENABLED);
285 #endif 281 #endif
286 } 282 }
287 283
288 //////////////////////////////////////////////////////////////////////////////// 284 ////////////////////////////////////////////////////////////////////////////////
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 } 814 }
819 815
820 bool WrenchMenuModel::ShouldShowNewIncognitoWindowMenuItem() { 816 bool WrenchMenuModel::ShouldShowNewIncognitoWindowMenuItem() {
821 if (browser_->profile()->IsGuestSession()) 817 if (browser_->profile()->IsGuestSession())
822 return false; 818 return false;
823 819
824 return IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) != 820 return IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) !=
825 IncognitoModePrefs::DISABLED; 821 IncognitoModePrefs::DISABLED;
826 } 822 }
827 823
824 // Note: When adding new menu items please place under an appropriate section.
825 // Menu is organised as follows:
826 // - Extension toolbar overflow.
827 // - Global browser errors and warnings.
828 // - Tabs and windows.
829 // - Places previously been e.g. History, bookmarks, recent tabs.
830 // - Page actions e.g. zoom, edit, find, print.
831 // - Learn about the browser and global customisation e.g. settings, help.
832 // - Browser relaunch, quit.
828 void WrenchMenuModel::Build() { 833 void WrenchMenuModel::Build() {
829 #if defined(OS_WIN)
830 AddItem(IDC_VIEW_INCOMPATIBILITIES,
831 l10n_util::GetStringUTF16(IDS_VIEW_INCOMPATIBILITIES));
832 EnumerateModulesModel* model =
833 EnumerateModulesModel::GetInstance();
834 if (model->modules_to_notify_about() > 0 ||
835 model->confirmed_bad_modules_detected() > 0)
836 AddSeparator(ui::NORMAL_SEPARATOR);
837 #endif
838
839 if (extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()) 834 if (extensions::FeatureSwitch::extension_action_redesign()->IsEnabled())
840 CreateExtensionToolbarOverflowMenu(); 835 CreateExtensionToolbarOverflowMenu();
841 836
837 AddItem(IDC_VIEW_INCOMPATIBILITIES,
838 l10n_util::GetStringUTF16(IDS_VIEW_INCOMPATIBILITIES));
839 SetIcon(GetIndexOfCommandId(IDC_VIEW_INCOMPATIBILITIES),
840 ui::ResourceBundle::GetSharedInstance().
841 GetNativeImageNamed(IDR_INPUT_ALERT_MENU));
842
843 if (IsCommandIdVisible(browser_defaults::kShowUpgradeMenuItem))
844 AddItem(IDC_UPGRADE_DIALOG, GetUpgradeDialogMenuItemName());
845
846 if (AddGlobalErrorMenuItems() ||
847 IsCommandIdVisible(IDC_VIEW_INCOMPATIBILITIES) ||
848 IsCommandIdVisible(IDC_UPGRADE_DIALOG))
849 AddSeparator(ui::NORMAL_SEPARATOR);
850
842 AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB); 851 AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB);
843 AddItemWithStringId(IDC_NEW_WINDOW, IDS_NEW_WINDOW); 852 AddItemWithStringId(IDC_NEW_WINDOW, IDS_NEW_WINDOW);
844
845 if (ShouldShowNewIncognitoWindowMenuItem()) 853 if (ShouldShowNewIncognitoWindowMenuItem())
846 AddItemWithStringId(IDC_NEW_INCOGNITO_WINDOW, IDS_NEW_INCOGNITO_WINDOW); 854 AddItemWithStringId(IDC_NEW_INCOGNITO_WINDOW, IDS_NEW_INCOGNITO_WINDOW);
847 855
848 if (!browser_->profile()->IsGuestSession()) { 856 AddSeparator(ui::NORMAL_SEPARATOR);
849 bookmark_sub_menu_model_.reset(new BookmarkSubMenuModel(this, browser_)); 857
850 AddSubMenuWithStringId(IDC_BOOKMARKS_MENU, IDS_BOOKMARKS_MENU, 858 AddItemWithStringId(IDC_SHOW_HISTORY, IDS_SHOW_HISTORY);
851 bookmark_sub_menu_model_.get()); 859 AddItemWithStringId(IDC_SHOW_DOWNLOADS, IDS_SHOW_DOWNLOADS);
852 }
853 860
854 if (!browser_->profile()->IsOffTheRecord()) { 861 if (!browser_->profile()->IsOffTheRecord()) {
855 recent_tabs_sub_menu_model_.reset(new RecentTabsSubMenuModel(provider_, 862 recent_tabs_sub_menu_model_.reset(new RecentTabsSubMenuModel(provider_,
856 browser_, 863 browser_,
857 NULL)); 864 NULL));
858 AddSubMenuWithStringId(IDC_RECENT_TABS_MENU, IDS_RECENT_TABS_MENU, 865 AddSubMenuWithStringId(IDC_RECENT_TABS_MENU, IDS_RECENT_TABS_MENU,
859 recent_tabs_sub_menu_model_.get()); 866 recent_tabs_sub_menu_model_.get());
860 } 867 }
861 868
862 #if defined(OS_WIN) 869 if (!browser_->profile()->IsGuestSession()) {
863 base::win::Version min_version_for_ash_mode = base::win::VERSION_WIN8; 870 bookmark_sub_menu_model_.reset(new BookmarkSubMenuModel(this, browser_));
864 // Windows 7 ASH mode is only supported in DEBUG for now. 871 AddSubMenuWithStringId(IDC_BOOKMARKS_MENU, IDS_BOOKMARKS_MENU,
865 #if !defined(NDEBUG) 872 bookmark_sub_menu_model_.get());
866 min_version_for_ash_mode = base::win::VERSION_WIN7;
867 #endif
868 // Windows 8 can support ASH mode using WARP, but Windows 7 requires a working
869 // GPU compositor.
870 if ((base::win::GetVersion() >= min_version_for_ash_mode &&
871 content::GpuDataManager::GetInstance()->CanUseGpuBrowserCompositor()) ||
872 (base::win::GetVersion() >= base::win::VERSION_WIN8)) {
873 if (browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) {
874 // ASH/Metro mode, add the 'Relaunch Chrome in desktop mode'.
875 AddSeparator(ui::NORMAL_SEPARATOR);
876 AddItemWithStringId(IDC_WIN_DESKTOP_RESTART, IDS_WIN_DESKTOP_RESTART);
877 } else {
878 // In Windows 8 desktop, add the 'Relaunch Chrome in Windows 8 mode'.
879 // In Windows 7 desktop, add the 'Relaunch Chrome in Windows ASH mode'
880 AddSeparator(ui::NORMAL_SEPARATOR);
881 if (base::win::GetVersion() >= base::win::VERSION_WIN8) {
882 AddItemWithStringId(IDC_WIN8_METRO_RESTART, IDS_WIN8_METRO_RESTART);
883 } else {
884 AddItemWithStringId(IDC_WIN_CHROMEOS_RESTART, IDS_WIN_CHROMEOS_RESTART);
885 }
886 }
887 } 873 }
888 #endif 874
875 CreateZoomMenu();
876
877 AddItemWithStringId(IDC_PRINT, IDS_PRINT);
878 AddItemWithStringId(IDC_SAVE_PAGE, IDS_SAVE_PAGE);
879 AddItemWithStringId(IDC_FIND, IDS_FIND);
880 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
881 switches::kEnableDomDistiller))
882 AddItemWithStringId(IDC_DISTILL_PAGE, IDS_DISTILL_PAGE);
883 tools_menu_model_.reset(new ToolsMenuModel(this, browser_));
884 AddSubMenuWithStringId(
885 IDC_MORE_TOOLS_MENU, IDS_MORE_TOOLS_MENU, tools_menu_model_.get());
889 886
890 // Append the full menu including separators. The final separator only gets 887 // Append the full menu including separators. The final separator only gets
891 // appended when this is a touch menu - otherwise it would get added twice. 888 // appended when this is a touch menu - otherwise it would get added twice.
892 CreateCutCopyPasteMenu(); 889 CreateCutCopyPasteMenu();
893 890
894 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 891 AddItemWithStringId(IDC_OPTIONS, IDS_SETTINGS);
895 switches::kEnableDomDistiller)) {
896 AddItemWithStringId(IDC_DISTILL_PAGE, IDS_DISTILL_PAGE);
897 }
898
899 AddItemWithStringId(IDC_SAVE_PAGE, IDS_SAVE_PAGE);
900 AddItemWithStringId(IDC_FIND, IDS_FIND);
901 AddItemWithStringId(IDC_PRINT, IDS_PRINT);
902
903 tools_menu_model_.reset(new ToolsMenuModel(this, browser_));
904 CreateZoomMenu();
905
906 AddItemWithStringId(IDC_SHOW_HISTORY, IDS_SHOW_HISTORY);
907 AddItemWithStringId(IDC_SHOW_DOWNLOADS, IDS_SHOW_DOWNLOADS);
908 AddSeparator(ui::NORMAL_SEPARATOR);
909 892
910 #if !defined(OS_CHROMEOS) 893 #if !defined(OS_CHROMEOS)
911 if (!switches::IsNewAvatarMenu()) { 894 if (!switches::IsNewAvatarMenu()) {
912 // No "Sign in to Chromium..." menu item on ChromeOS. 895 // No "Sign in to Chromium..." menu item on ChromeOS.
913 SigninManager* signin = SigninManagerFactory::GetForProfile( 896 SigninManager* signin = SigninManagerFactory::GetForProfile(
914 browser_->profile()->GetOriginalProfile()); 897 browser_->profile()->GetOriginalProfile());
915 if (signin && signin->IsSigninAllowed()) { 898 if (signin && signin->IsSigninAllowed() &&
916 const base::string16 short_product_name = 899 signin_ui_util::GetSignedInServiceErrors(
917 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME); 900 browser_->profile()->GetOriginalProfile()).empty()) {
918 AddItem(IDC_SHOW_SYNC_SETUP, l10n_util::GetStringFUTF16( 901 AddItem(IDC_SHOW_SYNC_SETUP,
919 IDS_SYNC_MENU_PRE_SYNCED_LABEL, short_product_name)); 902 l10n_util::GetStringFUTF16(
920 AddSeparator(ui::NORMAL_SEPARATOR); 903 IDS_SYNC_MENU_PRE_SYNCED_LABEL,
904 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME)));
921 } 905 }
922 } 906 }
923 #endif 907 #endif
924 908
925 AddItemWithStringId(IDC_OPTIONS, IDS_SETTINGS);
926
927 // On ChromeOS we don't want the about menu option. 909 // On ChromeOS we don't want the about menu option.
928 #if !defined(OS_CHROMEOS) 910 #if !defined(OS_CHROMEOS)
929 AddItem(IDC_ABOUT, l10n_util::GetStringUTF16(IDS_ABOUT)); 911 AddItem(IDC_ABOUT, l10n_util::GetStringUTF16(IDS_ABOUT));
930 #endif 912 #endif
931 913
932 #if defined(GOOGLE_CHROME_BUILD) 914 #if defined(GOOGLE_CHROME_BUILD)
933 help_menu_model_.reset(new HelpMenuModel(this, browser_)); 915 help_menu_model_.reset(new HelpMenuModel(this, browser_));
934 AddSubMenuWithStringId(IDC_HELP_MENU, IDS_HELP_MENU, 916 AddSubMenuWithStringId(IDC_HELP_MENU, IDS_HELP_MENU,
935 help_menu_model_.get()); 917 help_menu_model_.get());
936 #endif 918 #endif
937 919
938 #if defined(OS_CHROMEOS) 920 #if defined(OS_CHROMEOS)
939 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 921 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
940 chromeos::switches::kEnableRequestTabletSite)) 922 chromeos::switches::kEnableRequestTabletSite))
941 AddCheckItemWithStringId(IDC_TOGGLE_REQUEST_TABLET_SITE, 923 AddCheckItemWithStringId(IDC_TOGGLE_REQUEST_TABLET_SITE,
942 IDS_TOGGLE_REQUEST_TABLET_SITE); 924 IDS_TOGGLE_REQUEST_TABLET_SITE);
943 #endif 925 #endif
944 926
945 if (browser_defaults::kShowUpgradeMenuItem)
946 AddItem(IDC_UPGRADE_DIALOG, GetUpgradeDialogMenuItemName());
947
948 #if defined(OS_WIN) 927 #if defined(OS_WIN)
949 SetIcon(GetIndexOfCommandId(IDC_VIEW_INCOMPATIBILITIES), 928 base::win::Version min_version_for_ash_mode = base::win::VERSION_WIN8;
950 ui::ResourceBundle::GetSharedInstance(). 929 // Windows 7 ASH mode is only supported in DEBUG for now.
951 GetNativeImageNamed(IDR_INPUT_ALERT_MENU)); 930 #if !defined(NDEBUG)
931 min_version_for_ash_mode = base::win::VERSION_WIN7;
952 #endif 932 #endif
953 933 // Windows 8 can support ASH mode using WARP, but Windows 7 requires a working
954 AddGlobalErrorMenuItems(); 934 // GPU compositor.
955 935 if ((base::win::GetVersion() >= min_version_for_ash_mode &&
956 AddSeparator(ui::NORMAL_SEPARATOR); 936 content::GpuDataManager::GetInstance()->CanUseGpuBrowserCompositor()) ||
957 AddSubMenuWithStringId( 937 (base::win::GetVersion() >= base::win::VERSION_WIN8)) {
958 IDC_MORE_TOOLS_MENU, IDS_MORE_TOOLS_MENU, tools_menu_model_.get()); 938 if (browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) {
939 // ASH/Metro mode, add the 'Relaunch Chrome in desktop mode'.
940 AddSeparator(ui::NORMAL_SEPARATOR);
941 AddItemWithStringId(IDC_WIN_DESKTOP_RESTART, IDS_WIN_DESKTOP_RESTART);
942 } else {
943 // In Windows 8 desktop, add the 'Relaunch Chrome in Windows 8 mode'.
944 // In Windows 7 desktop, add the 'Relaunch Chrome in Windows ASH mode'
945 AddSeparator(ui::NORMAL_SEPARATOR);
946 if (base::win::GetVersion() >= base::win::VERSION_WIN8)
947 AddItemWithStringId(IDC_WIN8_METRO_RESTART, IDS_WIN8_METRO_RESTART);
948 else
949 AddItemWithStringId(IDC_WIN_CHROMEOS_RESTART, IDS_WIN_CHROMEOS_RESTART);
950 }
951 }
952 #endif
959 953
960 bool show_exit_menu = browser_defaults::kShowExitMenuItem; 954 bool show_exit_menu = browser_defaults::kShowExitMenuItem;
961 #if defined(OS_WIN) 955 #if defined(OS_WIN)
962 if (browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) 956 if (browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH)
963 show_exit_menu = false; 957 show_exit_menu = false;
964 #endif 958 #endif
965 959
966 if (show_exit_menu) { 960 if (show_exit_menu) {
967 AddSeparator(ui::NORMAL_SEPARATOR); 961 AddSeparator(ui::NORMAL_SEPARATOR);
968 AddItemWithStringId(IDC_EXIT, IDS_EXIT); 962 AddItemWithStringId(IDC_EXIT, IDS_EXIT);
969 } 963 }
970
971 RemoveTrailingSeparators();
972 uma_action_recorded_ = false; 964 uma_action_recorded_ = false;
973 } 965 }
974 966
975 void WrenchMenuModel::AddGlobalErrorMenuItems() { 967 bool WrenchMenuModel::AddGlobalErrorMenuItems() {
976 // TODO(sail): Currently we only build the wrench menu once per browser 968 // TODO(sail): Currently we only build the wrench menu once per browser
977 // window. This means that if a new error is added after the menu is built 969 // window. This means that if a new error is added after the menu is built
978 // it won't show in the existing wrench menu. To fix this we need to some 970 // it won't show in the existing wrench menu. To fix this we need to some
979 // how update the menu if new errors are added. 971 // how update the menu if new errors are added.
980 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 972 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
981 // GetSignedInServiceErrors() can modify the global error list, so call it 973 // GetSignedInServiceErrors() can modify the global error list, so call it
982 // before iterating through that list below. 974 // before iterating through that list below.
983 std::vector<GlobalError*> signin_errors; 975 std::vector<GlobalError*> signin_errors;
984 signin_errors = signin_ui_util::GetSignedInServiceErrors( 976 signin_errors = signin_ui_util::GetSignedInServiceErrors(
985 browser_->profile()->GetOriginalProfile()); 977 browser_->profile()->GetOriginalProfile());
986 const GlobalErrorService::GlobalErrorList& errors = 978 const GlobalErrorService::GlobalErrorList& errors =
987 GlobalErrorServiceFactory::GetForProfile(browser_->profile())->errors(); 979 GlobalErrorServiceFactory::GetForProfile(browser_->profile())->errors();
980 bool menu_items_added = false;
988 for (GlobalErrorService::GlobalErrorList::const_iterator 981 for (GlobalErrorService::GlobalErrorList::const_iterator
989 it = errors.begin(); it != errors.end(); ++it) { 982 it = errors.begin(); it != errors.end(); ++it) {
990 GlobalError* error = *it; 983 GlobalError* error = *it;
991 DCHECK(error); 984 DCHECK(error);
992 if (error->HasMenuItem()) { 985 if (error->HasMenuItem()) {
993 #if !defined(OS_CHROMEOS) 986 #if !defined(OS_CHROMEOS)
994 // Don't add a signin error if it's already being displayed elsewhere. 987 // Don't add a signin error if it's already being displayed elsewhere.
995 if (std::find(signin_errors.begin(), signin_errors.end(), error) != 988 if (std::find(signin_errors.begin(), signin_errors.end(), error) !=
996 signin_errors.end()) { 989 signin_errors.end()) {
997 MenuModel* model = this; 990 MenuModel* model = this;
998 int index = 0; 991 int index = 0;
999 if (MenuModel::GetModelAndIndexForCommandId( 992 if (MenuModel::GetModelAndIndexForCommandId(
1000 IDC_SHOW_SIGNIN, &model, &index)) { 993 IDC_SHOW_SIGNIN, &model, &index)) {
1001 continue; 994 continue;
1002 } 995 }
1003 } 996 }
1004 #endif 997 #endif
1005 998
1006 AddItem(error->MenuItemCommandID(), error->MenuItemLabel()); 999 AddItem(error->MenuItemCommandID(), error->MenuItemLabel());
1007 int icon_id = error->MenuItemIconResourceID(); 1000 int icon_id = error->MenuItemIconResourceID();
1008 if (icon_id) { 1001 if (icon_id) {
1009 const gfx::Image& image = rb.GetNativeImageNamed(icon_id); 1002 const gfx::Image& image = rb.GetNativeImageNamed(icon_id);
1010 SetIcon(GetIndexOfCommandId(error->MenuItemCommandID()), 1003 SetIcon(GetIndexOfCommandId(error->MenuItemCommandID()),
1011 image); 1004 image);
1012 } 1005 }
1006 menu_items_added = true;
1013 } 1007 }
1014 } 1008 }
1009 return menu_items_added;
1015 } 1010 }
1016 1011
1017 void WrenchMenuModel::CreateExtensionToolbarOverflowMenu() { 1012 void WrenchMenuModel::CreateExtensionToolbarOverflowMenu() {
1018 // We only add the extensions overflow container if there are any icons that 1013 // We only add the extensions overflow container if there are any icons that
1019 // aren't shown in the main container. 1014 // aren't shown in the main container.
1020 if (!extensions::ExtensionToolbarModel::Get(browser_->profile())-> 1015 if (!extensions::ExtensionToolbarModel::Get(browser_->profile())->
1021 all_icons_visible()) { 1016 all_icons_visible()) {
1022 AddItem(IDC_EXTENSIONS_OVERFLOW_MENU, base::string16()); 1017 AddItem(IDC_EXTENSIONS_OVERFLOW_MENU, base::string16());
1023 AddSeparator(ui::UPPER_SEPARATOR); 1018 AddSeparator(ui::UPPER_SEPARATOR);
1024 } 1019 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1067 ->GetZoomPercent(); 1062 ->GetZoomPercent();
1068 } 1063 }
1069 zoom_label_ = l10n_util::GetStringFUTF16( 1064 zoom_label_ = l10n_util::GetStringFUTF16(
1070 IDS_ZOOM_PERCENT, base::IntToString16(zoom_percent)); 1065 IDS_ZOOM_PERCENT, base::IntToString16(zoom_percent));
1071 } 1066 }
1072 1067
1073 void WrenchMenuModel::OnZoomLevelChanged( 1068 void WrenchMenuModel::OnZoomLevelChanged(
1074 const content::HostZoomMap::ZoomLevelChange& change) { 1069 const content::HostZoomMap::ZoomLevelChange& change) {
1075 UpdateZoomControls(); 1070 UpdateZoomControls();
1076 } 1071 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/toolbar/wrench_menu_model.h ('k') | chrome/browser/ui/toolbar/wrench_menu_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698