14
14
#include " brave/browser/ui/views/sidebar/sidebar_control_view.h"
15
15
#include " brave/browser/ui/views/sidebar/sidebar_items_contents_view.h"
16
16
#include " brave/browser/ui/views/sidebar/sidebar_items_scroll_view.h"
17
+ #include " brave/browser/ui/views/tabs/features.h"
17
18
#include " brave/components/sidebar/sidebar_service.h"
18
19
#include " chrome/browser/ui/browser_finder.h"
19
20
#include " chrome/browser/ui/tabs/tab_strip_model.h"
21
+ #include " chrome/common/pref_names.h"
20
22
#include " chrome/test/base/in_process_browser_test.h"
21
23
#include " chrome/test/base/ui_test_utils.h"
24
+ #include " components/prefs/pref_service.h"
22
25
#include " content/public/test/browser_test.h"
23
26
#include " testing/gmock/include/gmock/gmock-matchers.h"
24
27
#include " testing/gmock/include/gmock/gmock.h"
@@ -46,18 +49,23 @@ class SidebarBrowserTest : public InProcessBrowserTest {
46
49
SidebarService::ShowSidebarOption::kShowAlways );
47
50
}
48
51
49
- BraveBrowser* brave_browser () {
52
+ BraveBrowser* brave_browser () const {
50
53
return static_cast <BraveBrowser*>(browser ());
51
54
}
52
55
53
- SidebarModel* model () { return controller ()->model (); }
54
- TabStripModel* tab_model () { return browser ()->tab_strip_model (); }
56
+ SidebarModel* model () const { return controller ()->model (); }
57
+ TabStripModel* tab_model () const { return browser ()->tab_strip_model (); }
55
58
56
- SidebarController* controller () {
59
+ SidebarController* controller () const {
57
60
return brave_browser ()->sidebar_controller ();
58
61
}
59
62
60
- void SimulateSidebarItemClickAt (int index) {
63
+ views::View* GetVerticalTabsContainer () const {
64
+ auto * view = BrowserView::GetBrowserViewForBrowser (browser ());
65
+ return static_cast <BraveBrowserView*>(view)->vertical_tabs_container_ ;
66
+ }
67
+
68
+ void SimulateSidebarItemClickAt (int index) const {
61
69
auto * sidebar_container_view =
62
70
static_cast <SidebarContainerView*>(controller ()->sidebar ());
63
71
auto sidebar_control_view = sidebar_container_view->sidebar_control_view_ ;
@@ -73,6 +81,12 @@ class SidebarBrowserTest : public InProcessBrowserTest {
73
81
ui::EventTimeForNow (), ui::EF_LEFT_MOUSE_BUTTON, 0 );
74
82
sidebar_items_contents_view->OnItemPressed (item, event);
75
83
}
84
+
85
+ bool IsSidebarUIOnLeft () const {
86
+ auto * sidebar_container_view =
87
+ static_cast <SidebarContainerView*>(controller ()->sidebar ());
88
+ return sidebar_container_view->sidebar_on_left_ ;
89
+ }
76
90
};
77
91
78
92
IN_PROC_BROWSER_TEST_F (SidebarBrowserTest, BasicTest) {
@@ -207,4 +221,47 @@ IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, IterateBuiltInWebTypeTest) {
207
221
EXPECT_EQ (0 , tab_model ()->active_index ());
208
222
}
209
223
224
+ class SidebarBrowserTestWithVerticalTabs : public SidebarBrowserTest {
225
+ public:
226
+ SidebarBrowserTestWithVerticalTabs () {
227
+ feature_list_.InitAndEnableFeature (tabs::features::kBraveVerticalTabs );
228
+ }
229
+ ~SidebarBrowserTestWithVerticalTabs () override = default ;
230
+
231
+ base::test::ScopedFeatureList feature_list_;
232
+ };
233
+
234
+ IN_PROC_BROWSER_TEST_F (SidebarBrowserTestWithVerticalTabs,
235
+ SidebarRightSideTest) {
236
+ auto * prefs = browser ()->profile ()->GetPrefs ();
237
+ auto * browser_view = BrowserView::GetBrowserViewForBrowser (browser ());
238
+
239
+ auto * vertical_tabs_container = GetVerticalTabsContainer ();
240
+ auto * sidebar_container =
241
+ static_cast <SidebarContainerView*>(controller ()->sidebar ());
242
+
243
+ // Sidebar is on left.
244
+ EXPECT_TRUE (IsSidebarUIOnLeft ());
245
+
246
+ // Check vertical tabs is located right after sidebar.
247
+ EXPECT_EQ (sidebar_container->bounds ().right (), vertical_tabs_container->x ());
248
+
249
+ // Changed to sidebar on right side.
250
+ prefs->SetBoolean (prefs::kSidePanelHorizontalAlignment , true );
251
+ EXPECT_FALSE (IsSidebarUIOnLeft ());
252
+
253
+ // Check vertical tabs is located at first.
254
+ EXPECT_EQ (0 , vertical_tabs_container->x ());
255
+
256
+ // Check sidebar is located on the right side.
257
+ EXPECT_EQ (sidebar_container->bounds ().right (), browser_view->width ());
258
+
259
+ // Changed to sidebar on left side again.
260
+ prefs->SetBoolean (prefs::kSidePanelHorizontalAlignment , false );
261
+ EXPECT_TRUE (IsSidebarUIOnLeft ());
262
+
263
+ // Check vertical tabs is located right after sidebar.
264
+ EXPECT_EQ (sidebar_container->bounds ().right (), vertical_tabs_container->x ());
265
+ }
266
+
210
267
} // namespace sidebar
0 commit comments