# Copyright 2015 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")
import("//build/config/chromecast_build.gni")
import("//build/config/compiler/compiler.gni")
import("//build/config/features.gni")
import("//device/vr/features/features.gni")
import("//extensions/features/features.gni")
import("//media/media_options.gni")
import("//net/features.gni")
import("//ppapi/features/features.gni")
import("//printing/features/features.gni")
import("//ui/base/ui_features.gni")

assert(!is_ios, "Chromium/iOS shouldn't use anything in //chrome")

# Please keep features in alphabetical order.
declare_args() {
  enable_app_list = is_chromeos

  # Enables support for background apps.
  enable_background = !is_android && !is_chromecast

  # Enable the printing system dialog for platforms that support printing
  # and have a system dialog.
  enable_basic_print_dialog = enable_basic_printing && !is_chromeos

  enable_captive_portal_detection = !is_android && !is_chromecast

  # Google Now is disabled to prepare for its removal.
  # http://crbug.com/539674
  enable_google_now = false

  # Hangout services is an extension that adds extra features to Hangouts.
  # It is enableable separately to facilitate testing.
  enable_hangout_services_extension = is_chrome_branded

  # 'Ok Google' hotwording is disabled by default. Set to true to enable. (This
  # will download a closed-source NaCl module at startup.) Chrome-branded
  # ChromeOS builds have this enabled by default.
  enable_hotwording = is_chrome_branded && is_chromeos

  # Enables usage of the system-provided notification center.
  enable_native_notifications =
      is_android || is_mac || (is_desktop_linux && use_dbus)

  enable_one_click_signin =
      is_win || is_mac || (is_linux && !is_chromeos && !is_chromecast)

  # Set to true to bundle all the mash related mojo services into chrome.
  # Specify --mash to chrome to have chrome start the mash environment.
  enable_package_mash_services = is_chromeos

  enable_service_discovery = enable_mdns || is_mac

  # Enables use of the session service, which is enabled by default.
  # Android stores them separately on the Java side.
  enable_session_service = !is_android && !is_chromecast

  enable_supervised_users = !is_chromecast

  # Indicates if Wayland display server support is enabled.
  enable_wayland_server = is_chromeos

  # Indicates if the build is using PGO.
  pgo_build = chrome_pgo_phase > 0

  # Optimize parts of Chrome's UI written with web technologies (HTML/CSS/JS)
  # for runtime performance purposes. This does more work at compile time for
  # speed benefits at runtime (so we skip in debug builds). TODO(dbeam): rename
  # this flag "optimize_web_uis" because we run more than vulcanize these days.
  use_vulcanize = !is_debug
}

# Use brlapi from brltty for braille display support.
use_brlapi = is_chromeos

_enable_printing = enable_basic_printing || enable_print_preview

# Every grit target in //chrome should apply these defines so that the
# proper build flags can be set.
chrome_grit_defines = [
  "enable_app_list=$enable_app_list",
  "enable_background=$enable_background",
  "enable_extensions=$enable_extensions",
  "enable_google_now=$enable_google_now",
  "enable_hangout_services_extension=$enable_hangout_services_extension",
  "enable_hotwording=$enable_hotwording",
  "enable_plugins=$enable_plugins",
  "enable_print_preview=$enable_print_preview",
  "enable_printing=$_enable_printing",
  "enable_service_discovery=$enable_service_discovery",
  "enable_webrtc=$enable_webrtc",
  "enable_vr=$enable_vr",
  "mac_views_browser=$mac_views_browser",
  "safe_browsing_mode=$safe_browsing_mode",
  "use_vulcanize=$use_vulcanize",
]
