1// Copyright 2014 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/dri/test/mock_dri_wrapper.h"
6
7#include <xf86drmMode.h>
8
9#include "ui/ozone/platform/dri/dri_surface.h"
10#include "ui/ozone/platform/dri/hardware_display_controller.h"
11
12namespace ui {
13
14MockDriWrapper::MockDriWrapper(int fd)
15    : DriWrapper(""),
16      get_crtc_call_count_(0),
17      free_crtc_call_count_(0),
18      restore_crtc_call_count_(0),
19      add_framebuffer_call_count_(0),
20      remove_framebuffer_call_count_(0),
21      page_flip_call_count_(0),
22      set_crtc_expectation_(true),
23      add_framebuffer_expectation_(true),
24      page_flip_expectation_(true) {
25  fd_ = fd;
26}
27
28MockDriWrapper::~MockDriWrapper() {
29  fd_ = -1;
30}
31
32drmModeCrtc* MockDriWrapper::GetCrtc(uint32_t crtc_id) {
33  get_crtc_call_count_++;
34  return new drmModeCrtc;
35}
36
37void MockDriWrapper::FreeCrtc(drmModeCrtc* crtc) {
38  free_crtc_call_count_++;
39  delete crtc;
40}
41
42bool MockDriWrapper::SetCrtc(uint32_t crtc_id,
43                             uint32_t framebuffer,
44                             uint32_t* connectors,
45                             drmModeModeInfo* mode) {
46  return set_crtc_expectation_;
47}
48
49bool MockDriWrapper::SetCrtc(drmModeCrtc* crtc, uint32_t* connectors) {
50  restore_crtc_call_count_++;
51  return true;
52}
53
54bool MockDriWrapper::AddFramebuffer(uint32_t width,
55                                    uint32_t height,
56                                    uint8_t depth,
57                                    uint8_t bpp,
58                                    uint32_t stride,
59                                    uint32_t handle,
60                                    uint32_t* framebuffer) {
61  add_framebuffer_call_count_++;
62  *framebuffer = add_framebuffer_call_count_;
63  return add_framebuffer_expectation_;
64}
65
66bool MockDriWrapper::RemoveFramebuffer(uint32_t framebuffer) {
67  remove_framebuffer_call_count_++;
68  return true;
69}
70
71bool MockDriWrapper::PageFlip(uint32_t crtc_id,
72                              uint32_t framebuffer,
73                              void* data) {
74  page_flip_call_count_++;
75  static_cast<ui::HardwareDisplayController*>(data)->surface()->SwapBuffers();
76  return page_flip_expectation_;
77}
78
79bool MockDriWrapper::SetProperty(uint32_t connector_id,
80                                 uint32_t property_id,
81                                 uint64_t value) {
82  return true;
83}
84
85void MockDriWrapper::FreeProperty(drmModePropertyRes* prop) {
86  delete prop;
87}
88
89drmModePropertyBlobRes* MockDriWrapper::GetPropertyBlob(
90    drmModeConnector* connector,
91    const char* name) {
92  return new drmModePropertyBlobRes;
93}
94
95void MockDriWrapper::FreePropertyBlob(drmModePropertyBlobRes* blob) {
96  delete blob;
97}
98
99bool MockDriWrapper::SetCursor(uint32_t crtc_id,
100                               uint32_t handle,
101                               uint32_t width,
102                               uint32_t height) {
103  return true;
104}
105
106bool MockDriWrapper::MoveCursor(uint32_t crtc_id, int x, int y) {
107  return true;
108}
109
110void MockDriWrapper::HandleEvent(drmEventContext& event) {
111}
112
113}  // namespace ui
114