Skip to content

Commit

Permalink
Added accelerator for toggle sidebar
Browse files Browse the repository at this point in the history
fix brave/brave-browser#27994

Ctrl+B(Cmd+B on macOS) toggles sidebar.
  • Loading branch information
simonhong committed Feb 27, 2023
1 parent 72e0034 commit 36dd742
Show file tree
Hide file tree
Showing 14 changed files with 48 additions and 0 deletions.
1 change: 1 addition & 0 deletions app/brave_command_ids.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
#define IDC_TOGGLE_TAB_MUTE 56041
#define IDC_SIDEBAR_TOGGLE_POSITION 56042
#define IDC_CONTENT_CONTEXT_COPY_TEXT_FROM_IMAGE 56043
#define IDC_TOGGLE_SIDEBAR 56044

#define IDC_CONTENT_CONTEXT_IMPORT_IPNS_KEYS_START 56100
#define IDC_CONTENT_CONTEXT_IMPORT_IPNS_KEYS_END 56199
Expand Down
1 change: 1 addition & 0 deletions app/command_utils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ const base::flat_map<uint16_t, std::string>& GetCommandInfo() {
ADD_UNTRANSLATED_COMMAND(TOGGLE_BRAVE_VPN),
ADD_UNTRANSLATED_COMMAND(COPY_CLEAN_LINK),
ADD_UNTRANSLATED_COMMAND(SIDEBAR_TOGGLE_POSITION),
ADD_UNTRANSLATED_COMMAND(TOGGLE_SIDEBAR),
ADD_UNTRANSLATED_COMMAND(TOGGLE_TAB_MUTE)
});
return *kCommands;
Expand Down
4 changes: 4 additions & 0 deletions browser/ui/brave_browser_command_controller.cc
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ void BraveBrowserCommandController::UpdateCommandForSidebar() {
if (sidebar::CanUseSidebar(browser_)) {
UpdateCommandEnabled(IDC_SIDEBAR_SHOW_OPTION_MENU, true);
UpdateCommandEnabled(IDC_SIDEBAR_TOGGLE_POSITION, true);
UpdateCommandEnabled(IDC_TOGGLE_SIDEBAR, true);
}
}

Expand Down Expand Up @@ -311,6 +312,9 @@ bool BraveBrowserCommandController::ExecuteBraveCommandWithDisposition(
case IDC_SIDEBAR_TOGGLE_POSITION:
brave::ToggleSidebarPosition(browser_);
break;
case IDC_TOGGLE_SIDEBAR:
brave::ToggleSidebar(browser_);
break;
case IDC_COPY_CLEAN_LINK:
brave::CopySanitizedURL(
browser_,
Expand Down
2 changes: 2 additions & 0 deletions browser/ui/brave_browser_command_controller_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ IN_PROC_BROWSER_TEST_F(BraveBrowserCommandControllerTest,
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_OPEN_GUEST_PROFILE));
EXPECT_TRUE(
command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_WEBCOMPAT_REPORTER));

EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_TOGGLE_SIDEBAR));
}

// Create private browser and test its brave commands status.
Expand Down
2 changes: 2 additions & 0 deletions browser/ui/brave_browser_window.cc
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ sidebar::Sidebar* BraveBrowserWindow::InitSidebar() {
return nullptr;
}

void BraveBrowserWindow::ToggleSidebar() {}

bool BraveBrowserWindow::HasSelectedURL() const {
return false;
}
Expand Down
1 change: 1 addition & 0 deletions browser/ui/brave_browser_window.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ class BraveBrowserWindow : public BrowserWindow {

#if defined(TOOLKIT_VIEWS)
virtual sidebar::Sidebar* InitSidebar();
virtual void ToggleSidebar();
virtual bool HasSelectedURL() const;
virtual void CleanAndCopySelectedURL();
#endif
Expand Down
11 changes: 11 additions & 0 deletions browser/ui/browser_commands.cc
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,17 @@ void ToggleSidebarPosition(Browser* browser) {
!prefs->GetBoolean(prefs::kSidePanelHorizontalAlignment));
}

void ToggleSidebar(Browser* browser) {
if (!browser) {
return;
}

if (auto* brave_browser_window =
BraveBrowserWindow::From(browser->window())) {
brave_browser_window->ToggleSidebar();
}
}

