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

source_set("voice") {
  sources = [
    "audio_session_controller.h",
    "logo_animation_controller.h",
    "voice_search_bar.h",
    "voice_search_bar_owner.h",
    "voice_search_controller.h",
    "voice_search_controller.mm",
    "voice_search_controller_delegate.h",
    "voice_search_language.h",
    "voice_search_language.mm",
    "voice_search_prefs.cc",
    "voice_search_prefs.h",
    "voice_search_presenter.h",
    "voice_search_provider.h",
    "voice_search_provider.mm",
  ]
  deps = [
    "//base",
  ]
}

source_set("test_support") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "test_audio_session_controller.cc",
    "test_audio_session_controller.h",
    "test_voice_search_provider.h",
    "test_voice_search_provider.mm",
  ]

  deps = [
    ":voice",
    "//base",
    "//ios/public/provider/chrome/browser",
  ]
}
