# Copyright 2014 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/ui.gni")
import("//ui/base/ui_features.gni")

static_library("constrained_window") {
  sources = [
    "constrained_window_views.cc",
    "constrained_window_views.h",
    "constrained_window_views_client.h",
    "native_web_contents_modal_dialog_manager_views.cc",
    "native_web_contents_modal_dialog_manager_views.h",
    "native_web_contents_modal_dialog_manager_views_mac.h",
    "native_web_contents_modal_dialog_manager_views_mac.mm",
    "show_modal_dialog_views.cc",
  ]

  deps = [
    "//components/guest_view/browser",
    "//components/web_modal",
    "//content/public/browser",
    "//ui/display",
    "//ui/views",
  ]
  public_deps = [
    # Skia headers are exposed in the public API.
    "//skia",
  ]

  if (use_aura) {
    deps += [
      "//ui/aura",
      "//ui/compositor",
      "//ui/wm",
    ]
  }
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "constrained_window_views_unittest.cc",
  ]

  deps = [
    ":constrained_window",
    "//components/web_modal:test_support",
    "//ui/views",
    "//ui/views:test_support",
  ]
}
