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

group("dart") {
  deps = [
    ":dart_content_handler",
  ]
}

source_set("dart_controller") {
  sources = [
    "$root_gen_dir/dart_snapshot.cc",
  ]

  deps = [
    "//mojo/dart/embedder:dart_controller_no_snapshot",
    "//mojo/dart/embedder:generate_snapshot_file",
  ]
}

mojo_native_application("dart_content_handler") {
  sources = [
    "content_handler_app_service_connector.cc",
    "content_handler_app_service_connector.h",
    "content_handler_main.cc",
    "dart_app.cc",
    "dart_app.h",
  ]

  deps = [
    ":dart_controller",
    "//base",
    "//base:i18n",
    "//crypto",
    "//dart/runtime:libdart",
    "//mojo/application",
    "//mojo/application:application",
    "//mojo/application:content_handler",
    "//mojo/dart/embedder:dart_controller_no_snapshot",
    "//mojo/common",
    "//mojo/environment:chromium",
    "//mojo/icu",
    "//mojo/public/cpp/system",
    "//mojo/public/cpp/utility",
    "//mojo/public/interfaces/application",
    "//mojo/services/content_handler/public/interfaces",
    "//mojo/services/network/public/interfaces",
    "//third_party/zlib:zip",
    "//url:url",
  ]
}
