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

static_library("apps") {
  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:api",
    "//components/web_modal",
    "//skia",
  ]

  if (is_chromeos) {
    #deps += [ "browser_chromeos" ]  TODO(GYP)
  }

  if (!enable_extensions) {
    # When extensions are disabled, only the sizer file below is included.
    deps -= [
      "//chrome/browser/extensions",
      "//chrome/common/extensions/api:api",
    ]
    sources = []
  }

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

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