// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#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)...) {}
// Calls the private SetState() function.
void SetState(ShelfLayoutManager* layout_manager, ShelfVisibilityState state);
void UpdateAutoHideStateNow();
aura::Window* CreateTestWindow();
aura::Window* CreateTestWindowInParent(aura::Window* root_window);
// Create a simple widget in the current context (will delete on TearDown).
views::Widget* CreateTestWidget();
void RunGestureDragTests(const gfx::Point& shown, const gfx::Point& hidden);
gfx::Rect GetVisibleShelfWidgetBoundsInScreen();
// Turn on the lock screen.
void LockScreen();
// Turn off the lock screen.
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;
// If |layout_manager->auto_hide_timer_| is running, stops it, runs its task,
// and returns true. Otherwise, returns false.
bool TriggerAutoHideTimeout() const;
// Performs a swipe up gesture to show an auto-hidden shelf.
void SwipeUpOnShelf();
void SwipeDownOnShelf();
void FlingUpOnShelf();
void DragHotseatDownToBezel();
// Drag Shelf from |start| to |target| by mouse.
void MouseDragShelfTo(const gfx::Point& start, const gfx::Point& target);
// Move mouse to show Shelf in auto-hide mode.
void MoveMouseToShowAutoHiddenShelf();
// Move mouse to |location| and do a two-finger scroll.
void DoTwoFingerScrollAtLocation(gfx::Point location,
int x_offset,
int y_offset,
bool reverse_scroll);
// Move mouse to |location| and do a mousewheel scroll.
void DoMouseWheelScrollAtLocation(gfx::Point location,
int delta_y,
bool reverse_scroll);
// Do a fling gesture event from |start| to |end|.
void FlingBetweenLocations(gfx::Point start, gfx::Point end);
// Run the |visibility_update_for_tray_callback_| if set in
// ShelfLayoutManager and return true. Otherwise, return false.
bool RunVisibilityUpdateForTrayCallback();
private:
base::TimeTicks timestamp_;
gfx::Point current_point_;
};
} // namespace ash
#endif // ASH_SHELF_TEST_SHELF_LAYOUT_MANAGER_TEST_BASE_H_