# 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")

component("native_theme") {
  sources = [
    "common_theme.cc",
    "common_theme.h",
    "fallback_theme.cc",
    "fallback_theme.h",
    "native_theme.cc",
    "native_theme.h",
    "native_theme_android.cc",
    "native_theme_android.h",
    "native_theme_base.cc",
    "native_theme_base.h",
    "native_theme_mac.h",
    "native_theme_mac.mm",
    "native_theme_observer.cc",
    "native_theme_observer.h",
    "native_theme_switches.cc",
    "native_theme_switches.h",
    "native_theme_win.cc",
    "native_theme_win.h",
  ]

  if (use_aura) {
    sources += [
      "native_theme_aura.cc",
      "native_theme_aura.h",
    ]

    if (is_win) {
      sources += [
        "native_theme_aurawin.cc",
        "native_theme_aurawin.h",
      ]
    }
  }

  defines = [
    "NATIVE_THEME_IMPLEMENTATION",
  ]

  deps = [
    "//base",
    "//base/third_party/dynamic_annotations",
    "//skia",
    "//ui/base",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/resources",
  ]
}
