| 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;
|
| + }
|
| +}
|
|
|