Index: ui/ozone/platform/drm/test/mock_drm_device.h |
diff --git a/ui/ozone/platform/drm/test/mock_drm_device.h b/ui/ozone/platform/drm/test/mock_drm_device.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a25bad9e91b1edfadf8e8d3ea232c554b4219198 |
--- /dev/null |
+++ b/ui/ozone/platform/drm/test/mock_drm_device.h |
@@ -0,0 +1,151 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef UI_OZONE_PLATFORM_DRM_TEST_MOCK_DRM_DEVICE_H_ |
+#define UI_OZONE_PLATFORM_DRM_TEST_MOCK_DRM_DEVICE_H_ |
+ |
+#include <map> |
+#include <queue> |
+#include <vector> |
+ |
+#include "skia/ext/refptr.h" |
+#include "third_party/skia/include/core/SkSurface.h" |
+#include "ui/ozone/platform/drm/gpu/drm_device.h" |
+ |
+namespace ui { |
+ |
+class CrtcController; |
+struct GammaRampRGBEntry; |
+ |
+// The real DrmDevice makes actual DRM calls which we can't use in unit tests. |
+class MockDrmDevice : public ui::DrmDevice { |
+ public: |
+ MockDrmDevice(); |
+ MockDrmDevice(bool use_sync_flips, |
+ std::vector<uint32_t> crtcs, |
+ size_t planes_per_crtc); |
+ |
+ int get_get_crtc_call_count() const { return get_crtc_call_count_; } |
+ int get_set_crtc_call_count() const { return set_crtc_call_count_; } |
+ int get_restore_crtc_call_count() const { return restore_crtc_call_count_; } |
+ int get_add_framebuffer_call_count() const { |
+ return add_framebuffer_call_count_; |
+ } |
+ int get_remove_framebuffer_call_count() const { |
+ return remove_framebuffer_call_count_; |
+ } |
+ int get_page_flip_call_count() const { return page_flip_call_count_; } |
+ int get_overlay_flip_call_count() const { return overlay_flip_call_count_; } |
+ int get_overlay_clear_call_count() const { return overlay_clear_call_count_; } |
+ void set_set_crtc_expectation(bool state) { set_crtc_expectation_ = state; } |
+ void set_page_flip_expectation(bool state) { page_flip_expectation_ = state; } |
+ void set_add_framebuffer_expectation(bool state) { |
+ add_framebuffer_expectation_ = state; |
+ } |
+ void set_create_dumb_buffer_expectation(bool state) { |
+ create_dumb_buffer_expectation_ = state; |
+ } |
+ |
+ uint32_t current_framebuffer() const { return current_framebuffer_; } |
+ |
+ const std::vector<skia::RefPtr<SkSurface>> buffers() const { |
+ return buffers_; |
+ } |
+ |
+ uint32_t get_cursor_handle_for_crtc(uint32_t crtc) const { |
+ const auto it = crtc_cursor_map_.find(crtc); |
+ return it != crtc_cursor_map_.end() ? it->second : 0; |
+ } |
+ |
+ void RunCallbacks(); |
+ |
+ // DrmDevice: |
+ ScopedDrmCrtcPtr GetCrtc(uint32_t crtc_id) override; |
+ bool SetCrtc(uint32_t crtc_id, |
+ uint32_t framebuffer, |
+ std::vector<uint32_t> connectors, |
+ drmModeModeInfo* mode) override; |
+ bool SetCrtc(drmModeCrtc* crtc, std::vector<uint32_t> connectors) override; |
+ bool DisableCrtc(uint32_t crtc_id) override; |
+ ScopedDrmConnectorPtr GetConnector(uint32_t connector_id) override; |
+ bool AddFramebuffer(uint32_t width, |
+ uint32_t height, |
+ uint8_t depth, |
+ uint8_t bpp, |
+ uint32_t stride, |
+ uint32_t handle, |
+ uint32_t* framebuffer) override; |
+ bool RemoveFramebuffer(uint32_t framebuffer) override; |
+ ScopedDrmFramebufferPtr GetFramebuffer(uint32_t framebuffer) override; |
+ bool PageFlip(uint32_t crtc_id, |
+ uint32_t framebuffer, |
+ bool is_sync, |
+ const PageFlipCallback& callback) override; |
+ bool PageFlipOverlay(uint32_t crtc_id, |
+ uint32_t framebuffer, |
+ const gfx::Rect& location, |
+ const gfx::Rect& source, |
+ int overlay_plane) override; |
+ ScopedDrmPropertyPtr GetProperty(drmModeConnector* connector, |
+ const char* name) override; |
+ bool SetProperty(uint32_t connector_id, |
+ uint32_t property_id, |
+ uint64_t value) override; |
+ bool GetCapability(uint64_t capability, uint64_t* value) override; |
+ ScopedDrmPropertyBlobPtr GetPropertyBlob(drmModeConnector* connector, |
+ const char* name) override; |
+ bool SetCursor(uint32_t crtc_id, |
+ uint32_t handle, |
+ const gfx::Size& size) override; |
+ bool MoveCursor(uint32_t crtc_id, const gfx::Point& point) override; |
+ bool CreateDumbBuffer(const SkImageInfo& info, |
+ uint32_t* handle, |
+ uint32_t* stride) override; |
+ bool DestroyDumbBuffer(uint32_t handle) override; |
+ bool MapDumbBuffer(uint32_t handle, size_t size, void** pixels) override; |
+ bool UnmapDumbBuffer(void* pixels, size_t size) override; |
+ bool CloseBufferHandle(uint32_t handle) override; |
+ bool CommitProperties(drmModePropertySet* properties, |
+ uint32_t flags, |
+ bool is_sync, |
+ bool test_only, |
+ const PageFlipCallback& callback) override; |
+ bool SetGammaRamp(uint32_t crtc_id, |
+ const std::vector<GammaRampRGBEntry>& lut) override; |
+ bool SetCapability(uint64_t capability, uint64_t value) override; |
+ |
+ private: |
+ ~MockDrmDevice() override; |
+ |
+ int get_crtc_call_count_; |
+ int set_crtc_call_count_; |
+ int restore_crtc_call_count_; |
+ int add_framebuffer_call_count_; |
+ int remove_framebuffer_call_count_; |
+ int page_flip_call_count_; |
+ int overlay_flip_call_count_; |
+ int overlay_clear_call_count_; |
+ int allocate_buffer_count_; |
+ |
+ bool set_crtc_expectation_; |
+ bool add_framebuffer_expectation_; |
+ bool page_flip_expectation_; |
+ bool create_dumb_buffer_expectation_; |
+ |
+ bool use_sync_flips_; |
+ |
+ uint32_t current_framebuffer_; |
+ |
+ std::vector<skia::RefPtr<SkSurface>> buffers_; |
+ |
+ std::map<uint32_t, uint32_t> crtc_cursor_map_; |
+ |
+ std::queue<PageFlipCallback> callbacks_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MockDrmDevice); |
+}; |
+ |
+} // namespace ui |
+ |
+#endif // UI_OZONE_PLATFORM_DRM_TEST_MOCK_DRM_DEVICE_H_ |