# 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/public/tools/bindings/mojom.gni")

# GYP version: mojo/mojo_services.gypi:mojo_test_service_bindings
mojom("bindings") {
  sources = [
    "test_request_tracker.mojom",
    "test_service.mojom",
  ]
}

# GYP version: mojo/mojo_services.gypi:mojo_test_app
shared_library("mojo_test_app") {
  deps = [
    ":bindings",
    "//base",
    "//base:i18n",
    "//mojo/public/c/system:for_shared_library",
    "//mojo/public/cpp/application",
    "//mojo/public/cpp/application:standalone",
    "//mojo/public/cpp/utility",
  ]

  sources = [
    "test_request_tracker_client_impl.cc",
    "test_request_tracker_client_impl.h",
    "test_service_application.cc",
    "test_service_application.h",
    "test_service_impl.cc",
    "test_service_impl.h",
    "test_time_service_impl.cc",
    "test_time_service_impl.h",
  ]
}

# GYP version: //mojo/mojo_services.gypi:mojo_test_request_tracker_app
shared_library("mojo_test_request_tracker_app") {
  deps = [
    ":bindings",
    "//base",
    "//base:i18n",
    "//mojo/public/c/system:for_shared_library",
    "//mojo/public/cpp/application",
    "//mojo/public/cpp/application:standalone",
    "//mojo/public/cpp/utility",
  ]

  sources = [
    "test_request_tracker_client_impl.cc",
    "test_request_tracker_client_impl.h",
    "test_request_tracker_application.cc",
    "test_request_tracker_application.h",
    "test_time_service_impl.cc",
    "test_time_service_impl.h",
    "test_request_tracker_impl.cc",
    "test_request_tracker_impl.h",
  ]
}
