blob: 727a246c7f789e7626fdfea0183d77132299de0c [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_TEST_MOCK_COMPOSITOR_FRAME_SINK_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_TEST_MOCK_COMPOSITOR_FRAME_SINK_H_
#include <utility>
#include "base/memory/read_only_shared_memory_region.h"
#include "components/viz/common/quads/compositor_frame.h"
#include "gpu/ipc/common/mailbox.mojom-blink.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "services/viz/public/mojom/compositing/compositor_frame_sink.mojom-blink.h"
#include "services/viz/public/mojom/compositing/layer_context.mojom-blink.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "third_party/blink/public/mojom/frame_sinks/embedded_frame_sink.mojom-blink-forward.h"
namespace blink {
// A CompositorFrameSink for inspecting the viz::CompositorFrame sent to
// SubmitcompositorFrame() or SubmitcompositorFrameSync(); an object of this
// class may be offered by a MockEmbeddedFrameSinkProvider.
class MockCompositorFrameSink : public viz::mojom::blink::CompositorFrameSink {
public:
MockCompositorFrameSink(
mojo::PendingReceiver<viz::mojom::blink::CompositorFrameSink> receiver,
int num_expected_set_needs_begin_frame_on_construction) {
receiver_.Bind(std::move(receiver));
EXPECT_CALL(*this, SetNeedsBeginFrame(true))
.Times(num_expected_set_needs_begin_frame_on_construction);
if (!num_expected_set_needs_begin_frame_on_construction)
EXPECT_CALL(*this, SetNeedsBeginFrame(false)).Times(testing::AtLeast(0));
}
MockCompositorFrameSink(const MockCompositorFrameSink&) = delete;
MockCompositorFrameSink& operator=(const MockCompositorFrameSink&) = delete;
// viz::mojom::blink::CompositorFrameSink implementation
MOCK_METHOD1(SetNeedsBeginFrame, void(bool));
MOCK_METHOD0(SetWantsAnimateOnlyBeginFrames, void(void));
MOCK_METHOD0(SetWantsBeginFrameAcks, void(void));
MOCK_METHOD0(SetAutoNeedsBeginFrame, void(void));
void SubmitCompositorFrame(
const viz::LocalSurfaceId&,
viz::CompositorFrame frame,
std::optional<viz::HitTestRegionList> hit_test_region_list,
uint64_t) override {
SubmitCompositorFrame_(&frame);
}
MOCK_METHOD1(SubmitCompositorFrame_, void(viz::CompositorFrame*));
void SubmitCompositorFrameSync(
const viz::LocalSurfaceId&,
viz::CompositorFrame frame,
std::optional<viz::HitTestRegionList> hit_test_region_list,
uint64_t,
SubmitCompositorFrameSyncCallback cb) override {
SubmitCompositorFrameSync_(&frame);
std::move(cb).Run(WTF::Vector<viz::ReturnedResource>());
}
MOCK_METHOD1(SubmitCompositorFrameSync_, void(viz::CompositorFrame*));
MOCK_METHOD1(DidNotProduceFrame, void(const viz::BeginFrameAck&));
MOCK_METHOD2(DidAllocateSharedBitmap,
void(base::ReadOnlySharedMemoryRegion, const gpu::Mailbox&));
MOCK_METHOD1(DidDeleteSharedBitmap, void(const gpu::Mailbox&));
MOCK_METHOD1(SetPreferredFrameInterval, void(base::TimeDelta));
MOCK_METHOD1(InitializeCompositorFrameSinkType,
void(viz::mojom::CompositorFrameSinkType));
MOCK_METHOD1(BindLayerContext,
void(viz::mojom::blink::PendingLayerContextPtr));
MOCK_METHOD1(SetThreadIds, void(const WTF::Vector<int32_t>&));
private:
mojo::Receiver<viz::mojom::blink::CompositorFrameSink> receiver_{this};
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_TEST_MOCK_COMPOSITOR_FRAME_SINK_H_