# Copyright (c) 2022 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../../../webrtc.gni")

rtc_library("fake_metronome") {
  testonly = true
  sources = [
    "fake_metronome.cc",
    "fake_metronome.h",
  ]
  deps = [
    "..:metronome",
    "../..:priority",
    "../..:sequence_checker",
    "../../../rtc_base:macromagic",
    "../../../rtc_base:rtc_event",
    "../../../rtc_base:rtc_task_queue",
    "../../../rtc_base/synchronization:mutex",
    "../../../rtc_base/task_utils:repeating_task",
    "../../task_queue",
    "../../units:time_delta",
  ]
}
