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

static_library("sync_sessions") {
  sources = [
    "favicon_cache.cc",
    "favicon_cache.h",
    "local_session_event_router.h",
    "lost_navigations_recorder.cc",
    "lost_navigations_recorder.h",
    "open_tabs_ui_delegate.cc",
    "open_tabs_ui_delegate.h",
    "revisit/bookmarks_by_url_provider_impl.cc",
    "revisit/bookmarks_by_url_provider_impl.h",
    "revisit/bookmarks_page_revisit_observer.cc",
    "revisit/bookmarks_page_revisit_observer.h",
    "revisit/current_tab_matcher.cc",
    "revisit/current_tab_matcher.h",
    "revisit/offset_tab_matcher.cc",
    "revisit/offset_tab_matcher.h",
    "revisit/page_equality.h",
    "revisit/page_revisit_broadcaster.cc",
    "revisit/page_revisit_broadcaster.h",
    "revisit/page_visit_observer.h",
    "revisit/sessions_page_revisit_observer.cc",
    "revisit/sessions_page_revisit_observer.h",
    "revisit/typed_url_page_revisit_observer.cc",
    "revisit/typed_url_page_revisit_observer.h",
    "revisit/typed_url_page_revisit_task.cc",
    "revisit/typed_url_page_revisit_task.h",
    "session_data_type_controller.cc",
    "session_data_type_controller.h",
    "sessions_sync_manager.cc",
    "sessions_sync_manager.h",
    "sync_sessions_client.cc",
    "sync_sessions_client.h",
    "sync_sessions_metrics.cc",
    "sync_sessions_metrics.h",
    "synced_session.cc",
    "synced_session.h",
    "synced_session_tracker.cc",
    "synced_session_tracker.h",
    "synced_tab_delegate.cc",
    "synced_tab_delegate.h",
    "synced_window_delegate.h",
    "synced_window_delegates_getter.cc",
    "synced_window_delegates_getter.h",
    "tab_node_pool.cc",
    "tab_node_pool.h",
    "task_tracker.cc",
    "task_tracker.h",
  ]

  public_deps = [
    "//components/sessions",
    "//components/sync",
  ]

  deps = [
    "//base",
    "//components/bookmarks/browser",
    "//components/favicon/core",
    "//components/history/core/browser",
    "//components/prefs",
    "//components/variations",
    "//ui/base:base",
    "//ui/gfx",
    "//url",
  ]
}

static_library("test_support") {
  testonly = true
  sources = [
    "fake_sync_sessions_client.cc",
    "fake_sync_sessions_client.h",
    "session_sync_test_helper.cc",
    "session_sync_test_helper.h",
  ]

  public_deps = [
    ":sync_sessions",
    "//base",
    "//components/sync",
    "//testing/gtest",
    "//url",
  ]

  deps = []
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "favicon_cache_unittest.cc",
    "lost_navigations_recorder_unittest.cc",
    "revisit/bookmarks_page_revisit_observer_unittest.cc",
    "revisit/current_tab_matcher_unittest.cc",
    "revisit/offset_tab_matcher_unittest.cc",
    "revisit/page_revisit_broadcaster_unittest.cc",
    "revisit/sessions_page_revisit_observer_unittest.cc",
    "revisit/typed_url_page_revisit_task_unittest.cc",
    "session_data_type_controller_unittest.cc",
    "sessions_sync_manager_unittest.cc",
    "sync_sessions_metrics_unittest.cc",
    "synced_session_tracker_unittest.cc",
    "tab_node_pool_unittest.cc",
    "task_tracker_unittest.cc",
  ]

  deps = [
    ":sync_sessions",
    ":test_support",
    "//base/test:test_support",
    "//components/bookmarks/browser",
    "//components/history/core/browser",
    "//components/prefs:test_support",
    "//components/sessions:test_support",
    "//components/sync",
    "//components/sync:test_support_driver",
    "//components/sync:test_support_engine",
    "//components/sync:test_support_model",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/base:base",
    "//url",
  ]
}
