Commit 3664420a authored by Peter Boström's avatar Peter Boström Committed by Commit Bot

Make TabStrip's context-menu controller internal

TabStrip doesn't semantically need to be a ContextMenuController, this
hides that implementation detail as a nested class.

Bug: None
Change-Id: I2e46adbea0689300c964c8b8ceac3fe9ec12ee6b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1825789
Auto-Submit: Peter Boström <pbos@chromium.org>
Commit-Queue: Taylor Bergquist <tbergquist@chromium.org>
Reviewed-by: default avatarTaylor Bergquist <tbergquist@chromium.org>
Cr-Commit-Position: refs/heads/master@{#700336}
parent ff9839f5
......@@ -974,7 +974,7 @@ void TabStrip::AddTabAt(int model_index, TabRendererData data, bool is_active) {
(model_index > 0) ? (GetIndexOf(tab_at(model_index - 1)) + 1) : 0;
Tab* tab = new Tab(this);
tab->set_context_menu_controller(this);
tab->set_context_menu_controller(&context_menu_controller_);
AddChildViewAt(tab, view_index);
const bool pinned = data.pinned;
tabs_.Add(tab, model_index);
......@@ -2697,6 +2697,25 @@ gfx::ImageSkia* TabStrip::GetDropArrowImage(bool is_down) {
is_down ? IDR_TAB_DROP_DOWN : IDR_TAB_DROP_UP);
}
// TabStrip:TabContextMenuController:
// ----------------------------------------------------------
TabStrip::TabContextMenuController::TabContextMenuController(TabStrip* parent)
: parent_(parent) {}
void TabStrip::TabContextMenuController::ShowContextMenuForViewImpl(
views::View* source,
const gfx::Point& point,
ui::MenuSourceType source_type) {
// We are only intended to be installed as a context-menu handler for tabs, so
// this cast should be safe.
DCHECK_EQ(Tab::kViewClassName, source->GetClassName());
Tab* const tab = static_cast<Tab*>(source);
if (tab->closing())
return;
parent_->controller()->ShowContextMenuForTab(tab, point, source_type);
}
// TabStrip:DropArrow:
// ----------------------------------------------------------
......@@ -2937,18 +2956,6 @@ void TabStrip::ButtonPressed(views::Button* sender, const ui::Event& event) {
}
}
void TabStrip::ShowContextMenuForViewImpl(views::View* source,
const gfx::Point& point,
ui::MenuSourceType source_type) {
// We only install ourselves as a context-menu handler for tabs, so this cast
// should be safe.
DCHECK_EQ(Tab::kViewClassName, source->GetClassName());
Tab* const tab = static_cast<Tab*>(source);
if (tab->closing())
return;
controller_->ShowContextMenuForTab(tab, point, source_type);
}
// Overridden to support automation. See automation_proxy_uitest.cc.
const views::View* TabStrip::GetViewByID(int view_id) const {
if (tab_count() > 0) {
......
......@@ -74,7 +74,6 @@ class ImageView;
// in response to dragged tabs.
class TabStrip : public views::AccessiblePaneView,
public views::ButtonListener,
public views::ContextMenuController,
public views::MouseWatcherListener,
public views::ViewObserver,
public views::ViewTargeterDelegate,
......@@ -316,6 +315,18 @@ class TabStrip : public views::AccessiblePaneView,
friend class TabHoverCardBubbleViewInteractiveUiTest;
friend class TabStripTest;
class TabContextMenuController : public views::ContextMenuController {
public:
explicit TabContextMenuController(TabStrip* parent);
// views::ContextMenuController:
void ShowContextMenuForViewImpl(views::View* source,
const gfx::Point& point,
ui::MenuSourceType source_type) override;
private:
TabStrip* const parent_;
};
// Used during a drop session of a url. Tracks the position of the drop as
// well as a window used to highlight where the drop occurs.
struct DropArrow {
......@@ -545,11 +556,6 @@ class TabStrip : public views::AccessiblePaneView,
// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
// views::ContextMenuController:
void ShowContextMenuForViewImpl(views::View* source,
const gfx::Point& point,
ui::MenuSourceType source_type) override;
// views::View:
const views::View* GetViewByID(int id) const override;
bool OnMousePressed(const ui::MouseEvent& event) override;
......@@ -695,6 +701,8 @@ class TabStrip : public views::AccessiblePaneView,
std::unique_ptr<TabDragContextImpl> drag_context_;
TabContextMenuController context_menu_controller_{this};
DISALLOW_COPY_AND_ASSIGN(TabStrip);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment