# Copyright 2016 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.

visibility = [ "//ui/ozone/*" ]

source_set("wayland") {
  sources = [
    "client_native_pixmap_factory_wayland.cc",
    "client_native_pixmap_factory_wayland.h",
    "ozone_platform_wayland.cc",
    "ozone_platform_wayland.h",
    "wayland_display.cc",
    "wayland_display.h",
    "wayland_object.cc",
    "wayland_object.h",
    "wayland_surface_factory.cc",
    "wayland_surface_factory.h",
    "wayland_window.cc",
    "wayland_window.h",
  ]

  deps = [
    "//base",
    "//skia",
    "//third_party/wayland:wayland_client",
    "//third_party/wayland-protocols:xdg_shell_protocol",
    "//ui/events/platform",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/ozone:ozone_base",
    "//ui/ozone/common",
    "//ui/platform_window",
  ]

  defines = [ "OZONE_IMPLEMENTATION" ]
}

source_set("wayland_unittests") {
  testonly = true

  sources = [
    "fake_server.cc",
    "fake_server.h",
    "mock_platform_window_delegate.cc",
    "wayland_display_unittest.cc",
    "wayland_surface_factory_unittest.cc",
    "wayland_test.cc",
    "wayland_test.h",
    "wayland_window_unittest.cc",
  ]

  deps = [
    ":wayland",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/wayland:wayland_server",
    "//third_party/wayland-protocols:xdg_shell_protocol",
    "//ui/gfx:test_support",
    "//ui/ozone:platform",
  ]
}
