# 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/dcheck_always_on.gni")
import("//build/config/features.gni")
import("//device/vr/buildflags/buildflags.gni")
import("//extensions/buildflags/buildflags.gni")
import("//media/media_options.gni")
import("//net/features.gni")
import("//ppapi/buildflags/buildflags.gni")
import("//printing/buildflags/buildflags.gni")
import("//ui/base/ui_features.gni")
import("//ui/webui/webui_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

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

  # Enables embedding of the simple_browser service, a lightweight browser
  # application which consumes the Content Service. Useful primarily for
  # developer testing.
  enable_simple_browser_service_in_process =
      use_aura && (is_debug || dcheck_always_on) && !is_chromecast
  enable_simple_browser_service_out_of_process =
      is_chromeos && (is_debug || dcheck_always_on)

  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
}

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

# 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_arcore=$enable_arcore",
  "enable_background_mode=$enable_background_mode",
  "enable_background_contents=$enable_background_contents",
  "enable_extensions=$enable_extensions",
  "enable_hangout_services_extension=$enable_hangout_services_extension",
  "enable_plugins=$enable_plugins",
  "enable_print_preview=$enable_print_preview",
  "enable_printing=$enable_basic_printing",
  "enable_service_discovery=$enable_service_discovery",
  "enable_vr=$enable_vr",
  "safe_browsing_mode=$safe_browsing_mode",
  "optimize_webui=$optimize_webui",
]
