2525#include " brave/browser/ui/commands/accelerator_service_factory.h"
2626#include " brave/browser/ui/page_action/brave_page_action_icon_type.h"
2727#include " brave/browser/ui/page_info/features.h"
28+ #include " brave/browser/ui/sidebar/features.h"
2829#include " brave/browser/ui/sidebar/sidebar_controller.h"
2930#include " brave/browser/ui/sidebar/sidebar_utils.h"
3031#include " brave/browser/ui/sidebar/sidebar_web_panel_controller.h"
4142#include " brave/browser/ui/views/location_bar/brave_location_bar_view.h"
4243#include " brave/browser/ui/views/omnibox/brave_omnibox_view_views.h"
4344#include " brave/browser/ui/views/sidebar/sidebar_container_view.h"
45+ #include " brave/browser/ui/views/sidebar/sidebar_container_view_new.h"
4446#include " brave/browser/ui/views/tabs/vertical_tab_utils.h"
4547#include " brave/browser/ui/views/toolbar/bookmark_button.h"
4648#include " brave/browser/ui/views/toolbar/brave_toolbar_view.h"
4951#include " brave/components/brave_wallet/common/buildflags/buildflags.h"
5052#include " brave/components/commands/common/features.h"
5153#include " brave/components/constants/pref_names.h"
54+ #include " brave/components/sidebar/browser/constants.h"
5255#include " brave/components/sidebar/common/features.h"
5356#include " brave/components/speedreader/common/buildflags/buildflags.h"
5457#include " brave/ui/color/nala/nala_color_id.h"
@@ -349,14 +352,20 @@ BraveBrowserView::BraveBrowserView(Browser* browser) : BrowserView(browser) {
349352 // Only normal window (tabbed) should have sidebar.
350353 const bool can_have_sidebar = sidebar::CanUseSidebar (browser_);
351354 if (can_have_sidebar) {
352- // Wrap chromium side panel with our sidebar container
353- auto original_side_panel =
354- RemoveChildViewT (contents_height_side_panel_.get ());
355- sidebar_container_view_ =
356- AddChildView (std::make_unique<SidebarContainerView>(
357- browser_, SidePanelCoordinator::From (browser_),
358- std::move (original_side_panel)));
359- contents_height_side_panel_ = sidebar_container_view_->side_panel ();
355+ if (base::FeatureList::IsEnabled (sidebar::features::kSidebarV2 )) {
356+ // V2: Don't wrap panel - let upstream manage it
357+ sidebar_container_view_new_ =
358+ AddChildView (std::make_unique<SidebarContainerViewNew>(browser_));
359+ } else {
360+ // V1: Wrap chromium side panel with our sidebar container
361+ auto original_side_panel =
362+ RemoveChildViewT (contents_height_side_panel_.get ());
363+ sidebar_container_view_ =
364+ AddChildView (std::make_unique<SidebarContainerView>(
365+ browser_, SidePanelCoordinator::From (browser_),
366+ std::move (original_side_panel)));
367+ contents_height_side_panel_ = sidebar_container_view_->side_panel ();
368+ }
360369
361370 if (IsBraveWebViewRoundedCornersEnabled ()) {
362371 sidebar_separator_view_ =
@@ -415,12 +424,15 @@ void BraveBrowserView::OnPreferenceChanged(const std::string& pref_name) {
415424}
416425
417426void BraveBrowserView::UpdateSideBarHorizontalAlignment () {
418- DCHECK (sidebar_container_view_);
419-
420427 const bool on_left = !GetProfile ()->GetPrefs ()->GetBoolean (
421428 prefs::kSidePanelHorizontalAlignment );
422429
423- sidebar_container_view_->SetSidebarOnLeft (on_left);
430+ if (sidebar_container_view_new_) {
431+ sidebar_container_view_new_->SetSidebarOnLeft (on_left);
432+ } else {
433+ CHECK (sidebar_container_view_);
434+ sidebar_container_view_->SetSidebarOnLeft (on_left);
435+ }
424436
425437 if (multi_contents_view_ &&
426438 base::FeatureList::IsEnabled (sidebar::features::kSidebarWebPanel )) {
@@ -452,20 +464,26 @@ BraveBrowserView::~BraveBrowserView() {
452464
453465sidebar::Sidebar* BraveBrowserView::InitSidebar () {
454466 // Start Sidebar UI initialization.
455- DCHECK (sidebar_container_view_);
456- sidebar_container_view_->Init ();
457-
467+ sidebar::Sidebar* sidebar = nullptr ;
468+ if (sidebar_container_view_new_) {
469+ sidebar = sidebar_container_view_new_;
470+ sidebar_container_view_new_->Init ();
471+ } else {
472+ CHECK (sidebar_container_view_);
473+ sidebar = sidebar_container_view_;
474+ sidebar_container_view_->Init ();
475+ }
458476 // Ask BraveMultiContentsView for preparing web panel feature.
459477 if (multi_contents_view_ &&
460478 base::FeatureList::IsEnabled (sidebar::features::kSidebarWebPanel )) {
461479 GetBraveMultiContentsView ()->SetWebPanelWidth (
462- sidebar_container_view_-> side_panel ()-> GetPreferredSize (). width () );
480+ sidebar:: kDefaultSidePanelWidth );
463481 GetBraveMultiContentsView ()->UseContentsContainerViewForWebPanel ();
464482 }
465483
466484 UpdateSideBarHorizontalAlignment ();
467485
468- return sidebar_container_view_ ;
486+ return sidebar ;
469487}
470488
471489void BraveBrowserView::ToggleSidebar () {
@@ -729,6 +747,8 @@ void BraveBrowserView::AddedToWidget() {
729747
730748 GetBrowserViewLayout ()->set_contents_background (contents_background_view_);
731749 GetBrowserViewLayout ()->set_sidebar_container (sidebar_container_view_);
750+ GetBrowserViewLayout ()->set_sidebar_container_new (
751+ sidebar_container_view_new_);
732752 GetBrowserViewLayout ()->set_sidebar_separator (sidebar_separator_view_);
733753
734754 UpdateWebViewRoundedCorners ();
@@ -916,6 +936,10 @@ void BraveBrowserView::OnWidgetActivationChanged(views::Widget* widget,
916936 if (sidebar_container_view_) {
917937 sidebar_container_view_->UpdateSidebarItemsState ();
918938 }
939+
940+ if (sidebar_container_view_new_) {
941+ sidebar_container_view_new_->UpdateSidebarItemsState ();
942+ }
919943}
920944
921945void BraveBrowserView::OnWidgetWindowModalVisibilityChanged (
@@ -1062,6 +1086,10 @@ void BraveBrowserView::UpdateSidebarBorder() {
10621086 if (sidebar_container_view_) {
10631087 sidebar_container_view_->UpdateBorder ();
10641088 }
1089+
1090+ if (sidebar_container_view_new_) {
1091+ sidebar_container_view_new_->UpdateBorder ();
1092+ }
10651093}
10661094
10671095void BraveBrowserView::OnActiveTabChanged (content::WebContents* old_contents,
@@ -1184,6 +1212,10 @@ void BraveBrowserView::HandleBrowserWindowMouseEvent(
11841212 sidebar_container_view_->ShowSidebarOnMouseOver (point_in_screen);
11851213 }
11861214
1215+ if (sidebar_container_view_new_) {
1216+ sidebar_container_view_new_->ShowSidebarOnMouseOver (point_in_screen);
1217+ }
1218+
11871219 if (vertical_tab_strip_widget_delegate_view_ &&
11881220 tabs::utils::ShouldShowBraveVerticalTabs (browser ())) {
11891221 vertical_tab_strip_widget_delegate_view_->vertical_tab_strip_region_view ()
@@ -1207,6 +1239,10 @@ bool BraveBrowserView::IsWebPanelContents(content::WebContents* contents) {
12071239}
12081240
12091241bool BraveBrowserView::IsSidebarVisible () const {
1242+ if (sidebar_container_view_new_) {
1243+ return sidebar_container_view_new_->IsSidebarVisible ();
1244+ }
1245+
12101246 return sidebar_container_view_ && sidebar_container_view_->IsSidebarVisible ();
12111247}
12121248
0 commit comments