1 // Copyright 2019 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/ozone/platform/wayland/test/mock_zwp_linux_dmabuf.h"
6
7 #include <linux-dmabuf-unstable-v1-server-protocol.h>
8 #include <wayland-server-core.h>
9
10 #include "ui/ozone/platform/wayland/test/mock_buffer.h"
11 #include "ui/ozone/platform/wayland/test/test_zwp_linux_buffer_params.h"
12
13 namespace wl {
14
15 namespace {
16
17 constexpr uint32_t kLinuxDmabufVersion = 1;
18
CreateParams(wl_client * client,wl_resource * resource,uint32_t id)19 void CreateParams(wl_client* client, wl_resource* resource, uint32_t id) {
20 wl_resource* params_resource =
21 CreateResourceWithImpl<TestZwpLinuxBufferParamsV1>(
22 client, &zwp_linux_buffer_params_v1_interface,
23 wl_resource_get_version(resource), &kTestZwpLinuxBufferParamsV1Impl,
24 id);
25
26 auto* zwp_linux_dmabuf = GetUserDataAs<MockZwpLinuxDmabufV1>(resource);
27 auto* buffer_params =
28 GetUserDataAs<TestZwpLinuxBufferParamsV1>(params_resource);
29
30 DCHECK(buffer_params);
31 zwp_linux_dmabuf->StoreBufferParams(buffer_params);
32 buffer_params->SetZwpLinuxDmabuf(zwp_linux_dmabuf);
33 zwp_linux_dmabuf->CreateParams(client, resource, id);
34 }
35
36 } // namespace
37
38 const struct zwp_linux_dmabuf_v1_interface kMockZwpLinuxDmabufV1Impl = {
39 &DestroyResource, // destroy
40 &CreateParams, // create_params
41 };
42
MockZwpLinuxDmabufV1()43 MockZwpLinuxDmabufV1::MockZwpLinuxDmabufV1()
44 : GlobalObject(&zwp_linux_dmabuf_v1_interface,
45 &kMockZwpLinuxDmabufV1Impl,
46 kLinuxDmabufVersion) {}
47
~MockZwpLinuxDmabufV1()48 MockZwpLinuxDmabufV1::~MockZwpLinuxDmabufV1() {
49 DCHECK(buffer_params_.empty());
50 }
51
StoreBufferParams(TestZwpLinuxBufferParamsV1 * params)52 void MockZwpLinuxDmabufV1::StoreBufferParams(
53 TestZwpLinuxBufferParamsV1* params) {
54 buffer_params_.push_back(params);
55 }
56
OnBufferParamsDestroyed(TestZwpLinuxBufferParamsV1 * params)57 void MockZwpLinuxDmabufV1::OnBufferParamsDestroyed(
58 TestZwpLinuxBufferParamsV1* params) {
59 auto it = std::find(buffer_params_.begin(), buffer_params_.end(), params);
60 DCHECK(it != buffer_params_.end());
61 buffer_params_.erase(it);
62 }
63
64 } // namespace wl
65