# 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")
import("//mojo/public/mojo_application.gni")

if (is_android) {
  import("//build/config/android/config.gni")
  import("//build/config/android/rules.gni")
  import("//mojo/public/tools/bindings/mojom.gni")

  group("native_viewport") {
    deps = [
      ":lib",
      ":native_viewport_java",
      ":jni_headers",
    ]
  }

  android_library("native_viewport_java") {
    java_files =
        [ "android/src/org/chromium/mojo/PlatformViewportAndroid.java" ]

    deps = [
      "//base:base_java",
      "//services/keyboard",
      "//mojo/services/keyboard/interfaces:interfaces_java",
      "//mojo/public/java:bindings",
      "//mojo/public/java:system",
    ]
  }

  generate_jni("jni_headers") {
    sources = [
      "android/src/org/chromium/mojo/PlatformViewportAndroid.java",
    ]

    jni_package = "mojo"
  }

  mojom("interfaces") {
    sources = [
      "native_viewport_support.mojom",
    ]
  }
} else {
  mojo_native_application("native_viewport") {
    output_name = "native_viewport_service"
    sources = [
      "app_delegate.cc",
      "main.cc",
    ]
    deps = [
      ":lib",
      "//base",
      "//gpu/config",
      "//mojo/application",
      "//mojo/common:tracing_impl",
      "//mojo/public/cpp/bindings:bindings",
      "//mojo/services/native_viewport/interfaces",
      "//mojo/services/native_viewport/cpp:args",
      "//services/gles2",
      "//ui/events",
      "//ui/events/platform",
      "//ui/gl",
    ]

    if (use_ozone) {
      sources += [ "ozone/app_delegate_ozone.cc" ]
      deps += [
        "//mojo/services/ozone_drm_gpu/interfaces",
        "//mojo/services/ozone_drm_host/interfaces",
        "//ui/events/ozone:events_ozone_evdev",
        "//ui/ozone",
      ]
    }
  }
}

source_set("lib") {
  sources = [
    "native_viewport_impl.cc",
    "native_viewport_impl.h",
    "onscreen_context_provider.cc",
    "onscreen_context_provider.h",
    "platform_viewport.h",
    "platform_viewport_android.cc",
    "platform_viewport_android.h",
    "platform_viewport_headless.cc",
    "platform_viewport_headless.h",
    "platform_viewport_stub.cc",
    "platform_viewport_x11.cc",
  ]

  if (!is_ios) {
    sources -= [ "platform_viewport_stub.cc" ]
  }

  deps = [
    "//base",
    "//gpu/command_buffer/service",
    "//mojo/application",
    "//mojo/common",
    "//mojo/converters/geometry",
    "//mojo/converters/input_events",
    "//mojo/converters/native_viewport",
    "//mojo/environment:chromium",
    "//services/gles2",
    "//mojo/services/geometry/interfaces",
    "//mojo/services/native_viewport/interfaces",
    "//ui/events",
    "//ui/events/platform",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//ui/platform_window",
    "//ui/display/types",
  ]

  if (is_android) {
    deps += [
      ":interfaces",
      ":jni_headers",
    ]
  }

  if (use_x11) {
    deps += [ "//ui/platform_window/x11" ]
  } else {
    sources -= [ "platform_viewport_x11.cc" ]
  }

  if (use_ozone) {
    sources += [
      "ozone/display_manager.cc",
      "ozone/display_manager.h",
      "ozone/platform_viewport_ozone.cc",
    ]
    deps += [
      "//ui/events/ozone:events_ozone_evdev",
      "//ui/ozone",
      "//ui/ozone:ozone_base",
      "//ui/ozone/platform/drm:drm_common",
    ]
  }

  if (is_win) {
    deps += [ "//ui/platform_window/win" ]
  }
}
