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

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

source_set("platform_window") {
  sources = [
    "platform_window_base.cc",
    "platform_window_base.h",
    "platform_window_delegate.h",
    "platform_window_delegate_base.cc",
    "platform_window_delegate_base.h",
    "platform_window_init_properties.cc",
    "platform_window_init_properties.h",
  ]

  deps = [
    "//base",
    "//ui/base",
    "//ui/gfx",
  ]

  if (is_fuchsia) {
    sources += [
      "fuchsia/initialize_presenter_api_view.cc",
      "fuchsia/initialize_presenter_api_view.h",
    ]

    public_deps = [
      "//third_party/fuchsia-sdk/sdk:scenic_cpp",
      "//third_party/fuchsia-sdk/sdk:sys_cpp",
      "//third_party/fuchsia-sdk/sdk:ui_policy",
      "//third_party/fuchsia-sdk/sdk:ui_views",
    ]
  }

  if (is_linux) {
    sources += [
      "platform_window_delegate_linux.cc",
      "platform_window_delegate_linux.h",
      "platform_window_linux.cc",
      "platform_window_linux.h",
    ]
  }

  if (is_win) {
    sources += [ "platform_window_win.h" ]
  }
}

group("platform_impls") {
  public_deps = [
    "//ui/platform_window/stub",
  ]
  if (use_x11) {
    public_deps += [ "//ui/platform_window/x11" ]
  } else if (is_win) {
    public_deps += [ "//ui/platform_window/win" ]
  }
}
