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

source_set("security_interstitials") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "ios_blocking_page_controller_client.h",
    "ios_blocking_page_controller_client.mm",
    "ios_blocking_page_metrics_helper.h",
    "ios_blocking_page_metrics_helper.mm",
    "ios_blocking_page_tab_helper.h",
    "ios_blocking_page_tab_helper.mm",
    "ios_security_interstitial_page.h",
    "ios_security_interstitial_page.mm",
  ]
  deps = [
    "//base",
    "//components/history/core/browser",
    "//components/keyed_service/core",
    "//components/prefs",
    "//components/rappor",
    "//components/resources",
    "//components/security_interstitials/core",
    "//ios/components/ui_util",
    "//ios/web",
    "//ios/web/common",
    "//ios/web/public",
    "//ios/web/public/security",
    "//ui/base",
    "//url",
  ]
}

source_set("unit_tests") {
  configs += [ "//build/config/compiler:enable_arc" ]
  testonly = true
  sources = [ "ios_blocking_page_tab_helper_unittest.mm" ]
  deps = [
    ":security_interstitials",
    "//ios/web",
    "//ios/web/public/test/fakes",
    "//testing/gtest",
  ]
}
