chromium下面函数中添加“登录”按钮,需要如何修改
void AppMenuModel::Build() {
// Build (and, by extension, Init) should only be called once.
DCHECK_EQ(0u, GetItemCount());
if (app_menu_icon_controller_ && app_menu_icon_controller_->GetTypeAndSeverity().type == AppMenuIconController::IconType::UPGRADE_NOTIFICATION) {
AddSeparator(ui::SPACING_SEPARATOR);
const auto update_icon = ui::ImageModel::FromVectorIcon(kBrowserToolsUpdateChromeRefreshIcon, ui::kColorMenuIconOnEmphasizedBackground, kDefaultIconSize);
if (browser_defaults::kShowUpgradeMenuItem) {
AddItemWithIcon(IDC_UPGRADE_DIALOG, GetUpgradeDialogTitleText(), update_icon);
AddSeparator(ui::SPACING_SEPARATOR);
}
}
if (AddSafetyHubMenuItem() || AddGlobalErrorMenuItems() || AddDefaultBrowserMenuItems()) {
AddSeparator(ui::NORMAL_SEPARATOR);
}
AddItemWithStringIdAndVectorIcon(this, IDC_USER_LOGIN, IDS_DEVICE_LOG_TYPE_LOGIN, kPersonIcon);
AddSeparator(ui::NORMAL_SEPARATOR);
// 打开新的标签页
AddItemWithStringIdAndVectorIcon(this, IDC_NEW_TAB, browser_->profile()->IsIncognitoProfile() && !browser_->profile()->IsGuestSession() ? IDS_NEW_INCOGNITO_TAB : IDS_NEW_TAB, kNewTabRefreshIcon);
// 打开新的窗口
AddItemWithStringIdAndVectorIcon(this, IDC_NEW_WINDOW, IDS_NEW_WINDOW, kNewWindowIcon);
// This menu item is not visible in Guest Mode. If incognito mode is not
// available, it will be shown in disabled state. (crbug.com/1100791)
// 打开新的无痕式窗口
if (!browser_->profile()->IsGuestSession()) {
AddItemWithStringIdAndVectorIcon(this, IDC_NEW_INCOGNITO_WINDOW, IDS_NEW_INCOGNITO_WINDOW, kIncognitoRefreshMenuIcon);
SetElementIdentifierAt(GetIndexOfCommandId(IDC_NEW_INCOGNITO_WINDOW).value(), kIncognitoMenuItem);
}
// 分隔线
AddSeparator(ui::NORMAL_SEPARATOR);
#if !BUILDFLAG(IS_CHROMEOS)
sub_menus_.push_back(std::make_unique<ProfileSubMenuModel>(this, browser()->profile(), browser()->window()->GetColorProvider()));
auto* const profile_submenu_model = static_cast<ProfileSubMenuModel*>(sub_menus_.back().get());
// 您的chrome
AddSubMenu(IDC_PROFILE_MENU_IN_APP_MENU, profile_submenu_model->profile_name(), profile_submenu_model);
SetIcon(GetIndexOfCommandId(IDC_PROFILE_MENU_IN_APP_MENU).value(), profile_submenu_model->avatar_image_model());
SetElementIdentifierAt(GetIndexOfCommandId(IDC_PROFILE_MENU_IN_APP_MENU).value(), kProfileMenuItem);
AddSeparator(ui::SPACING_SEPARATOR);
#endif
// 密码和自动填充
if (!browser_->profile()->IsGuestSession()) {
sub_menus_.push_back(std::make_unique<PasswordsAndAutofillSubMenuModel>(this));
AddSubMenuWithStringIdAndVectorIcon(this, IDC_PASSWORDS_AND_AUTOFILL_MENU, IDS_PASSWORDS_AND_AUTOFILL_MENU, sub_menus_.back().get(), vector_icons::kPasswordManagerIcon);
SetElementIdentifierAt(GetIndexOfCommandId(IDC_PASSWORDS_AND_AUTOFILL_MENU).value(), kPasswordAndAutofillMenuItem);
}
// 历史记录
if (!browser_->profile()->IsOffTheRecord()) {
auto recent_tabs_sub_menu = std::make_unique<RecentTabsSubMenuModel>(provider_, browser_);
recent_tabs_sub_menu->RegisterLogMenuMetricsCallback(base::BindRepeating(&AppMenuModel::LogMenuMetrics, base::Unretained(this)));
sub_menus_.push_back(std::move(recent_tabs_sub_menu));
AddSubMenuWithStringIdAndVectorIcon(this, IDC_RECENT_TABS_MENU, IDS_HISTORY_MENU, sub_menus_.back().get(), kHistoryIcon);
SetElementIdentifierAt(GetIndexOfCommandId(IDC_RECENT_TABS_MENU).value(), kHistoryMenuItem);
}
// 下载内容
AddItemWithStringIdAndVectorIcon(this, IDC_SHOW_DOWNLOADS, IDS_SHOW_DOWNLOADS, kDownloadMenuIcon);
SetElementIdentifierAt(GetIndexOfCommandId(IDC_SHOW_DOWNLOADS).value(), kDownloadsMenuItem);
// 书签和清单
if (!browser_->profile()->IsGuestSession()) {
bookmark_sub_menu_model_ =
std::make_unique<BookmarkSubMenuModel>(this, browser_);
AddSubMenuWithStringIdAndVectorIcon(this, IDC_BOOKMARKS_MENU, IDS_BOOKMARKS_AND_LISTS_MENU, bookmark_sub_menu_model_.get(), kBookmarksListsMenuIcon);
SetElementIdentifierAt(GetIndexOfCommandId(IDC_BOOKMARKS_MENU).value(), kBookmarksMenuItem);
}
// 标签页分组
if (browser_->profile()->IsRegularProfile()) {
auto saved_tab_groups_model = std::make_unique<ui::SimpleMenuModel>(this);
sub_menus_.push_back(std::move(saved_tab_groups_model));
AddSubMenuWithStringIdAndVectorIcon(this, IDC_SAVED_TAB_GROUPS_MENU, IDS_SAVED_TAB_GROUPS_MENU, sub_menus_.back().get(), kSavedTabGroupBarEverythingIcon);
SetElementIdentifierAt(GetIndexOfCommandId(IDC_SAVED_TAB_GROUPS_MENU).value(), kTabGroupsMenuItem);
}
// Extensions sub menu.
//扩展程序
if (base::FeatureList::IsEnabled(features::kExtensionsCollapseMainMenu) && !extensions::ui_util::HasManageableExtensions(browser_->profile())) {
AddItemWithStringIdAndVectorIcon(this, IDC_FIND_EXTENSIONS, IDS_FIND_EXTENSIONS, vector_icons::kExtensionChromeRefreshIcon);
SetElementIdentifierAt(GetIndexOfCommandId(IDC_FIND_EXTENSIONS).value(), ExtensionsMenuModel::kVisitChromeWebStoreMenuItem);
}
else {
sub_menus_.push_back(std::make_unique<ExtensionsMenuModel>(this, browser_));
AddSubMenuWithStringIdAndVectorIcon(this, IDC_EXTENSIONS_SUBMENU, IDS_EXTENSIONS_SUBMENU, sub_menus_.back().get(), vector_icons::kExtensionChromeRefreshIcon);
SetElementIdentifierAt(GetIndexOfCommandId(IDC_EXTENSIONS_SUBMENU).value(), kExtensionsMenuItem);
}
// 删除浏览数据
AddItemWithStringIdAndVectorIcon(this, IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA, kTrashCanRefreshIcon);
AddSeparator(ui::NORMAL_SEPARATOR);
CreateZoomMenu(); // 缩放
AddSeparator(ui::NORMAL_SEPARATOR);
// 打印
AddItemWithStringIdAndVectorIcon(this, IDC_PRINT, IDS_PRINT, kPrintMenuIcon);
#if BUILDFLAG(ENABLE_GLIC)
if (glic::GlicEnabling::IsEnabledForProfile(browser_->profile())) {
AddItemWithStringIdAndVectorIcon(this, IDC_OPEN_GLIC, IDS_GLIC_THREE_DOT_MENU_ITEM, glic::GlicVectorIconManager::GetVectorIcon(IDR_GLIC_BUTTON_VECTOR_ICON));
SetIsNewFeatureAt(GetIndexOfCommandId(IDC_OPEN_GLIC).value(), browser()->window()->MaybeShowNewBadgeFor(features::kGlicAppMenuNewBadge));
}
#endif
// 使用Google智能镜头搜索
if (browser()->GetFeatures().lens_overlay_entry_point_controller()->IsEnabled()) {
const gfx::VectorIcon& icon =
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
vector_icons::kGoogleLensMonochromeLogoIcon;
#else
vector_icons::kSearchChromeRefreshIcon;
#endif
AddItemWithStringIdAndVectorIcon(this, IDC_CONTENT_CONTEXT_LENS_OVERLAY, IDS_SHOW_LENS_OVERLAY, icon);
const int lens_command_index = GetIndexOfCommandId(IDC_CONTENT_CONTEXT_LENS_OVERLAY).value();
SetElementIdentifierAt(lens_command_index, kShowLensOverlay);
SetIsNewFeatureAt(lens_command_index, browser()->window()->MaybeShowNewBadgeFor(lens::features::kLensOverlay));
}
//翻译
AddItemWithStringIdAndVectorIcon(this, IDC_SHOW_TRANSLATE, IDS_SHOW_TRANSLATE, kTranslateIcon);
// 查找和修改
CreateFindAndEditSubMenu();
// 投放、保存和分享
sub_menus_.push_back(std::make_unique<SaveAndShareSubMenuModel>(this, browser_));
int string_id = media_router::MediaRouterEnabled(browser()->profile()) ? IDS_CAST_SAVE_AND_SHARE_MENU : IDS_SAVE_AND_SHARE_MENU;
AddSubMenuWithStringIdAndVectorIcon(this, IDC_SAVE_AND_SHARE_MENU, string_id, sub_menus_.back().get(), kFileSaveChromeRefreshIcon);
SetElementIdentifierAt(GetIndexOfCommandId(IDC_SAVE_AND_SHARE_MENU).value(), kSaveAndShareMenuItem);
#if BUILDFLAG(IS_CHROMEOS)
// Always show this option if we're in tablet mode on Chrome OS.
if (display::Screen::GetScreen()->InTabletMode()) {
AddItemWithStringIdAndVectorIcon(this, IDC_TOGGLE_REQUEST_TABLET_SITE, IDS_TOGGLE_REQUEST_TABLET_SITE, chrome::IsRequestingTabletSite(browser_)
? kRequestMobileSiteCheckedIcon : kRequestMobileSiteUncheckedIcon);
}
#endif
// 更多工具
sub_menus_.push_back(std::make_unique<ToolsMenuModel>(this, browser_));
AddSubMenuWithStringIdAndVectorIcon(this, IDC_MORE_TOOLS_MENU, IDS_MORE_TOOLS_MENU, sub_menus_.back().get(), kMoreToolsMenuIcon);
SetElementIdentifierAt(GetIndexOfCommandId(IDC_MORE_TOOLS_MENU).value(), kMoreToolsMenuItem);
AddSeparator(ui::NORMAL_SEPARATOR);
// The help submenu is only displayed on official Chrome builds. As the
// 'About' item has been moved to this submenu, it's reinstated here for
// Chromium builds.
// 帮助
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
sub_menus_.push_back(std::make_unique<HelpMenuModel>(this, browser_));
AddSubMenuWithStringIdAndVectorIcon(this, IDC_HELP_MENU, IDS_HELP_MENU, sub_menus_.back().get(), kHelpMenuIcon);
#else
#if BUILDFLAG(IS_CHROMEOS)
AddItem(IDC_ABOUT, l10n_util::GetStringUTF16(IDS_ABOUT));
#else
AddItemWithStringIdAndVectorIcon(this, IDC_ABOUT, IDS_ABOUT, vector_icons::kInfoRefreshIcon);
#endif
#endif
// 设置
AddItemWithStringIdAndVectorIcon(this, IDC_OPTIONS, IDS_SETTINGS, kSettingsMenuIcon);
// 退出
if (browser_defaults::kShowExitMenuItem) {
AddItemWithStringIdAndVectorIcon(this, IDC_EXIT, IDS_EXIT, kExitMenuIcon);
}
// On Chrome OS, similar UI is displayed in the system tray menu, instead of
// this menu.
#if !BUILDFLAG(IS_CHROMEOS)
if (ShouldDisplayManagedUi(browser_->profile())) {
AddSeparator(ui::NORMAL_SEPARATOR);
AddItemWithIcon(IDC_SHOW_MANAGEMENT_PAGE, GetManagedUiMenuItemLabel(browser_->profile()),
ui::ImageModel::FromVectorIcon(GetManagedUiIcon(browser_->profile()), ui::kColorMenuIcon, kDefaultIconSize));
SetAccessibleNameAt(GetIndexOfCommandId(IDC_SHOW_MANAGEMENT_PAGE).value(), GetManagedUiMenuItemTooltip(browser_->profile()));
}
#endif // !BUILDFLAG(IS_CHROMEOS)
uma_action_recorded_ = false;
}
最新发布