# Copyright 2016 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("//build/config/ui.gni")
import("//services/shell/public/cpp/service.gni")
import("//services/shell/public/service_manifest.gni")
import("//mojo/public/tools/bindings/mojom.gni")

source_set("lib") {
  sources = [
    "catalog_viewer.cc",
    "catalog_viewer.h",
  ]

  deps = [
    "//base",
    "//mash/public/interfaces",
    "//mojo/public/cpp/bindings",
    "//services/catalog/public/interfaces",
    "//services/shell/public/cpp",
    "//services/shell/public/cpp:sources",
    "//services/shell/public/interfaces",
    "//services/tracing/public/cpp",
    "//ui/resources",
    "//ui/views",
    "//ui/views/mus:for_mojo_application",
  ]

  data_deps = [
    "//services/ui",
  ]
}

service("catalog_viewer") {
  sources = [
    "main.cc",
  ]

  deps = [
    ":lib",
    "//base",
    "//mojo/public/cpp/bindings",
    "//services/shell/public/cpp",
    "//services/shell/public/cpp:sources",
    "//services/shell/public/interfaces",
    "//ui/views/mus:for_mojo_application",
  ]

  resources = [ "$root_out_dir/views_mus_resources.pak" ]

  data_deps = [
    ":manifest",
  ]
}

service_manifest("manifest") {
  name = "catalog_viewer"
  source = "manifest.json"
}
