From 1c79c33c273f37f055628d5916bd13cba7b2e25b Mon Sep 17 00:00:00 2001 From: brave-builds Date: Tue, 19 Sep 2023 01:30:15 +0000 Subject: [PATCH] Uplift of #20208 (squashed) to beta --- .../frame/vertical_tab_strip_region_view.cc | 18 +++++-- .../frame/vertical_tab_strip_region_view.h | 2 +- .../tabs/vertical_tab_strip_browsertest.cc | 52 ++++++++++--------- 3 files changed, 42 insertions(+), 30 deletions(-) diff --git a/browser/ui/views/frame/vertical_tab_strip_region_view.cc b/browser/ui/views/frame/vertical_tab_strip_region_view.cc index e7a38e1429b7..75c853e32298 100644 --- a/browser/ui/views/frame/vertical_tab_strip_region_view.cc +++ b/browser/ui/views/frame/vertical_tab_strip_region_view.cc @@ -720,9 +720,19 @@ void VerticalTabStripRegionView::OnWidgetDestroying(views::Widget* widget) { widget_observation_.Reset(); } -bool VerticalTabStripRegionView::IsFullscreen() const { - auto* widget = GetWidget(); - return widget && widget->GetTopLevelWidget()->IsFullscreen(); +bool VerticalTabStripRegionView::IsTabFullscreen() const { + auto* exclusive_access_manager = browser_->exclusive_access_manager(); + if (!exclusive_access_manager) { + return false; + } + + auto* fullscreen_controller = + exclusive_access_manager->fullscreen_controller(); + if (!fullscreen_controller) { + return false; + } + + return fullscreen_controller->IsWindowFullscreenForTabOrPending(); } void VerticalTabStripRegionView::SetState(State state) { @@ -1184,7 +1194,7 @@ gfx::Size VerticalTabStripRegionView::GetPreferredSizeForState( return {}; } - if (IsFullscreen()) { + if (IsTabFullscreen()) { return {}; } diff --git a/browser/ui/views/frame/vertical_tab_strip_region_view.h b/browser/ui/views/frame/vertical_tab_strip_region_view.h index 4d04823c45d1..39037da38815 100644 --- a/browser/ui/views/frame/vertical_tab_strip_region_view.h +++ b/browser/ui/views/frame/vertical_tab_strip_region_view.h @@ -127,7 +127,7 @@ class VerticalTabStripRegionView : public views::View, FRIEND_TEST_ALL_PREFIXES(VerticalTabStripBrowserTest, OriginalTabSearchButton); - bool IsFullscreen() const; + bool IsTabFullscreen() const; void SetState(State state); diff --git a/browser/ui/views/tabs/vertical_tab_strip_browsertest.cc b/browser/ui/views/tabs/vertical_tab_strip_browsertest.cc index dddecf3efc77..99822237f892 100644 --- a/browser/ui/views/tabs/vertical_tab_strip_browsertest.cc +++ b/browser/ui/views/tabs/vertical_tab_strip_browsertest.cc @@ -396,31 +396,12 @@ IN_PROC_BROWSER_TEST_F(VerticalTabStripBrowserTest, MAYBE_Fullscreen) { observer.Wait(); } - base::RunLoop run_loop; - auto wait_until = base::BindLambdaForTesting( - [&](base::RepeatingCallback predicate) { - if (predicate.Run()) { - return; - } - - base::RepeatingTimer scheduler; - scheduler.Start(FROM_HERE, base::Milliseconds(100), - base::BindLambdaForTesting([&]() { - if (predicate.Run()) { - run_loop.Quit(); - } - })); - run_loop.Run(); - }); - - // Vertical tab strip should be invisible on browser fullscreen. + // Vertical tab strip should be visible on browser fullscreen. ASSERT_TRUE(fullscreen_controller->IsFullscreenForBrowser()); ASSERT_TRUE(browser_view()->IsFullscreen()); - wait_until.Run(base::BindLambdaForTesting([&]() { - return !browser_view() - ->vertical_tab_strip_host_view_->GetPreferredSize() - .width(); - })); + EXPECT_TRUE(browser_view() + ->vertical_tab_strip_host_view_->GetPreferredSize() + .width()); { auto observer = FullscreenNotificationObserver(browser()); @@ -432,6 +413,7 @@ IN_PROC_BROWSER_TEST_F(VerticalTabStripBrowserTest, MAYBE_Fullscreen) { { auto observer = FullscreenNotificationObserver(browser()); + // Vertical tab strip should become invisible on tab fullscreen. fullscreen_controller->EnterFullscreenModeForTab( browser_view() ->browser() @@ -441,8 +423,6 @@ IN_PROC_BROWSER_TEST_F(VerticalTabStripBrowserTest, MAYBE_Fullscreen) { observer.Wait(); } - - // Vertical tab strip should be invisible on tab fullscreen. ASSERT_TRUE(fullscreen_controller->IsTabFullscreen()); if (!browser_view() ->vertical_tab_strip_host_view_->GetPreferredSize() @@ -450,6 +430,28 @@ IN_PROC_BROWSER_TEST_F(VerticalTabStripBrowserTest, MAYBE_Fullscreen) { return; } + base::RunLoop run_loop; + auto wait_until = base::BindLambdaForTesting( + [&](base::RepeatingCallback predicate) { + if (predicate.Run()) { + return; + } + + base::RepeatingTimer scheduler; + scheduler.Start(FROM_HERE, base::Milliseconds(100), + base::BindLambdaForTesting([&]() { + if (predicate.Run()) { + run_loop.Quit(); + } else { + LOG(ERROR) << browser_view() + ->vertical_tab_strip_host_view_ + ->GetPreferredSize() + .width(); + } + })); + run_loop.Run(); + }); + wait_until.Run(base::BindLambdaForTesting([&]() { return !browser_view() ->vertical_tab_strip_host_view_->GetPreferredSize()