# 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("//chromecast/chromecast.gni")
import("//testing/test.gni")

cast_source_set("reboot_util") {
  sources = [
    "reboot_util.h",
    "reboot_util_core.cc",
  ]

  deps = [ "//base" ]

  if (!is_fuchsia) {
    if (chromecast_branding == "google") {
      deps += [ "//chromecast/internal/system/reboot:reboot_util" ]
    } else {
      sources += [ "reboot_util_dummy.cc" ]
    }
  }

  if (is_android && chromecast_branding != "public") {
    deps += [
      "//chromecast/internal/system/reboot/android:reboot_shlib_impl",
      "//chromecast/public",
    ]
  } else if (is_fuchsia) {
    deps += [ ":fuchsia" ]
  } else {
    deps += [ ":libcast_reboot_1.0" ]
  }
}

test("cast_reboot_unittests") {
  sources = [ "reboot_util_test.cc" ]

  deps = [
    ":reboot_util",
    "//base/test:run_all_unittests",
    "//base/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]

  if (is_fuchsia) {
    sources += [ "reboot_fuchsia_test.cc" ]
    deps += [
      ":fuchsia",
      "//chromecast/public",
      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.feedback",
      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.hardware.power.statecontrol",
      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.io",
      "//third_party/fuchsia-sdk/sdk/pkg/fidl_cpp",
      "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
    ]
  }
}

# Target for OEM partners to override reboot shared library, i.e.
# libcast_reboot_1.0.so.
cast_shared_library("libcast_reboot_1.0") {
  sources = [ "reboot_dummy.cc" ]

  public_deps = [ "//chromecast/public" ]
}

if (is_fuchsia) {
  cast_source_set("fuchsia") {
    sources = [
      "fuchsia_component_restart_reason.cc",
      "fuchsia_component_restart_reason.h",
      "reboot_fuchsia.cc",
      "reboot_fuchsia.h",
      "reboot_util.h",
    ]
    public_deps = [ "//chromecast/public" ]
    deps = [
      "//base",
      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.feedback",
      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.hardware.power.statecontrol",
      "//third_party/fuchsia-sdk/sdk/pkg/fidl",
      "//third_party/fuchsia-sdk/sdk/pkg/fidl_cpp",
      "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
    ]
  }
}
