# 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("../mojo_edk.gni")

mojo_edk_source_set("js") {
  sources = [
    "core.cc",
    "core.h",
    "drain_data.cc",
    "drain_data.h",
    "handle.cc",
    "handle.h",
    "handle_close_observer.h",
    "mojo_runner_delegate.cc",
    "mojo_runner_delegate.h",
    "support.cc",
    "support.h",
    "threading.cc",
    "threading.h",
    "waiting_callback.cc",
    "waiting_callback.h",
  ]

  public_deps = [
    "//base",
    "//gin",
    "//v8",
  ]

  mojo_sdk_deps = [
    "mojo/public/cpp/environment",
    "mojo/public/cpp/system",
  ]
}

mojo_edk_source_set("js_unittests") {
  testonly = true
  sources = [
    "handle_unittest.cc",
  ]

  deps = [
    "//testing/gtest",
  ]

  mojo_edk_deps = [
    "mojo/edk/js",
    "mojo/edk/test:test_support",
  ]

  mojo_sdk_deps = [
    "mojo/public/cpp/system",
  ]
}
