# 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() {
  # 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).
  # 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

  # Platforms where both the builtin cert verifier and a platform verifier are
  # supported and may be switched between using the CertVerifierBuiltin feature
  # flag. This does not include platforms where the builtin cert verifier is
  # the only verifier supported.
  builtin_cert_verifier_feature_supported =
      is_desktop_linux || is_mac || is_chromeos
}
