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
|
// Copyright 2012 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_VIZ_TEST_FAKE_OUTPUT_SURFACE_H_
#define COMPONENTS_VIZ_TEST_FAKE_OUTPUT_SURFACE_H_
#include <stddef.h>
#include <memory>
#include <utility>
#include "base/functional/callback.h"
#include "base/memory/ptr_util.h"
#include "base/memory/raw_ptr.h"
#include "build/build_config.h"
#include "components/viz/common/frame_sinks/begin_frame_args.h"
#include "components/viz/service/display/output_surface.h"
#include "components/viz/service/display/output_surface_frame.h"
#include "components/viz/service/display/software_output_device.h"
#include "components/viz/test/test_context_provider.h"
#include "ui/gfx/overlay_transform.h"
namespace viz {
class FakeSoftwareOutputSurface : public OutputSurface {
public:
explicit FakeSoftwareOutputSurface(
std::unique_ptr<SoftwareOutputDevice> software_device);
~FakeSoftwareOutputSurface() override;
OutputSurfaceFrame* last_sent_frame() { return last_sent_frame_.get(); }
size_t num_sent_frames() { return num_sent_frames_; }
// OutputSurface implementation.
void BindToClient(OutputSurfaceClient* client) override;
void EnsureBackbuffer() override {}
void DiscardBackbuffer() override {}
void Reshape(const ReshapeParams& params) override;
void SwapBuffers(OutputSurfaceFrame frame) override;
void SetUpdateVSyncParametersCallback(
UpdateVSyncParametersCallback callback) override;
void SetDisplayTransformHint(gfx::OverlayTransform transform) override;
gfx::OverlayTransform GetDisplayTransform() override;
#if BUILDFLAG(IS_LINUX)
void SetNeedsSwapSizeNotifications(
bool needs_swap_size_notifications) override;
#endif
const gfx::ColorSpace& last_reshape_color_space() {
return last_reshape_color_space_;
}
void set_support_display_transform_hint(bool support) {
support_display_transform_hint_ = support;
}
protected:
raw_ptr<OutputSurfaceClient> client_ = nullptr;
std::unique_ptr<OutputSurfaceFrame> last_sent_frame_;
size_t num_sent_frames_ = 0;
gfx::ColorSpace last_reshape_color_space_;
bool support_display_transform_hint_ = false;
gfx::OverlayTransform display_transform_hint_ = gfx::OVERLAY_TRANSFORM_NONE;
private:
void SwapBuffersAck();
base::WeakPtrFactory<FakeSoftwareOutputSurface> weak_ptr_factory_{this};
};
} // namespace viz
#endif // COMPONENTS_VIZ_TEST_FAKE_OUTPUT_SURFACE_H_
|