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
|
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_EXO_TEST_EXO_TEST_HELPER_H_
#define COMPONENTS_EXO_TEST_EXO_TEST_HELPER_H_
#include <memory>
#include "base/compiler_specific.h"
#include "base/memory/raw_ptr.h"
#include "chromeos/ui/base/window_state_type.h"
#include "components/exo/client_controlled_shell_surface.h"
#include "ui/gfx/buffer_types.h"
#include "ui/gfx/geometry/point.h"
#include "ui/gfx/geometry/size.h"
namespace gfx {
class GpuMemoryBuffer;
}
namespace exo {
class ClientControlledShellSurface;
class InputMethodSurface;
class InputMethodSurfaceManager;
class Surface;
class ToastSurface;
class ToastSurfaceManager;
class Buffer;
namespace test {
class ClientControlledShellSurfaceDelegate
: public ClientControlledShellSurface::Delegate {
public:
explicit ClientControlledShellSurfaceDelegate(
ClientControlledShellSurface* shell_surface,
bool delay_commit = false);
~ClientControlledShellSurfaceDelegate() override;
ClientControlledShellSurfaceDelegate(
const ClientControlledShellSurfaceDelegate&) = delete;
ClientControlledShellSurfaceDelegate& operator=(
const ClientControlledShellSurfaceDelegate&) = delete;
protected:
// ClientControlledShellSurface::Delegate:
void OnGeometryChanged(const gfx::Rect& geometry) override;
void OnStateChanged(chromeos::WindowStateType old_state_type,
chromeos::WindowStateType new_state_type) override;
void OnBoundsChanged(chromeos::WindowStateType current_state,
chromeos::WindowStateType requested_state,
int64_t display_id,
const gfx::Rect& bounds_in_display,
bool is_resize,
int bounds_change,
bool is_adjusted_bounds) override;
void OnDragStarted(int component) override;
void OnDragFinished(int x, int y, bool canceled) override;
void OnZoomLevelChanged(ZoomChange zoom_change) override;
void Commit();
raw_ptr<ClientControlledShellSurface> shell_surface_;
bool delay_commit_;
};
// A helper class that does common initialization required for Exosphere.
class ExoTestHelper {
public:
ExoTestHelper();
ExoTestHelper(const ExoTestHelper&) = delete;
ExoTestHelper& operator=(const ExoTestHelper&) = delete;
~ExoTestHelper();
// Creates an exo::Buffer that has the size of the given
// shell surface.
static std::unique_ptr<Buffer> CreateBuffer(
ShellSurfaceBase* shell_surface,
gfx::BufferFormat format = gfx::BufferFormat::RGBA_8888);
// Creates an exo::Buffer that will be backed by either GpuMemoryBuffer or
// MappableSI if enabled.
static std::unique_ptr<Buffer> CreateBuffer(
gfx::Size buffer_size,
gfx::BufferFormat buffer_format = gfx::BufferFormat::RGBA_8888,
bool is_overlay_candidate = false);
// Creates an exo::Buffer from GMBHandle.
static std::unique_ptr<Buffer> CreateBufferFromGMBHandle(
gfx::GpuMemoryBufferHandle handle,
gfx::Size buffer_size,
gfx::BufferFormat buffer_format);
std::unique_ptr<ClientControlledShellSurface>
CreateClientControlledShellSurface(Surface* surface,
bool is_modal = false,
bool default_scale_cancellation = false);
std::unique_ptr<InputMethodSurface> CreateInputMethodSurface(
Surface* surface,
InputMethodSurfaceManager* surface_manager,
bool default_scale_cancellation = true);
std::unique_ptr<ToastSurface> CreateToastSurface(
Surface* surface,
ToastSurfaceManager* surface_manager,
bool default_scale_cancellation = true);
};
} // namespace test
} // namespace exo
#endif // COMPONENTS_EXO_TEST_EXO_TEST_HELPER_H_
|