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

Side by Side Diff: ios/chrome/browser/ui/tools_menu/tools_menu_model.mm

Issue 2706293008: [ios] Creates ToolsMenuModel Class (Closed)
Patch Set: Format Created 3 years, 10 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
(Empty)
1 // Copyright 2017 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 "ios/chrome/browser/ui/tools_menu/tools_menu_model.h"
6
7 #include "components/reading_list/core/reading_list_switches.h"
8 #include "components/strings/grit/components_strings.h"
9 #include "ios/chrome/browser/experimental_flags.h"
10 #include "ios/chrome/browser/ui/commands/ios_command_ids.h"
11 #import "ios/chrome/browser/ui/tools_menu/reading_list_menu_view_item.h"
12 #include "ios/chrome/browser/ui/ui_util.h"
13 #include "ios/chrome/grit/ios_strings.h"
14 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
15 #import "ios/public/provider/chrome/browser/user_feedback/user_feedback_provider .h"
16
17 NSString* const kToolsMenuNewTabId = @"kToolsMenuNewTabId";
18 NSString* const kToolsMenuNewIncognitoTabId = @"kToolsMenuNewIncognitoTabId";
19 NSString* const kToolsMenuCloseAllTabsId = @"kToolsMenuCloseAllTabsId";
20 NSString* const kToolsMenuCloseAllIncognitoTabsId =
21 @"kToolsMenuCloseAllIncognitoTabsId";
22 NSString* const kToolsMenuBookmarksId = @"kToolsMenuBookmarksId";
23 NSString* const kToolsMenuReadingListId = @"kToolsMenuReadingListId";
24 NSString* const kToolsMenuOtherDevicesId = @"kToolsMenuOtherDevicesId";
25 NSString* const kToolsMenuHistoryId = @"kToolsMenuHistoryId";
26 NSString* const kToolsMenuReportAnIssueId = @"kToolsMenuReportAnIssueId";
27 NSString* const kToolsMenuFindInPageId = @"kToolsMenuFindInPageId";
28 NSString* const kToolsMenuReaderMode = @"kToolsMenuReaderMode";
29 NSString* const kToolsMenuRequestDesktopId = @"kToolsMenuRequestDesktopId";
30 NSString* const kToolsMenuSettingsId = @"kToolsMenuSettingsId";
31 NSString* const kToolsMenuHelpId = @"kToolsMenuHelpId";
32 NSString* const kToolsMenuSuggestionsId = @"kToolsMenuSuggestionsId";
33
34 // Menu items can be marked as visible or not when Incognito is enabled.
35 // The following bits are used for |visibility| field in |MenuItemInfo|.
36 const NSInteger kVisibleIncognitoOnly = 1 << 0;
37 const NSInteger kVisibleNotIncognitoOnly = 1 << 1;
38
39 // Declare all the possible items.
40 const MenuItemInfo itemInfoList[] = {
41 // clang-format off
42 { IDS_IOS_TOOLS_MENU_NEW_TAB, kToolsMenuNewTabId,
43 IDC_NEW_TAB, ToolbarTypeAll,
44 0, nil },
45 { IDS_IOS_TOOLS_MENU_NEW_INCOGNITO_TAB, kToolsMenuNewIncognitoTabId,
46 IDC_NEW_INCOGNITO_TAB, ToolbarTypeAll,
47 0, nil },
48 { IDS_IOS_TOOLS_MENU_CLOSE_ALL_TABS, kToolsMenuCloseAllTabsId,
49 IDC_CLOSE_ALL_TABS, ToolbarTypeSwitcheriPhone,
50 kVisibleNotIncognitoOnly, nil },
51 { IDS_IOS_TOOLS_MENU_CLOSE_ALL_INCOGNITO_TABS,
52 kToolsMenuCloseAllIncognitoTabsId,
53 IDC_CLOSE_ALL_INCOGNITO_TABS, ToolbarTypeSwitcheriPhone,
54 kVisibleIncognitoOnly, nil },
55 { IDS_IOS_TOOLS_MENU_BOOKMARKS, kToolsMenuBookmarksId,
56 IDC_SHOW_BOOKMARK_MANAGER, ToolbarTypeWebAll,
57 0, nil },
58 { IDS_IOS_TOOLS_MENU_READING_LIST, kToolsMenuReadingListId,
59 IDC_SHOW_READING_LIST, ToolbarTypeWebAll,
60 0, [ReadingListMenuViewItem class] },
61 { IDS_IOS_TOOLS_MENU_SUGGESTIONS, kToolsMenuSuggestionsId,
62 IDC_SHOW_SUGGESTIONS, ToolbarTypeWebAll,
63 0, nil },
64 { IDS_IOS_TOOLS_MENU_RECENT_TABS, kToolsMenuOtherDevicesId,
65 IDC_SHOW_OTHER_DEVICES, ToolbarTypeWebAll,
66 kVisibleNotIncognitoOnly, nil },
67 { IDS_HISTORY_SHOW_HISTORY, kToolsMenuHistoryId,
68 IDC_SHOW_HISTORY, ToolbarTypeWebAll,
69 0, nil },
70 { IDS_IOS_OPTIONS_REPORT_AN_ISSUE, kToolsMenuReportAnIssueId,
71 IDC_REPORT_AN_ISSUE, ToolbarTypeAll,
72 0, nil },
73 { IDS_IOS_TOOLS_MENU_FIND_IN_PAGE, kToolsMenuFindInPageId,
74 IDC_FIND, ToolbarTypeWebAll,
75 0, nil },
76 { IDS_IOS_TOOLS_MENU_REQUEST_DESKTOP_SITE, kToolsMenuRequestDesktopId,
77 IDC_REQUEST_DESKTOP_SITE, ToolbarTypeWebAll,
78 0, nil },
79 { IDS_IOS_TOOLS_MENU_READER_MODE, kToolsMenuReaderMode,
80 IDC_READER_MODE, ToolbarTypeWebAll,
81 0, nil },
82 { IDS_IOS_TOOLS_MENU_SETTINGS, kToolsMenuSettingsId,
83 IDC_OPTIONS, ToolbarTypeAll,
84 0, nil },
85 { IDS_IOS_TOOLS_MENU_HELP_MOBILE, kToolsMenuHelpId,
86 IDC_HELP_PAGE_VIA_MENU, ToolbarTypeWebAll,
87 0, nil },
88 // clang-format on
89 };
90
91 bool ToolsMenuItemShouldBeVisible(const MenuItemInfo& item,
92 bool incognito,
93 ToolbarType toolbarType) {
94 if (!(item.toolbar_types & toolbarType))
95 return false;
96
97 if (incognito && (item.visibility & kVisibleNotIncognitoOnly))
98 return false;
99
100 if (!incognito && (item.visibility & kVisibleIncognitoOnly))
101 return false;
102
103 switch (item.title_id) {
104 case IDS_IOS_TOOLBAR_SHOW_TABS:
105 return IsIPadIdiom();
106 case IDS_IOS_TOOLS_MENU_READER_MODE:
107 return experimental_flags::IsReaderModeEnabled();
108 case IDS_IOS_TOOLS_MENU_READING_LIST:
109 return reading_list::switches::IsReadingListEnabled();
110 case IDS_IOS_TOOLS_MENU_SUGGESTIONS:
111 return experimental_flags::IsSuggestionsUIEnabled();
112 case IDS_IOS_OPTIONS_REPORT_AN_ISSUE:
113 return !ios::GetChromeBrowserProvider()
114 ->GetUserFeedbackProvider()
115 ->IsUserFeedbackEnabled();
116 default:
117 return true;
118 }
119 }
OLDNEW
« no previous file with comments | « ios/chrome/browser/ui/tools_menu/tools_menu_model.h ('k') | ios/chrome/browser/ui/tools_menu/tools_menu_view_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698