blob: c13ccaa787a388f7709449f2ff8421c303191163 [file] [log] [blame]
Avi Drissman8ba1bad2022-09-13 19:22:361// Copyright 2022 The Chromium Authors
yjliu9edcefd2022-01-25 02:00:332// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef COMPONENTS_EXO_SURFACE_TEST_UTIL_H_
6#define COMPONENTS_EXO_SURFACE_TEST_UTIL_H_
7
Eliot Courtneyfec8a30d2024-01-16 01:25:518#include "components/exo/surface.h"
yjliu9edcefd2022-01-25 02:00:339#include "components/exo/surface_observer.h"
10#include "testing/gmock/include/gmock/gmock.h"
Eliot Courtneyfec8a30d2024-01-16 01:25:5111#include "ui/aura/window.h"
yjliu9edcefd2022-01-25 02:00:3312
13namespace exo {
14
15class SurfaceObserverForTest : public SurfaceObserver {
16 public:
Eliot Courtneyfec8a30d2024-01-16 01:25:5117 explicit SurfaceObserverForTest(
18 aura::Window::OcclusionState last_occlusion_state);
yjliu9edcefd2022-01-25 02:00:3319 SurfaceObserverForTest(const SurfaceObserverForTest&) = delete;
20 SurfaceObserverForTest& operator=(const SurfaceObserverForTest&) = delete;
Arthur Eubanksb34721e2022-08-24 17:47:2021 ~SurfaceObserverForTest() override;
yjliu9edcefd2022-01-25 02:00:3322
23 // SurfaceObserver overrides
24 void OnSurfaceDestroying(Surface* surface) override {}
25
26 void OnWindowOcclusionChanged(Surface* surface) override {
27 num_occlusion_changes_++;
Eliot Courtneyfec8a30d2024-01-16 01:25:5128 if (last_occlusion_state_ != surface->window()->GetOcclusionState()) {
29 num_occlusion_state_changes_++;
30 last_occlusion_state_ = surface->window()->GetOcclusionState();
31 }
yjliu9edcefd2022-01-25 02:00:3332 }
33
34 int num_occlusion_changes() const { return num_occlusion_changes_; }
Eliot Courtneyfec8a30d2024-01-16 01:25:5135 int num_occlusion_state_changes() const {
36 return num_occlusion_state_changes_;
37 }
yjliu9edcefd2022-01-25 02:00:3338
39 MOCK_METHOD(void, ThrottleFrameRate, (bool on), (override));
40
41 private:
42 int num_occlusion_changes_ = 0;
Eliot Courtneyfec8a30d2024-01-16 01:25:5143 int num_occlusion_state_changes_ = 0;
44 aura::Window::OcclusionState last_occlusion_state_;
yjliu9edcefd2022-01-25 02:00:3345};
46
47} // namespace exo
48
49#endif // COMPONENTS_EXO_SURFACE_TEST_UTIL_H_