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

assert(is_android)

import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")

generate_jni("jni_headers") {
  sources = [
    "android/org/domokit/sky/shell/PlatformServiceProvider.java",
    "android/org/domokit/sky/shell/PlatformView.java",
    "android/org/domokit/sky/shell/SkyMain.java",
    "android/org/domokit/sky/shell/TracingController.java",
  ]
  jni_package = "sky/shell"
}

shared_library("sky_shell") {
  sources = [
    "android/library_loader.cc",
    "android/platform_service_provider.cc",
    "android/platform_service_provider.h",
    "android/platform_view.cc",
    "android/platform_view.h",
    "android/sky_main.cc",
    "android/sky_main.h",
    "android/tracing_controller.cc",
    "android/tracing_controller.h",
    "gpu/ganesh_context.cc",
    "gpu/ganesh_context.h",
    "gpu/ganesh_surface.cc",
    "gpu/ganesh_surface.h",
    "gpu/rasterizer.cc",
    "gpu/rasterizer.h",
    "gpu_delegate.cc",
    "gpu_delegate.h",
    "service_provider.h",
    "shell.cc",
    "shell.h",
    "ui/animator.cc",
    "ui/animator.h",
    "ui/engine.cc",
    "ui/engine.h",
    "ui/input_event_converter.cc",
    "ui/input_event_converter.h",
    "ui/internals.cc",
    "ui/internals.h",
    "ui_delegate.cc",
    "ui_delegate.h",
  ]

  deps = [
    "//base",
    "//base:i18n",
    "//build/config/sanitizers:deps",
    "//dart/runtime:libdart",
    "//mojo/android:libsystem_java",
    "//mojo/common",
    "//mojo/edk/system",
    "//mojo/public/cpp/application",
    "//mojo/public/interfaces/application",
    "//mojo/services/navigation/public/interfaces",
    "//mojo/services/network/public/interfaces",
    "//skia",
    "//sky/engine",
    "//sky/engine/tonic",
    "//sky/services/platform",
    "//sky/services/viewport",
    "//ui/gfx/geometry",
    "//ui/gl",
    ":jni_headers",
  ]
}

android_library("java") {
  java_files = [
    "android/org/domokit/sky/shell/GestureProvider.java",
    "android/org/domokit/sky/shell/PlatformServiceProvider.java",
    "android/org/domokit/sky/shell/PlatformView.java",
    "android/org/domokit/sky/shell/ServiceFactory.java",
    "android/org/domokit/sky/shell/ServiceRegistry.java",
    "android/org/domokit/sky/shell/SkyActivity.java",
    "android/org/domokit/sky/shell/SkyApplication.java",
    "android/org/domokit/sky/shell/SkyMain.java",
    "android/org/domokit/sky/shell/TracingController.java",
  ]

  deps = [
    "//base:base_java",
    "//mojo/android:system_java",
    "//mojo/public/interfaces/application:application_java",
    "//mojo/public/java:bindings",
    "//mojo/public/java:system",
    "//mojo/services/network/public/interfaces:interfaces_java",
    "//services/keyboard",
    "//sky/services/oknet",
    "//sky/services/viewport:viewport_java",
  ]
}

copy_ex("assets") {
  clear_dir = true
  dest = "$root_build_dir/sky_shell/assets"
  sources = [
    "$root_build_dir/icudtl.dat",
  ]
  deps = [
    "//third_party/icu",
  ]
}
