# 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.

# This file contains UI-related build flags. It should theoretically be in the
# src/ui directory and only things that depend on the ui module should get the
# definitions.
#
# However, today we have many "bad" dependencies on some of these flags from,
# e.g. base, so they need to be global.
#
# See also build/config/ui.gni

declare_args() {
  # Multicast DNS.
  enable_mdns = is_win || is_linux

  enable_plugins = !is_android || !is_ios
}

# Additional dependent variables -----------------------------------------------

# Set the version of CLD.
#   0: Don't specify the version. This option is for the Finch testing.
#   1: Use only CLD1.
#   2: Use only CLD2.
if (is_android || is_ios) {
  cld_version = 1
} else {
  cld_version = 2
}

# libudev usage. This currently only affects the content layer.
use_udev = is_linux

# Enable the spell checker.
enable_spellcheck = !is_android

enable_pepper_cdms = enable_plugins && (is_linux || is_mac || is_win)

# Enable printing support and UI. This variable is used to configure which
# parts of printing will be built. 0 disables printing completely, 1 enables it
# fully, and 2 enables only the codepath to generate a Metafile (e.g.  usually
# a PDF or EMF) and disables print preview, cloud print, UI, etc.
if (is_android) {
  enable_printing = 2
} else {
  enable_printing = 1
}

# The seccomp-bpf sandbox is only supported on three architectures
# currently.
# Do not disable seccomp_bpf anywhere without talking to
# security@chromium.org!
use_seccomp_bpf = (is_linux || is_android) &&
  (cpu_arch == "x86" || cpu_arch == "x64" || cpu_arch == "arm")

enable_webrtc = !is_ios

# Enable notifications everywhere except Android.
# Android is http://crbug.com/115320
enable_notifications = !is_android

# TODO(brettw) this should be moved to net and only dependents get this define.
disable_ftp_support = is_ios

# Speech input is compiled in by default. Set to 0 to disable.
# TODO(tommyw): Speech Input doesn't exist anymore. Clarify the scope
# of this flag (and probably rename it).
enable_speech_input = true

use_dbus = is_linux

enable_extensions = (!is_android && !is_ios)
