# 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",
  ]

  if (is_mac) {
    sources += [ "show_modal_dialog_cocoa.cc" ]
    if (mac_views_browser) {
      sources += [ "show_modal_dialog_views.cc" ]
    }
  } else {
    sources += [ "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",
  ]

  if (is_mac) {
    sources += [ "test_create_native_web_modal_manager_cocoa.cc" ]
  }

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