diff --git a/browser/ui/sidebar/sidebar_browsertest.cc b/browser/ui/sidebar/sidebar_browsertest.cc index 47d26dbf737..af158ebe9bd 100644 --- a/browser/ui/sidebar/sidebar_browsertest.cc +++ b/browser/ui/sidebar/sidebar_browsertest.cc @@ -10,6 +10,7 @@ #include "brave/browser/ui/sidebar/sidebar_service_factory.h" #include "brave/browser/ui/sidebar/sidebar_utils.h" #include "brave/browser/ui/views/frame/brave_browser_view.h" +#include "brave/browser/ui/views/side_panel/brave_side_panel.h" #include "brave/browser/ui/views/sidebar/sidebar_container_view.h" #include "brave/browser/ui/views/sidebar/sidebar_control_view.h" #include "brave/browser/ui/views/sidebar/sidebar_items_contents_view.h" @@ -88,10 +89,22 @@ class SidebarBrowserTest : public InProcessBrowserTest { sidebar_items_contents_view->OnItemPressed(item, event); } + SidebarControlView* GetSidebarControlView() const { + return GetSidebarContainerView()->sidebar_control_view_; + } + + SidebarContainerView* GetSidebarContainerView() const { + return static_cast(controller()->sidebar()); + } + + BraveSidePanel* GetSidePanel() const { + return GetSidebarContainerView()->side_panel_; + } + bool IsSidebarUIOnLeft() const { - auto* sidebar_container_view = - static_cast(controller()->sidebar()); - return sidebar_container_view->sidebar_on_left_; + return GetSidebarContainerView()->sidebar_on_left_ && + !GetSidePanel()->IsRightAligned() && + GetSidebarControlView()->sidebar_on_left_; } }; @@ -227,6 +240,26 @@ IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, IterateBuiltInWebTypeTest) { EXPECT_EQ(0, tab_model()->active_index()); } +// Test sidebar's initial horizontal option is set properly. +IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, PRE_InitialHorizontalOptionTest) { + auto* prefs = browser()->profile()->GetPrefs(); + + // Check default horizontal option is left-sided. + EXPECT_FALSE(prefs->GetBoolean(prefs::kSidePanelHorizontalAlignment)); + EXPECT_TRUE(IsSidebarUIOnLeft()); + + // Set right-sided for next testing. + prefs->SetBoolean(prefs::kSidePanelHorizontalAlignment, true); +} + +IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, InitialHorizontalOptionTest) { + auto* prefs = browser()->profile()->GetPrefs(); + + // Check horizontal option is right-sided. + EXPECT_TRUE(prefs->GetBoolean(prefs::kSidePanelHorizontalAlignment)); + EXPECT_FALSE(IsSidebarUIOnLeft()); +} + IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, EventDetectWidgetTest) { auto* widget = GetEventDetectWidget(); auto* service = SidebarServiceFactory::GetForProfile(browser()->profile()); diff --git a/browser/ui/views/frame/brave_browser_view.cc b/browser/ui/views/frame/brave_browser_view.cc index 7b27c33b297..94b3252131f 100644 --- a/browser/ui/views/frame/brave_browser_view.cc +++ b/browser/ui/views/frame/brave_browser_view.cc @@ -211,7 +211,6 @@ BraveBrowserView::BraveBrowserView(std::unique_ptr browser) prefs::kSidePanelHorizontalAlignment, base::BindRepeating(&BraveBrowserView::OnPreferenceChanged, base::Unretained(this))); - UpdateSideBarHorizontalAlignment(); } } @@ -266,6 +265,7 @@ sidebar::Sidebar* BraveBrowserView::InitSidebar() { // Start Sidebar UI initialization. DCHECK(sidebar_container_view_); sidebar_container_view_->Init(); + UpdateSideBarHorizontalAlignment(); return sidebar_container_view_; } diff --git a/browser/ui/views/sidebar/sidebar_container_view.cc b/browser/ui/views/sidebar/sidebar_container_view.cc index c656e4564df..5b3a8c7959d 100644 --- a/browser/ui/views/sidebar/sidebar_container_view.cc +++ b/browser/ui/views/sidebar/sidebar_container_view.cc @@ -125,18 +125,16 @@ void SidebarContainerView::Init() { // Hide by default. Visibility will be controlled by show options later. DoHideSidebar(false); UpdateToolbarButtonVisibility(); - SetSidebarOnLeft(sidebar_on_left_); } void SidebarContainerView::SetSidebarOnLeft(bool sidebar_on_left) { + DCHECK(initialized_); + if (sidebar_on_left_ == sidebar_on_left) return; sidebar_on_left_ = sidebar_on_left; - if (!initialized_) - return; - DCHECK(sidebar_control_view_); sidebar_control_view_->SetSidebarOnLeft(sidebar_on_left_); GetEventDetectWidget()->SetSidebarOnLeft(sidebar_on_left_);