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