#ifndef ASH_SHELF_TEST_SHELF_LAYOUT_MANAGER_TEST_BASE_H_
#define ASH_SHELF_TEST_SHELF_LAYOUT_MANAGER_TEST_BASE_H_
#include <utility>
#include "ash/public/cpp/shelf_types.h"
#include "ash/shelf/test/shelf_test_base.h"
#include "ash/wm/workspace/workspace_types.h"
#include "base/time/time.h"
namespace ui {
class Layer;
}
namespace ash {
class ShelfLayoutManager;
class ShelfLayoutManagerTestBase : public ShelfTestBase {
public:
template <typename... TaskEnvironmentTraits>
explicit ShelfLayoutManagerTestBase(TaskEnvironmentTraits&&... traits)
: ShelfTestBase(std::forward<TaskEnvironmentTraits>(traits)...) {}
void SetState(ShelfLayoutManager* layout_manager, ShelfVisibilityState state);
void UpdateAutoHideStateNow();
aura::Window* CreateTestWindow();
aura::Window* CreateTestWindowInParent(aura::Window* root_window);
views::Widget* CreateTestWidget();
void RunGestureDragTests(const gfx::Point& shown, const gfx::Point& hidden);
gfx::Rect GetVisibleShelfWidgetBoundsInScreen();
void LockScreen();
void UnlockScreen();
int64_t GetPrimaryDisplayId();
void StartScroll(gfx::Point start);
void UpdateScroll(const gfx::Vector2d& delta);
void EndScroll(bool is_fling, float velocity_y);
void IncreaseTimestamp();
WorkspaceWindowState GetWorkspaceWindowState() const;
const ui::Layer* GetNonLockScreenContainersContainerLayer() const;
bool TriggerAutoHideTimeout() const;
void SwipeUpOnShelf();
void SwipeDownOnShelf();
void FlingUpOnShelf();
void DragHotseatDownToBezel();
void MouseDragShelfTo(const gfx::Point& start, const gfx::Point& target);
void MoveMouseToShowAutoHiddenShelf();
void DoTwoFingerScrollAtLocation(gfx::Point location,
int x_offset,
int y_offset,
bool reverse_scroll);
void DoMouseWheelScrollAtLocation(gfx::Point location,
int delta_y,
bool reverse_scroll);
void FlingBetweenLocations(gfx::Point start, gfx::Point end);
bool RunVisibilityUpdateForTrayCallback();
private:
base::TimeTicks timestamp_;
gfx::Point current_point_;
};
}
#endif