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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/tools_menu/tools_menu_model.mm
diff --git a/ios/chrome/browser/ui/tools_menu/tools_menu_model.mm b/ios/chrome/browser/ui/tools_menu/tools_menu_model.mm
new file mode 100644
index 0000000000000000000000000000000000000000..6556f3ad473d1560839c3fc19981a6cfd73848eb
--- /dev/null
+++ b/ios/chrome/browser/ui/tools_menu/tools_menu_model.mm
@@ -0,0 +1,119 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ios/chrome/browser/ui/tools_menu/tools_menu_model.h"
+
+#include "components/reading_list/core/reading_list_switches.h"
+#include "components/strings/grit/components_strings.h"
+#include "ios/chrome/browser/experimental_flags.h"
+#include "ios/chrome/browser/ui/commands/ios_command_ids.h"
+#import "ios/chrome/browser/ui/tools_menu/reading_list_menu_view_item.h"
+#include "ios/chrome/browser/ui/ui_util.h"
+#include "ios/chrome/grit/ios_strings.h"
+#include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
+#import "ios/public/provider/chrome/browser/user_feedback/user_feedback_provider.h"
+
+NSString* const kToolsMenuNewTabId = @"kToolsMenuNewTabId";
+NSString* const kToolsMenuNewIncognitoTabId = @"kToolsMenuNewIncognitoTabId";
+NSString* const kToolsMenuCloseAllTabsId = @"kToolsMenuCloseAllTabsId";
+NSString* const kToolsMenuCloseAllIncognitoTabsId =
+ @"kToolsMenuCloseAllIncognitoTabsId";
+NSString* const kToolsMenuBookmarksId = @"kToolsMenuBookmarksId";
+NSString* const kToolsMenuReadingListId = @"kToolsMenuReadingListId";
+NSString* const kToolsMenuOtherDevicesId = @"kToolsMenuOtherDevicesId";
+NSString* const kToolsMenuHistoryId = @"kToolsMenuHistoryId";
+NSString* const kToolsMenuReportAnIssueId = @"kToolsMenuReportAnIssueId";
+NSString* const kToolsMenuFindInPageId = @"kToolsMenuFindInPageId";
+NSString* const kToolsMenuReaderMode = @"kToolsMenuReaderMode";
+NSString* const kToolsMenuRequestDesktopId = @"kToolsMenuRequestDesktopId";
+NSString* const kToolsMenuSettingsId = @"kToolsMenuSettingsId";
+NSString* const kToolsMenuHelpId = @"kToolsMenuHelpId";
+NSString* const kToolsMenuSuggestionsId = @"kToolsMenuSuggestionsId";
+
+// Menu items can be marked as visible or not when Incognito is enabled.
+// The following bits are used for |visibility| field in |MenuItemInfo|.
+const NSInteger kVisibleIncognitoOnly = 1 << 0;
+const NSInteger kVisibleNotIncognitoOnly = 1 << 1;
+
+// Declare all the possible items.
+const MenuItemInfo itemInfoList[] = {
+ // clang-format off
+ { IDS_IOS_TOOLS_MENU_NEW_TAB, kToolsMenuNewTabId,
+ IDC_NEW_TAB, ToolbarTypeAll,
+ 0, nil },
+ { IDS_IOS_TOOLS_MENU_NEW_INCOGNITO_TAB, kToolsMenuNewIncognitoTabId,
+ IDC_NEW_INCOGNITO_TAB, ToolbarTypeAll,
+ 0, nil },
+ { IDS_IOS_TOOLS_MENU_CLOSE_ALL_TABS, kToolsMenuCloseAllTabsId,
+ IDC_CLOSE_ALL_TABS, ToolbarTypeSwitcheriPhone,
+ kVisibleNotIncognitoOnly, nil },
+ { IDS_IOS_TOOLS_MENU_CLOSE_ALL_INCOGNITO_TABS,
+ kToolsMenuCloseAllIncognitoTabsId,
+ IDC_CLOSE_ALL_INCOGNITO_TABS, ToolbarTypeSwitcheriPhone,
+ kVisibleIncognitoOnly, nil },
+ { IDS_IOS_TOOLS_MENU_BOOKMARKS, kToolsMenuBookmarksId,
+ IDC_SHOW_BOOKMARK_MANAGER, ToolbarTypeWebAll,
+ 0, nil },
+ { IDS_IOS_TOOLS_MENU_READING_LIST, kToolsMenuReadingListId,
+ IDC_SHOW_READING_LIST, ToolbarTypeWebAll,
+ 0, [ReadingListMenuViewItem class] },
+ { IDS_IOS_TOOLS_MENU_SUGGESTIONS, kToolsMenuSuggestionsId,
+ IDC_SHOW_SUGGESTIONS, ToolbarTypeWebAll,
+ 0, nil },
+ { IDS_IOS_TOOLS_MENU_RECENT_TABS, kToolsMenuOtherDevicesId,
+ IDC_SHOW_OTHER_DEVICES, ToolbarTypeWebAll,
+ kVisibleNotIncognitoOnly, nil },
+ { IDS_HISTORY_SHOW_HISTORY, kToolsMenuHistoryId,
+ IDC_SHOW_HISTORY, ToolbarTypeWebAll,
+ 0, nil },
+ { IDS_IOS_OPTIONS_REPORT_AN_ISSUE, kToolsMenuReportAnIssueId,
+ IDC_REPORT_AN_ISSUE, ToolbarTypeAll,
+ 0, nil },
+ { IDS_IOS_TOOLS_MENU_FIND_IN_PAGE, kToolsMenuFindInPageId,
+ IDC_FIND, ToolbarTypeWebAll,
+ 0, nil },
+ { IDS_IOS_TOOLS_MENU_REQUEST_DESKTOP_SITE, kToolsMenuRequestDesktopId,
+ IDC_REQUEST_DESKTOP_SITE, ToolbarTypeWebAll,
+ 0, nil },
+ { IDS_IOS_TOOLS_MENU_READER_MODE, kToolsMenuReaderMode,
+ IDC_READER_MODE, ToolbarTypeWebAll,
+ 0, nil },
+ { IDS_IOS_TOOLS_MENU_SETTINGS, kToolsMenuSettingsId,
+ IDC_OPTIONS, ToolbarTypeAll,
+ 0, nil },
+ { IDS_IOS_TOOLS_MENU_HELP_MOBILE, kToolsMenuHelpId,
+ IDC_HELP_PAGE_VIA_MENU, ToolbarTypeWebAll,
+ 0, nil },
+ // clang-format on
+};
+
+bool ToolsMenuItemShouldBeVisible(const MenuItemInfo& item,
+ bool incognito,
+ ToolbarType toolbarType) {
+ if (!(item.toolbar_types & toolbarType))
+ return false;
+
+ if (incognito && (item.visibility & kVisibleNotIncognitoOnly))
+ return false;
+
+ if (!incognito && (item.visibility & kVisibleIncognitoOnly))
+ return false;
+
+ switch (item.title_id) {
+ case IDS_IOS_TOOLBAR_SHOW_TABS:
+ return IsIPadIdiom();
+ case IDS_IOS_TOOLS_MENU_READER_MODE:
+ return experimental_flags::IsReaderModeEnabled();
+ case IDS_IOS_TOOLS_MENU_READING_LIST:
+ return reading_list::switches::IsReadingListEnabled();
+ case IDS_IOS_TOOLS_MENU_SUGGESTIONS:
+ return experimental_flags::IsSuggestionsUIEnabled();
+ case IDS_IOS_OPTIONS_REPORT_AN_ISSUE:
+ return !ios::GetChromeBrowserProvider()
+ ->GetUserFeedbackProvider()
+ ->IsUserFeedbackEnabled();
+ default:
+ return true;
+ }
+}
« 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