blob: 0b08f7a1b2ffdc7f376bea4e9a3f8ed685b128e0 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// 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_FAKE_BASE_TAB_STRIP_CONTROLLER_H_
#define CHROME_BROWSER_UI_VIEWS_TABS_FAKE_BASE_TAB_STRIP_CONTROLLER_H_
#include <map>
#include <memory>
#include <vector>
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "base/optional.h"
#include "chrome/browser/ui/tabs/tab_group_data.h"
#include "chrome/browser/ui/views/tabs/tab_strip_controller.h"
#include "ui/base/models/list_selection_model.h"
class FakeBaseTabStripController : public TabStripController {
public:
FakeBaseTabStripController();
~FakeBaseTabStripController() override;
void AddTab(int index, bool is_active);
void AddPinnedTab(int index, bool is_active);
void RemoveTab(int index);
int CreateTabGroup();
void MoveTabIntoGroup(int index, base::Optional<int> new_group);
ui::ListSelectionModel* selection_model() { return &selection_model_; }
void set_tab_strip(TabStrip* tab_strip) { tab_strip_ = tab_strip; }
// TabStripController overrides:
const ui::ListSelectionModel& GetSelectionModel() const override;
int GetCount() const override;
bool IsValidIndex(int index) const override;
bool IsActiveTab(int index) const override;
int GetActiveIndex() const override;
bool IsTabSelected(int index) const override;
bool IsTabPinned(int index) const override;
void SelectTab(int index, const ui::Event& event) override;
void ExtendSelectionTo(int index) override;
void ToggleSelected(int index) override;
void AddSelectionFromAnchorTo(int index) override;
bool BeforeCloseTab(int index, CloseTabSource source) override;
void CloseTab(int index, CloseTabSource source) override;
void ShowContextMenuForTab(Tab* tab,
const gfx::Point& p,
ui::MenuSourceType source_type) override;
int HasAvailableDragActions() const override;
void OnDropIndexUpdate(int index, bool drop_before) override;
void CreateNewTab() override;
void CreateNewTabWithLocation(const base::string16& loc) override;
void StackedLayoutMaybeChanged() override;
void OnStartedDraggingTabs() override;
void OnStoppedDraggingTabs() override;
const TabGroupData* GetDataForGroup(int group_id) const override;
std::vector<int> ListTabsInGroup(int group_id) const override;
bool IsFrameCondensed() const override;
bool HasVisibleBackgroundTabShapes() const override;
bool EverHasVisibleBackgroundTabShapes() const override;
bool ShouldPaintAsActiveFrame() const override;
bool CanDrawStrokes() const override;
SkColor GetFrameColor(
BrowserNonClientFrameView::ActiveState active_state =
BrowserNonClientFrameView::kUseCurrent) const override;
SkColor GetToolbarTopSeparatorColor() const override;
int GetTabBackgroundResourceId(
BrowserNonClientFrameView::ActiveState active_state,
bool* has_custom_image) const override;
base::string16 GetAccessibleTabName(const Tab* tab) const override;
Profile* GetProfile() const override;
private:
void SetActiveIndex(int new_index);
TabStrip* tab_strip_ = nullptr;
int num_tabs_ = 0;
int active_index_ = -1;
TabGroupData fake_group_data_;
int num_groups_ = 0;
std::map<int, int> tab_to_group_;
ui::ListSelectionModel selection_model_;
DISALLOW_COPY_AND_ASSIGN(FakeBaseTabStripController);
};
#endif // CHROME_BROWSER_UI_VIEWS_TABS_FAKE_BASE_TAB_STRIP_CONTROLLER_H_