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

component("web_dialogs") {
  sources = [
    "web_dialog_delegate.cc",
    "web_dialog_delegate.h",
    "web_dialog_ui.cc",
    "web_dialog_ui.h",
    "web_dialog_web_contents_delegate.cc",
    "web_dialog_web_contents_delegate.h",
    "web_dialogs_export.h",
  ]

  defines = [ "WEB_DIALOGS_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//base/third_party/dynamic_annotations",
    "//content/public/browser",
    "//content/public/common",
    "//skia",
    "//ui/base",
    "//url",
  ]
}

static_library("test_support") {
  sources = [
    "test/test_web_contents_handler.cc",
    "test/test_web_contents_handler.h",
    "test/test_web_dialog_delegate.cc",
    "test/test_web_dialog_delegate.h",
  ]

  public_deps = [
    ":web_dialogs",
  ]
  deps = [
    "//base",
    "//content/public/browser",
    "//skia",
    "//url",
  ]
}
