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

static_library("send_tab_to_self") {
  sources = [
    "features.cc",
    "features.h",
    "send_tab_to_self_bridge.cc",
    "send_tab_to_self_bridge.h",
    "send_tab_to_self_entry.cc",
    "send_tab_to_self_entry.h",
    "send_tab_to_self_metrics.cc",
    "send_tab_to_self_metrics.h",
    "send_tab_to_self_model.cc",
    "send_tab_to_self_model.h",
    "send_tab_to_self_model_observer.h",
    "send_tab_to_self_sync_service.cc",
    "send_tab_to_self_sync_service.h",
  ]
  deps = [
    "//base",
    "//components/history/core/browser",
    "//components/keyed_service/core",
    "//components/send_tab_to_self/proto:send_tab_to_self_proto",
    "//components/sync",
    "//components/version_info",
    "//url",
  ]
  public_deps = [
    "//components/send_tab_to_self/proto:send_tab_to_self_proto",
  ]
  if (is_ios || is_android) {
    sources += [
      "send_tab_to_self_infobar_delegate.cc",
      "send_tab_to_self_infobar_delegate.h",
    ]
    deps += [ "//components/infobars/core" ]
  }
}

source_set("test_support") {
  testonly = true
  sources = [
    "test_send_tab_to_self_model.cc",
    "test_send_tab_to_self_model.h",
  ]
  deps = [
    ":send_tab_to_self",
    "//base",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "send_tab_to_self_bridge_unittest.cc",
    "send_tab_to_self_entry_unittest.cc",
  ]
  deps = [
    ":send_tab_to_self",
    "//base",
    "//base/test:test_support",
    "//components/history/core/browser",
    "//components/send_tab_to_self/proto:send_tab_to_self_proto",
    "//components/sync",
    "//components/sync:test_support_driver",
    "//components/sync:test_support_model",
    "//testing/gtest",
    "//url",
  ]
}
