# Copyright 2018 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/chrome_build.gni")

if (is_win && is_chrome_branded) {
  static_library("nux_google_apps_feature") {
    sources = [
      "constants.cc",
      "constants.h",
      "webui.cc",
      "webui.h",
    ]

    public_deps = [
      "//base",
      "//net",
      "//url",
    ]

    deps = [
      "//components/pref_registry",
      "//components/prefs",
      "//components/resources",
      "//components/strings",
      "//components/variations",
      "//content/public/browser",
      "//ui/base",
    ]
  }
}
