blob: adf2ad90ce372d2b77b445056aebbe06d8c9bd00 [file] [log] [blame]
// Copyright 2019 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 "chrome/browser/ui/views/toolbar/button_utils.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_command_controller.h"
#include "chrome/browser/ui/toolbar/back_forward_menu_model.h"
#include "chrome/browser/ui/view_ids.h"
#include "chrome/browser/ui/views/toolbar/home_button.h"
#include "chrome/browser/ui/views/toolbar/toolbar_button.h"
#include "chrome/grit/generated_resources.h"
#include "components/strings/grit/components_strings.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/events/event_constants.h"
#include "ui/views/accessibility/view_accessibility.h"
#if defined(OS_WIN)
#include "base/win/windows_version.h"
#endif
std::unique_ptr<ToolbarButton> CreateBackButton(views::ButtonListener* listener,
Browser* browser) {
auto back = std::make_unique<ToolbarButton>(
listener,
std::make_unique<BackForwardMenuModel>(
browser, BackForwardMenuModel::ModelType::kBackward),
browser->tab_strip_model());
back->set_hide_ink_drop_when_showing_context_menu(false);
back->set_triggerable_event_flags(ui::EF_LEFT_MOUSE_BUTTON |
ui::EF_MIDDLE_MOUSE_BUTTON);
back->set_tag(IDC_BACK);
back->SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_BACK));
back->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_BACK));
back->GetViewAccessibility().OverrideDescription(
l10n_util::GetStringUTF8(IDS_ACCDESCRIPTION_BACK));
back->SetID(VIEW_ID_BACK_BUTTON);
back->Init();
return back;
}
std::unique_ptr<ToolbarButton> CreateForwardButton(
views::ButtonListener* listener,
Browser* browser) {
auto forward = std::make_unique<ToolbarButton>(
listener,
std::make_unique<BackForwardMenuModel>(
browser, BackForwardMenuModel::ModelType::kForward),
browser->tab_strip_model());
forward->set_hide_ink_drop_when_showing_context_menu(false);
forward->set_triggerable_event_flags(ui::EF_LEFT_MOUSE_BUTTON |
ui::EF_MIDDLE_MOUSE_BUTTON);
forward->set_tag(IDC_FORWARD);
forward->SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_FORWARD));
forward->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_FORWARD));
forward->GetViewAccessibility().OverrideDescription(
l10n_util::GetStringUTF8(IDS_ACCDESCRIPTION_FORWARD));
forward->SetID(VIEW_ID_FORWARD_BUTTON);
forward->Init();
return forward;
}
std::unique_ptr<ReloadButton> CreateReloadButton(
Browser* browser,
ReloadButton::IconStyle icon_style) {
auto reload =
std::make_unique<ReloadButton>(browser->command_controller(), icon_style);
reload->set_triggerable_event_flags(ui::EF_LEFT_MOUSE_BUTTON |
ui::EF_MIDDLE_MOUSE_BUTTON);
reload->set_tag(IDC_RELOAD);
reload->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_RELOAD));
reload->SetID(VIEW_ID_RELOAD_BUTTON);
reload->Init();
return reload;
}
std::unique_ptr<HomeButton> CreateHomeButton(views::ButtonListener* listener,
Browser* browser) {
auto home = std::make_unique<HomeButton>(listener, browser);
home->set_triggerable_event_flags(ui::EF_LEFT_MOUSE_BUTTON |
ui::EF_MIDDLE_MOUSE_BUTTON);
home->set_tag(IDC_HOME);
home->SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_HOME));
home->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_HOME));
home->SetID(VIEW_ID_HOME_BUTTON);
home->Init();
home->SizeToPreferredSize();
return home;
}
#if defined(OS_WIN)
bool UseWindowsIconsForMinimalUI() {
return base::win::GetVersion() >= base::win::Version::WIN10;
}
#endif