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

source_set("application") {
  sources = [
    "application_runner_chromium.cc",
    "application_runner_chromium.h",
  ]

  public_deps = [
    "//mojo/public/cpp/application",
  ]
  deps = [
    "//base",
    "//mojo/message_pump",
    "//mojo/public/cpp/system",
    "//mojo/environment:chromium",
  ]
}

source_set("content_handler") {
  sources = [
    "content_handler_factory.cc",
    "content_handler_factory.h",
  ]
  deps = [
    ":application",
    "//base",
    "//mojo/environment:chromium",
    "//mojo/message_pump",
    "//mojo/public/interfaces/application",
    "//mojo/services/content_handler/interfaces",
    "//mojo/services/network/interfaces",
  ]
}

source_set("test_support") {
  testonly = true
  sources = [
    "application_test_main_chromium.cc",
  ]

  public_deps = [
    "//mojo/public/cpp/application:test_support",
  ]
  deps = [
    "//base",
    "//base/test:test_config",
    "//mojo/environment:chromium",
    "//mojo/public/cpp/application",
    "//mojo/public/cpp/system",
  ]
}
