Handle contents separator visibility with SideBySide (#29126)

fix https://github.com/brave/brave-browser/issues/46193

When rounded corners feature is disabled, contents separator should
be hidden when split view is opened.

TEST=SideBySideEnabledBrowserTest.BraveMultiContentsViewTest
This commit is contained in:
Simon Hong
2025-05-22 08:09:00 +09:00
committed by GitHub
parent 31aac3ac8c
commit 0f46df7496
4 changed files with 40 additions and 4 deletions
+14 -1
View File
@@ -815,6 +815,18 @@ void BraveBrowserView::GetAccessiblePanes(std::vector<views::View*>* panes) {
}
}
void BraveBrowserView::ShowSplitView() {
BrowserView::ShowSplitView();
UpdateContentsSeparatorVisibility();
}
void BraveBrowserView::HideSplitView() {
BrowserView::HideSplitView();
UpdateContentsSeparatorVisibility();
}
bool BraveBrowserView::ShouldShowWindowTitle() const {
if (BrowserView::ShouldShowWindowTitle()) {
return true;
@@ -881,7 +893,8 @@ void BraveBrowserView::UpdateContentsSeparatorVisibility() {
// refers it's preferred size.
// Don't show that separator as split view has border around contents
// container.
if (split_view_ && split_view_->IsSplitViewActive()) {
if ((split_view_ && split_view_->IsSplitViewActive()) ||
(multi_contents_view_ && multi_contents_view_->IsInSplitView())) {
contents_separator_->SetPreferredSize({});
return;
}
@@ -160,6 +160,8 @@ class BraveBrowserView : public BrowserView,
FRIEND_TEST_ALL_PREFIXES(SpeedReaderBrowserTest, ToolbarLangs);
FRIEND_TEST_ALL_PREFIXES(VerticalTabStripBrowserTest, ExpandedState);
FRIEND_TEST_ALL_PREFIXES(VerticalTabStripBrowserTest, ExpandedWidth);
FRIEND_TEST_ALL_PREFIXES(SideBySideEnabledBrowserTest,
BraveMultiContentsViewTest);
static void SetDownloadConfirmReturnForTesting(bool allow);
@@ -180,6 +182,8 @@ class BraveBrowserView : public BrowserView,
bool update_devtools_web_contents) override;
void OnWidgetActivationChanged(views::Widget* widget, bool active) override;
void GetAccessiblePanes(std::vector<views::View*>* panes) override;
void ShowSplitView() override;
void HideSplitView() override;
void StopTabCycling();
void UpdateSearchTabsButtonState();
@@ -203,6 +207,10 @@ class BraveBrowserView : public BrowserView,
void UpdateSideBarHorizontalAlignment();
views::View* contents_separator_for_testing() const {
return contents_separator_;
}
std::unique_ptr<views::Widget> vertical_tab_strip_widget_;
bool closing_confirm_dialog_activated_ = false;
@@ -8,6 +8,7 @@
#include <utility>
#include "base/test/run_until.h"
#include "brave/browser/brave_browser_features.h"
#include "brave/browser/ui/browser_commands.h"
#include "brave/browser/ui/tabs/brave_tab_layout_constants.h"
#include "brave/browser/ui/tabs/features.h"
@@ -58,7 +59,8 @@ class SideBySideEnabledBrowserTest : public InProcessBrowserTest {
public:
SideBySideEnabledBrowserTest() {
scoped_features_.InitWithFeatures(
/*enabled_features*/ {features::kSideBySide}, {});
/*enabled_features*/ {features::kSideBySide},
/*disabled_features*/ {features::kBraveWebViewRoundedCorners});
}
~SideBySideEnabledBrowserTest() override = default;
@@ -73,13 +75,22 @@ IN_PROC_BROWSER_TEST_F(SideBySideEnabledBrowserTest,
auto* split_view_data = browser()->GetFeatures().split_view_browser_data();
EXPECT_FALSE(!!split_view_data);
auto* browser_view =
BraveBrowserView::From(BrowserView::GetBrowserViewForBrowser(browser()));
auto* multi_contents_view = static_cast<BraveMultiContentsView*>(
BrowserView::GetBrowserViewForBrowser(browser())
->multi_contents_view_for_testing());
browser_view->multi_contents_view_for_testing());
ASSERT_TRUE(multi_contents_view);
// separator should not be empty when split view is closed.
EXPECT_NE(gfx::Size(),
browser_view->contents_separator_for_testing()->GetPreferredSize());
chrome::NewSplitTab(browser());
// separator should be empty when split view is opened.
EXPECT_EQ(gfx::Size(),
browser_view->contents_separator_for_testing()->GetPreferredSize());
// Check corner radius.
auto* start_contents_web_view =
multi_contents_view->start_contents_view_for_testing();
@@ -50,9 +50,13 @@
#undef LoadAccelerators
#endif
#define LoadAccelerators virtual LoadAccelerators
#define ShowSplitView virtual ShowSplitView
#define HideSplitView virtual HideSplitView
#include "src/chrome/browser/ui/views/frame/browser_view.h" // IWYU pragma: export
#undef HideSplitView
#undef ShowSplitView
#undef LoadAccelerators
#if BUILDFLAG(IS_WIN)
// #pragma pop_macro("LoadAccelerators")