# Copyright 2018 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/ios/rules.gni")

source_set("app_launcher") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "app_launcher_tab_helper.h",
    "app_launcher_tab_helper.mm",
    "app_launcher_tab_helper_delegate.h",
  ]
  deps = [
    "//base",
    "//components/reading_list/core:core",
    "//ios/chrome/browser",
    "//ios/chrome/browser/reading_list",
    "//ios/chrome/browser/tabs",
    "//ios/chrome/browser/web:web_internal",
    "//ios/web/public",
    "//url",
  ]
}

source_set("unit_tests") {
  configs += [ "//build/config/compiler:enable_arc" ]
  testonly = true
  sources = [
    "app_launcher_tab_helper_unittest.mm",
  ]
  deps = [
    ":app_launcher",
    "//base",
    "//ios/chrome/browser",
    "//ios/chrome/browser/web:web_internal",
    "//ios/web/public/test/fakes",
    "//testing/gtest",
    "//url",
  ]
}
