# 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("open_from_clipboard") {
  sources = [
    "clipboard_recent_content.cc",
    "clipboard_recent_content.h",
    "clipboard_recent_content_ios.h",
    "clipboard_recent_content_ios.mm",
  ]

  deps = [
    "//base",
    "//url",
  ]
}

source_set("test_support") {
  testonly = true
  sources = [
    "fake_clipboard_recent_content.cc",
    "fake_clipboard_recent_content.h",
  ]

  deps = [
    ":open_from_clipboard",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "clipboard_recent_content_ios_unittest.mm",
  ]

  deps = [
    ":open_from_clipboard",
    "//base",
    "//testing/gtest",
  ]
}
