# 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/jumbo.gni")
import("//build/config/ui.gni")
import("//ui/display/display.gni")

jumbo_component("manager") {
  sources = [
    "display_layout_store.cc",
    "display_layout_store.h",
    "display_manager.cc",
    "display_manager.h",
    "display_manager_export.h",
    "display_manager_utilities.cc",
    "display_manager_utilities.h",
    "fake_display_delegate.cc",
    "fake_display_delegate.h",
    "fake_display_snapshot.cc",
    "fake_display_snapshot.h",
    "json_converter.cc",
    "json_converter.h",
    "managed_display_info.cc",
    "managed_display_info.h",
  ]

  if (build_display_configuration) {
    sources += [
      "apply_content_protection_task.cc",
      "apply_content_protection_task.h",
      "configure_displays_task.cc",
      "configure_displays_task.h",
      "default_touch_transform_setter.cc",
      "default_touch_transform_setter.h",
      "display_change_observer.cc",
      "display_change_observer.h",
      "display_configurator.cc",
      "display_configurator.h",
      "display_layout_manager.h",
      "display_util.cc",
      "display_util.h",
      "query_content_protection_task.cc",
      "query_content_protection_task.h",
      "touch_device_manager.cc",
      "touch_device_manager.h",
      "touch_transform_controller.cc",
      "touch_transform_controller.h",
      "touch_transform_setter.h",
      "update_display_configuration_task.cc",
      "update_display_configuration_task.h",
    ]
  }

  configs += [ "//build/config/compiler:wexit_time_destructors" ]

  public_deps = [
    "//ui/display",
  ]

  deps = [
    "//base",
    "//third_party/re2",
    "//ui/base",
    "//ui/base/user_activity",
    "//ui/display/mojo:interfaces",
    "//ui/display/util",
    "//ui/events:platform_event",
    "//ui/events/devices",
    "//ui/strings",
  ]

  defines = [ "DISPLAY_MANAGER_IMPLEMENTATION" ]

  if (is_chromeos) {
    deps += [ "//chromeos" ]
  }
}
