# 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")

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

    deps = [
      "//base:base_java",
    ]
  }
} else {
  mojo_native_application("native_viewport") {
    output_name = "native_viewport_service"
    sources = [ "main.cc" ]
    deps = [
      ":lib",
      "//base",
      "//mojo/application",
      "//mojo/public/c/system:for_shared_library",
      "//mojo/public/cpp/bindings:bindings",
      "//mojo/services/public/interfaces/native_viewport",
      "//mojo/services/public/cpp/native_viewport:args",
      "//ui/gl",
    ]
  }
}

source_set("lib") {
  sources = [
    "native_viewport_impl.cc",
    "native_viewport_impl.h",
    "platform_viewport.h",
    "platform_viewport_android.cc",
    "platform_viewport_android.h",
    "platform_viewport_mac.mm",
    "platform_viewport_headless.cc",
    "platform_viewport_headless.h",
    "platform_viewport_ozone.cc",
    "platform_viewport_stub.cc",
    "platform_viewport_win.cc",
    "platform_viewport_x11.cc",
    "viewport_surface.cc",
    "viewport_surface.h",
  ]

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

  if (!use_ozone) {
    sources -= [ "platform_viewport_ozone.cc" ]
  }

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

  if (is_android) {
    deps += [ "//mojo:jni_headers" ]
  }

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