# 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("//build/config/linux/gtk/gtk.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_contents = !is_android && !is_chromecast
  enable_background_mode = !is_android && !is_chromecast && !is_chromeos

  # 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

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

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

  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_webui was moved to ui/base/ui_features.gni

  # Enable donwloadable language PAK files to reduce the size of the main
  # Chrome APK. TODO(digit): Restrict this to official builds.
  enable_downloadable_strings = is_android
}

# 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_mode=$enable_background_mode",
  "enable_background_contents=$enable_background_contents",
  "enable_extensions=$enable_extensions",
  "enable_google_now=$enable_google_now",
  "enable_hangout_services_extension=$enable_hangout_services_extension",
  "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",
  "optimize_webui=$optimize_webui",
]
