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

bundle_data("resources") {
  sources = [
    "resources/side_swipe_navigation_back.png",
    "resources/side_swipe_navigation_back@2x.png",
    "resources/side_swipe_navigation_back@3x.png",
    "resources/side_swipe_navigation_content_shadow.png",
    "resources/side_swipe_navigation_content_shadow@2x.png",
    "resources/side_swipe_navigation_content_shadow@3x.png",
  ]
  outputs = [
    "{{bundle_resources_dir}}/{{source_file_part}}",
  ]
}

source_set("side_swipe") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "card_side_swipe_view.h",
    "card_side_swipe_view.mm",
    "history_side_swipe_provider.h",
    "history_side_swipe_provider.mm",
    "side_swipe_controller.h",
    "side_swipe_controller.mm",
    "side_swipe_navigation_view.h",
    "side_swipe_navigation_view.mm",
    "side_swipe_util.h",
    "side_swipe_util.mm",
  ]
  deps = [
    ":resources",
    "//base",
    "//components/reading_list/core",
    "//ios/chrome/app/theme",
    "//ios/chrome/browser",
    "//ios/chrome/browser/browser_state",
    "//ios/chrome/browser/reading_list",
    "//ios/chrome/browser/snapshots",
    "//ios/chrome/browser/tabs",
    "//ios/chrome/browser/ui",
    "//ios/chrome/browser/ui/ntp",
    "//ios/chrome/browser/ui/tabs",
    "//ios/chrome/common",
    "//ios/web",
    "//ui/base",
    "//url",
  ]
  public_deps = [
    "//ios/chrome/browser/infobars",
  ]
  libs = [ "UIKit.framework" ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "side_swipe_controller_unittest.mm",
  ]
  deps = [
    ":side_swipe",
    "//base",
    "//ios/chrome/browser/browser_state:test_support",
    "//ios/chrome/browser/ui/toolbar",
    "//ios/web:test_support",
    "//testing/gtest",
    "//third_party/ocmock",
  ]
}
