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

import("//build/config/features.gni")

static_library("sync_bookmarks") {
  sources = [
    "bookmark_change_processor.cc",
    "bookmark_change_processor.h",
    "bookmark_data_type_controller.cc",
    "bookmark_data_type_controller.h",
    "bookmark_local_changes_builder.cc",
    "bookmark_local_changes_builder.h",
    "bookmark_model_associator.cc",
    "bookmark_model_associator.h",
    "bookmark_model_merger.cc",
    "bookmark_model_merger.h",
    "bookmark_model_observer_impl.cc",
    "bookmark_model_observer_impl.h",
    "bookmark_model_type_processor.cc",
    "bookmark_model_type_processor.h",
    "bookmark_remote_updates_handler.cc",
    "bookmark_remote_updates_handler.h",
    "bookmark_specifics_conversions.cc",
    "bookmark_specifics_conversions.h",
    "bookmark_sync_service.cc",
    "bookmark_sync_service.h",
    "synced_bookmark_tracker.cc",
    "synced_bookmark_tracker.h",
  ]

  deps = [
    "//base",
    "//components/bookmarks/browser",
    "//components/favicon/core",
    "//components/history/core/browser",
    "//components/keyed_service/core:core",
    "//components/sync",
    "//components/undo",
    "//ui/base",
    "//ui/gfx",
  ]
}

source_set("unit_tests") {
  testonly = true

  sources = [
    "bookmark_data_type_controller_unittest.cc",
    "bookmark_model_merger_unittest.cc",
    "bookmark_model_observer_impl_unittest.cc",
    "bookmark_model_type_processor_unittest.cc",
    "bookmark_remote_updates_handler_unittest.cc",
    "bookmark_specifics_conversions_unittest.cc",
    "synced_bookmark_tracker_unittest.cc",
  ]

  deps = [
    ":sync_bookmarks",
    "//base",
    "//base/test:test_support",
    "//components/bookmarks/browser",
    "//components/bookmarks/test",
    "//components/favicon/core/test:test_support",
    "//components/history/core/browser",
    "//components/prefs:test_support",
    "//components/sync:test_support",
    "//components/undo",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
