1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
ash / wm / overview / overview_test_base.h [blame]
// Copyright 2021 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_WM_OVERVIEW_OVERVIEW_TEST_BASE_H_
#define ASH_WM_OVERVIEW_OVERVIEW_TEST_BASE_H_
#include <memory>
#include <string>
#include <vector>
#include "ash/shelf/shelf_view_test_api.h"
#include "ash/test/ash_test_base.h"
#include "ash/test/ash_test_helper.h"
#include "ash/wm/desks/templates/saved_desk_test_helper.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
#include "chromeos/constants/chromeos_features.h"
namespace views {
class Label;
} // namespace views
namespace ash {
class CloseButton;
class OverviewController;
class OverviewGrid;
class OverviewItem;
class OverviewItemBase;
class OverviewSession;
class SplitViewController;
class WindowPreviewView;
// The base test fixture for testing Overview Mode.
class OverviewTestBase : public AshTestBase {
public:
template <typename... TaskEnvironmentTraits>
explicit OverviewTestBase(TaskEnvironmentTraits&&... traits)
: AshTestBase(std::forward<TaskEnvironmentTraits>(traits)...) {}
OverviewTestBase(const OverviewTestBase&) = delete;
OverviewTestBase& operator=(const OverviewTestBase&) = delete;
~OverviewTestBase() override;
// Enters/Leaves tablet mode.
void EnterTabletMode();
void LeaveTabletMode();
bool InOverviewSession() const;
bool WindowsOverlapping(aura::Window* window1, aura::Window* window2) const;
// Creates a window which cannot be snapped by splitview.
std::unique_ptr<aura::Window> CreateUnsnappableWindow(
const gfx::Rect& bounds = gfx::Rect());
void ClickWindow(aura::Window* window);
OverviewController* GetOverviewController();
OverviewSession* GetOverviewSession();
SplitViewController* GetSplitViewController();
gfx::Rect GetTransformedBounds(aura::Window* window) const;
gfx::Rect GetTransformedTargetBounds(aura::Window* window) const;
gfx::Rect GetTransformedBoundsInRootWindow(aura::Window* window) const;
const OverviewItemBase* GetDropTarget(int grid_index) const;
CloseButton* GetCloseButton(OverviewItemBase* item);
views::Label* GetLabelView(OverviewItemBase* item);
views::View* GetBackdropView(OverviewItemBase* item);
WindowPreviewView* GetPreviewView(OverviewItemBase* item);
gfx::Rect GetShadowBounds(const OverviewItemBase* item) const;
views::Widget* GetCannotSnapWidget(OverviewItemBase* item);
void SetAnimatingToClose(OverviewItemBase* item, bool val);
float GetCloseButtonOpacity(OverviewItemBase* item);
float GetTitlebarOpacity(OverviewItemBase* item);
bool HasRoundedCorner(OverviewItemBase* item);
// Tests that a window is contained within a given OverviewItem, and that both
// the window and its matching close button are within the same screen.
void CheckWindowAndCloseButtonInScreen(aura::Window* window,
OverviewItemBase* window_item);
void CheckOverviewEnterExitHistogram(const std::string& trace,
const std::vector<int>& enter_counts,
const std::vector<int>& exit_counts);
gfx::Rect GetGridBounds();
void SetGridBounds(OverviewGrid* grid, const gfx::Rect& bounds);
SavedDeskTestHelper* saved_desk_test_helper() {
return ash_test_helper()->saved_desk_test_helper();
}
desks_storage::DeskModel* desk_model() {
return saved_desk_test_helper()->desk_model();
}
// AshTestBase:
void SetUp() override;
void TearDown() override;
protected:
void CheckForDuplicateTraceName(const std::string& trace);
// Takes in a current widget and checks if the accessibility next
// and previous focus widgets match the given.
void CheckA11yOverrides(const std::string& trace,
views::Widget* widget,
views::Widget* expected_previous,
views::Widget* expected_next);
base::HistogramTester histograms_;
private:
void CheckOverviewHistogram(const std::string& histogram,
const std::vector<int>& counts);
base::test::ScopedFeatureList scoped_feature_list_{
chromeos::features::kOverviewSessionInitOptimizations};
std::unique_ptr<ShelfViewTestAPI> shelf_view_test_api_;
std::vector<std::string> trace_names_;
};
} // namespace ash
#endif // ASH_WM_OVERVIEW_OVERVIEW_TEST_BASE_H_