# 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_ime_controller.h",
    "platform_window.h",
    "platform_window_delegate.h",
    "platform_window_init_properties.cc",
    "platform_window_init_properties.h",
    "text_input_state.cc",
    "text_input_state.h",
  ]

  deps = [
    "//base",
    "//ui/base",
    "//ui/base/ime:text_input_types",
    "//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:ui_policy",
      "//third_party/fuchsia-sdk/sdk:zx",
    ]
  }
}

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