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

assert(!is_android)

source_set("keep_alive_registry") {
  sources = [
    "keep_alive_registry.cc",
    "keep_alive_registry.h",
    "keep_alive_state_observer.h",
    "keep_alive_types.cc",
    "keep_alive_types.h",
    "scoped_keep_alive.cc",
    "scoped_keep_alive.h",
  ]

  deps = [
    "//base",
  ]

  if (is_win) {
    deps += [ "//components/browser_watcher:stability_client" ]
  }
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "keep_alive_registry_unittest.cc",
  ]
  deps = [
    ":keep_alive_registry",
    "//testing/gtest",
  ]
}