bool HasSelectedURL(Browser* browser) {
if (!browser) {
return false;
Expand Down
1 change: 1 addition & 0 deletions browser/ui/browser_commands.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ void ToggleVerticalTabStrip(Browser* browser);
void ToggleVerticalTabStripFloatingMode(Browser* browser);
void ToggleActiveTabAudioMute(Browser* browser);
void ToggleSidebarPosition(Browser* browser);
void ToggleSidebar(Browser* browser);

} // namespace brave

Expand Down
1 change: 1 addition & 0 deletions browser/ui/sidebar/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ source_set("browser_tests") {

deps = [
"//base",
"//brave/app:command_ids",
"//brave/browser/ui",
"//brave/browser/ui/sidebar",
"//brave/browser/ui/tabs",
Expand Down
15 changes: 15 additions & 0 deletions browser/ui/sidebar/sidebar_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "base/run_loop.h"
#include "base/test/bind.h"
#include "base/test/scoped_feature_list.h"
#include "brave/app/brave_command_ids.h"
#include "brave/browser/ui/brave_browser.h"
#include "brave/browser/ui/browser_commands.h"
#include "brave/browser/ui/sidebar/sidebar_controller.h"
Expand All @@ -24,6 +25,7 @@
#include "brave/components/sidebar/sidebar_service.h"
#include "build/build_config.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser_command_controller.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
Expand All @@ -39,6 +41,7 @@
#include "ui/gfx/geometry/point.h"

using ::testing::Eq;
using ::testing::Ne;
using ::testing::Optional;

namespace sidebar {
Expand Down Expand Up @@ -145,6 +148,18 @@ IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, BasicTest) {
// Check sidebar UI is initalized properly.
EXPECT_TRUE(!!controller()->sidebar());

browser()->command_controller()->ExecuteCommand(IDC_TOGGLE_SIDEBAR);
WaitUntil(
base::BindLambdaForTesting([&]() { return !!model()->active_index(); }));
// Check active index is non-null.
EXPECT_THAT(model()->active_index(), Ne(absl::nullopt));

browser()->command_controller()->ExecuteCommand(IDC_TOGGLE_SIDEBAR);
WaitUntil(
base::BindLambdaForTesting([&]() { return !model()->active_index(); }));
// Check active index is null.
EXPECT_THAT(model()->active_index(), Eq(absl::nullopt));

// Currently we have 4 default items.
EXPECT_EQ(4UL, model()->GetAllSidebarItems().size());
// Activate item that opens in panel.
Expand Down
1 change: 1 addition & 0 deletions browser/ui/views/accelerator_table_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,5 @@ bool HasCommandID(int command_id) {

TEST(AcceleratorTableTest, CheckBraveAccelerators) {
EXPECT_TRUE(HasCommandID(IDC_NEW_OFFTHERECORD_WINDOW_TOR));
EXPECT_TRUE(HasCommandID(IDC_TOGGLE_SIDEBAR));
}
5 changes: 5 additions & 0 deletions browser/ui/views/frame/brave_browser_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
#include "chrome/browser/ui/frame/window_frame_util.h"
#include "chrome/browser/ui/views/frame/contents_layout_manager.h"
#include "chrome/browser/ui/views/frame/tab_strip_region_view.h"
#include "chrome/browser/ui/views/side_panel/side_panel_coordinator.h"
#include "chrome/browser/ui/views/tabs/tab_search_button.h"
#include "chrome/browser/ui/views/toolbar/browser_app_menu_button.h"
#include "chrome/common/pref_names.h"
Expand Down Expand Up @@ -268,6 +269,10 @@ sidebar::Sidebar* BraveBrowserView::InitSidebar() {
return sidebar_container_view_;
}

void BraveBrowserView::ToggleSidebar() {
side_panel_coordinator()->Toggle();
}

void BraveBrowserView::ShowBraveVPNBubble() {
#if BUILDFLAG(ENABLE_BRAVE_VPN)
vpn_panel_controller_.ShowBraveVPNPanel();
Expand Down
1 change: 1 addition & 0 deletions browser/ui/views/frame/brave_browser_view.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ class BraveBrowserView : public BrowserView {
BraveBrowser* GetBraveBrowser() const;

sidebar::Sidebar* InitSidebar() override;
void ToggleSidebar() override;
bool HasSelectedURL() const override;
void CleanAndCopySelectedURL() override;
void UpdateSideBarHorizontalAlignment();
Expand Down
2 changes: 2 additions & 0 deletions chromium_src/chrome/browser/ui/views/accelerator_table.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ namespace {

const AcceleratorMapping kBraveAcceleratorMap[] = {
{ui::VKEY_M, ui::EF_CONTROL_DOWN, IDC_TOGGLE_TAB_MUTE},
// Ctrl+B(or Cmd+B)
{ui::VKEY_B, ui::EF_PLATFORM_ACCELERATOR, IDC_TOGGLE_SIDEBAR},
#if BUILDFLAG(IS_MAC)
// Command-Option-N
{ui::VKEY_N, ui::EF_ALT_DOWN | ui::EF_PLATFORM_ACCELERATOR,
Expand Down

0 comments on commit 36dd742

Please sign in to comment.