# Copyright 2017 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("//ios/build/config.gni")

source_set("public") {
  public_deps = [
    ":web_state_observer",
    "//ios/web/public/browsing_data",
    "//ios/web/public/favicon",
    "//ios/web/public/navigation",
    "//ios/web/public/thread",
    "//ios/web/public/ui",
    "//net",
    "//services/network/public/cpp",
    "//services/network/public/mojom",
  ]

  deps = [
    "//ios/third_party/webkit",
    "//ios/web/common",
    "//ios/web/common:user_agent",
    "//ios/web/public/deprecated",
    "//ui/base",
  ]

  sources = [
    "browser_state.h",
    "web_client.h",
    "web_state.h",
    "web_state_delegate.h",
    "web_state_delegate_bridge.h",
    "web_state_observer_bridge.h",
    "web_state_user_data.h",
  ]

  configs += [ "//build/config/compiler:enable_arc" ]
}

# Un-separate this once the things in public/deprecated that need it are
# deprecated.
source_set("web_state_observer") {
  deps = [
    "//base",
    "//ios/web/public/navigation",
    "//url",
  ]
  sources = [ "web_state_observer.h" ]

  configs += [ "//build/config/compiler:enable_arc" ]
}
