# 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/features.gni")
import("//build/config/ui.gni")

assert(!is_android && !is_ios)

static_library("apps") {
  sources = []

  if (enable_extensions) {
    sources += [
      "app_lifetime_monitor.cc",
      "app_lifetime_monitor.h",
      "app_lifetime_monitor_factory.cc",
      "app_lifetime_monitor_factory.h",
      "app_load_service.cc",
      "app_load_service.h",
      "app_load_service_factory.cc",
      "app_load_service_factory.h",
      "app_restore_service.cc",
      "app_restore_service.h",
      "app_restore_service_factory.cc",
      "app_restore_service_factory.h",
      "browser_context_keyed_service_factories.cc",
      "browser_context_keyed_service_factories.h",
      "custom_launcher_page_contents.cc",
      "custom_launcher_page_contents.h",
      "launcher.cc",
      "launcher.h",
      "metrics_names.h",
      "saved_files_service.cc",
      "saved_files_service.h",
      "saved_files_service_factory.cc",
      "saved_files_service_factory.h",
      "switches.cc",
      "switches.h",
    ]

    configs += [ "//build/config/compiler:wexit_time_destructors" ]

    deps = [
      "//chrome/app/theme:theme_resources",
      "//chrome/browser/extensions",
      "//chrome/common/extensions/api",
      "//components/web_modal",
      "//skia",
    ]

    # TODO: This top level directory should not have an include cycle.
    allow_circular_includes_from = [ "//chrome/browser/extensions" ]
  }

  if (toolkit_views) {
    sources += [
      "ui/views/app_window_frame_view.cc",
      "ui/views/app_window_frame_view.h",
    ]
    deps += [
      "//ui/strings",
      "//ui/views",
    ]
    if (enable_extensions) {
      deps += [ "//extensions/browser" ]
    }
  }

  # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
}
