# 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")
import("//tools/grit/repack.gni")

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

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

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

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

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