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

declare_args() {
  # If true, prune things down as needed for proto-quic build.
  is_proto_quic = false

  # Disables support for file URLs.  File URL support requires use of icu.
  disable_file_support = false

  # WebSockets and socket stream code are not used on iOS and are optional in
  # cronet.
  enable_websockets = !is_ios
  disable_ftp_support = is_ios || is_chromecast

  # Enable Kerberos authentication. It is disabled by default on iOS, Fuchsia
  # and Chromecast, at least for now. This feature needs configuration
  # (krb5.conf and so on). On Chrome OS it is only supported on Active
  # Directory managed devices.
  # TODO(fuchsia): Enable kerberos on Fuchsia when it's implemented there.
  use_kerberos = !is_ios && !is_chromecast && !is_fuchsia

  # Do not disable brotli filter by default.
  disable_brotli_filter = false

  # Multicast DNS.
  enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios

  # Reporting not used on iOS.
  enable_reporting = !is_ios

  # Includes the transport security state preload list. This list includes
  # mechanisms (e.g. HSTS, HPKP) to enforce trusted connections to a significant
  # set of hardcoded domains. While this list has a several hundred KB of binary
  # size footprint, this flag should not be disabled unless the embedder is
  # willing to take the responsibility to make sure that all important
  # connections use HTTPS.
  include_transport_security_state_preload_list = true

  # Platforms where the cert verifier comparison trial is supported.
  # See https://crbug.com/649026.
  trial_comparison_cert_verifier_supported = is_desktop_linux || is_mac
}
