# 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 = [
    "org/domokit/sky/shell/JavaServiceProvider.java",
    "org/domokit/sky/shell/SkyMain.java",
    "org/domokit/sky/shell/PlatformView.java",
  ]
  jni_package = "sky/shell"
}

shared_library("sky_shell") {
  sources = [
    "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",
    "java_service_provider.cc",
    "java_service_provider.h",
    "library_loader.cc",
    "platform_view.cc",
    "platform_view.h",
    "shell.cc",
    "shell.h",
    "sky_main.cc",
    "sky_main.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/bin:libdart_withcore",
    "//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 = [
    "org/domokit/sky/shell/GestureProvider.java",
    "org/domokit/sky/shell/JavaServiceProvider.java",
    "org/domokit/sky/shell/PlatformView.java",
    "org/domokit/sky/shell/ServiceFactory.java",
    "org/domokit/sky/shell/ServiceRegistry.java",
    "org/domokit/sky/shell/SkyActivity.java",
    "org/domokit/sky/shell/SkyApplication.java",
    "org/domokit/sky/shell/SkyMain.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",
    "//sky/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",
  ]
}
