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

import("//build/config/ui.gni")

assert(use_ozone)

source_set("common") {
  sources = [
    "display_mode_proxy.cc",
    "display_mode_proxy.h",
    "display_snapshot_proxy.cc",
    "display_snapshot_proxy.h",
    "display_util.cc",
    "display_util.h",
    "egl_util.cc",
    "egl_util.h",
    "gpu/ozone_gpu_message_generator.cc",
    "gpu/ozone_gpu_message_generator.h",
    "gpu/ozone_gpu_message_params.cc",
    "gpu/ozone_gpu_message_params.h",
    "gpu/ozone_gpu_messages.h",
    "native_display_delegate_ozone.cc",
    "native_display_delegate_ozone.h",
    "stub_overlay_manager.cc",
    "stub_overlay_manager.h",
  ]

  public_deps = [
    "//ui/ozone:ozone_base",
  ]

  deps = [
    "//ui/gl",
  ]

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