# 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_base.cc",
    "native_theme_base.h",
    "native_theme_observer.cc",
    "native_theme_observer.h",
    "native_theme_switches.cc",
    "native_theme_switches.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",
      "native_theme_win.cc",
      "native_theme_win.h",
    ]
  }

  defines = [ "NATIVE_THEME_IMPLEMENTATION" ]

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