blob: 4106de0d74416c66e1cdfd8c6664cea83760571d [file]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_VIEWS_TABS_VERTICAL_VERTICAL_TAB_STRIP_BOTTOM_CONTAINER_H_
#define CHROME_BROWSER_UI_VIEWS_TABS_VERTICAL_VERTICAL_TAB_STRIP_BOTTOM_CONTAINER_H_
#include "ui/views/context_menu_controller.h"
#include "ui/views/layout/flex_layout_view.h"
class BrowserWindowInterface;
class NewTabButtonMenuModel;
class TabStripFlatEdgeButton;
namespace tabs {
class VerticalTabStripStateController;
} // namespace tabs
namespace views {
class ActionViewController;
class MenuRunner;
} // namespace views
// Bottom container of the vertical tab strip which includes the new tab button.
class VerticalTabStripBottomContainer : public views::FlexLayoutView,
public views::ContextMenuController {
METADATA_HEADER(VerticalTabStripBottomContainer, views::View)
public:
VerticalTabStripBottomContainer(
tabs::VerticalTabStripStateController* state_controller,
actions::ActionItem* root_action_item,
BrowserWindowInterface* browser,
base::RepeatingClosure record_new_tab_button_pressed);
~VerticalTabStripBottomContainer() override;
TabStripFlatEdgeButton* AddChildButtonFor(actions::ActionId action_id);
bool IsPositionInWindowCaption(const gfx::Point& point);
void OnCollapsedStateChanged(
tabs::VerticalTabStripStateController* state_controller);
// views::ContextMenuController:
void ShowContextMenuForViewImpl(
View* source,
const gfx::Point& point,
ui::mojom::MenuSourceType source_type) override;
private:
void UpdateButtonStyles(
tabs::VerticalTabStripStateController* state_controller);
raw_ptr<BrowserWindowInterface> browser_ = nullptr;
raw_ptr<actions::ActionItem> root_action_item_ = nullptr;
raw_ptr<TabStripFlatEdgeButton> new_tab_button_ = nullptr;
base::CallbackListSubscription collapsed_state_changed_subscription_;
base::CallbackListSubscription new_tab_button_pressed_subscription_;
std::unique_ptr<NewTabButtonMenuModel> context_menu_model_;
std::unique_ptr<views::MenuRunner> context_menu_runner_;
std::unique_ptr<views::ActionViewController> action_view_controller_;
};
#endif // CHROME_BROWSER_UI_VIEWS_TABS_VERTICAL_VERTICAL_TAB_STRIP_BOTTOM_CONTAINER_H_