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

import("//mojo/public/dart/rules.gni")
import("//mojo/services/mojo_services.gni")

# TODO(johnmccutchan): Automate this.
# for i in `find lib/|grep mojom.dart|sort`;do echo "  \"$i\",";done
bindings_sources = [
  "lib/activity/activity.mojom.dart",
  "lib/authentication/authentication_impl_db.mojom.dart",
  "lib/authentication/authentication.mojom.dart",
  "lib/contacts/contacts.mojom.dart",
  "lib/http_server/http_request.mojom.dart",
  "lib/http_server/http_response.mojom.dart",
  "lib/http_server/http_server_factory.mojom.dart",
  "lib/http_server/http_server.mojom.dart",
  "lib/icu_data/icu_data.mojom.dart",
  "lib/input/input.mojom.dart",
  "lib/keyboard/keyboard.mojom.dart",
  "lib/mojo/asset_bundle/asset_bundle.mojom.dart",
  "lib/mojo/authenticating_url_loader_interceptor_meta_factory.mojom.dart",
  "lib/mojo/camera.mojom.dart",
  "lib/mojo/clipboard.mojom.dart",
  "lib/mojo/content_handler.mojom.dart",
  "lib/mojo/cookie_store.mojom.dart",
  "lib/mojo/device_info.mojom.dart",
  "lib/mojo/files/directory.mojom.dart",
  "lib/mojo/files/file.mojom.dart",
  "lib/mojo/files/files.mojom.dart",
  "lib/mojo/files/ioctl.mojom.dart",
  "lib/mojo/files/ioctl_terminal.mojom.dart",
  "lib/mojo/files/types.mojom.dart",
  "lib/mojo/geocoder.mojom.dart",
  "lib/mojo/geometry.mojom.dart",
  "lib/mojo/gfx/composition/compositor.mojom.dart",
  "lib/mojo/gfx/composition/hit_tests.mojom.dart",
  "lib/mojo/gfx/composition/nodes.mojom.dart",
  "lib/mojo/gfx/composition/renderers.mojom.dart",
  "lib/mojo/gfx/composition/resources.mojom.dart",
  "lib/mojo/gfx/composition/scenes.mojom.dart",
  "lib/mojo/gfx/composition/scene_token.mojom.dart",
  "lib/mojo/gfx/composition/scheduling.mojom.dart",
  "lib/mojo/host_resolver.mojom.dart",
  "lib/mojo/http_connection.mojom.dart",
  "lib/mojo/http_message.mojom.dart",
  "lib/mojo/http_server.mojom.dart",
  "lib/mojo/input_event_constants.mojom.dart",
  "lib/mojo/input_events.mojom.dart",
  "lib/mojo/input_key_codes.mojom.dart",
  "lib/mojo/location.mojom.dart",
  "lib/mojo/location_service.mojom.dart",
  "lib/mojo/media/audio_server.mojom.dart",
  "lib/mojo/media/audio_track.mojom.dart",
  "lib/mojo/media/media_common.mojom.dart",
  "lib/mojo/media/media_factory.mojom.dart",
  "lib/mojo/media/media_metadata.mojom.dart",
  "lib/mojo/media/media_player.mojom.dart",
  "lib/mojo/media/media_sink.mojom.dart",
  "lib/mojo/media/media_source.mojom.dart",
  "lib/mojo/media/media_transport.mojom.dart",
  "lib/mojo/media/media_type_converter.mojom.dart",
  "lib/mojo/media/media_types.mojom.dart",
  "lib/mojo/media/timeline_controller.mojom.dart",
  "lib/mojo/native_viewport_event_dispatcher.mojom.dart",
  "lib/mojo/navigation.mojom.dart",
  "lib/mojo/net_address.mojom.dart",
  "lib/mojo/network_service.mojom.dart",
  "lib/mojo/quads.mojom.dart",
  "lib/mojo/service_registry.mojom.dart",
  "lib/mojo/sharing.mojom.dart",
  "lib/mojo/surface_id.mojom.dart",
  "lib/mojo/surfaces.mojom.dart",
  "lib/mojo/tcp_bound_socket.mojom.dart",
  "lib/mojo/tcp_connected_socket.mojom.dart",
  "lib/mojo/tcp_server_socket.mojom.dart",
  "lib/mojo/terminal/terminal_client.mojom.dart",
  "lib/mojo/terminal/terminal.mojom.dart",
  "lib/mojo/timelines.mojom.dart",
  "lib/mojo/udp_socket.mojom.dart",
  "lib/mojo/ui/input_connection.mojom.dart",
  "lib/mojo/ui/input_dispatcher.mojom.dart",
  "lib/mojo/ui/view_associates.mojom.dart",
  "lib/mojo/ui/view_containers.mojom.dart",
  "lib/mojo/ui/view_manager.mojom.dart",
  "lib/mojo/ui/view_properties.mojom.dart",
  "lib/mojo/ui/view_provider.mojom.dart",
  "lib/mojo/ui/views.mojom.dart",
  "lib/mojo/ui/view_token.mojom.dart",
  "lib/mojo/ui/view_trees.mojom.dart",
  "lib/mojo/ui/view_tree_token.mojom.dart",
  "lib/mojo/url_loader_interceptor.mojom.dart",
  "lib/mojo/url_loader.mojom.dart",
  "lib/mojo/url_response_disk_cache.mojom.dart",
  "lib/mojo/web_socket.mojom.dart",
  "lib/native_support/process.mojom.dart",
  "lib/nfc/nfc.mojom.dart",
  "lib/notifications/notifications.mojom.dart",
  "lib/prediction/prediction.mojom.dart",
  "lib/sensors/sensors.mojom.dart",
  "lib/speech_recognizer/speech_recognizer.mojom.dart",
  "lib/tracing/tracing.mojom.dart",
  "lib/vsync/vsync.mojom.dart",
]

dart_pkg("mojo_services") {
  sources = [
              "CHANGELOG.md",
              "README.md",
              "pubspec.yaml",
            ] + bindings_sources

  deps = [
    "//mojo/services",
    "//third_party/dart-pkg",
  ]
}
