# 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

  # 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_fuchsia && !is_castos && !is_cast_android

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

  # Multicast DNS.
  enable_mdns = is_win || is_linux || is_chromeos || is_fuchsia || is_apple

  # 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_mac || is_win

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

  # Platforms for which the builtin cert verifier can use the Chrome Root Store.
  # See https://crbug.com/1216547 for status.
  chrome_root_store_supported = is_win || is_mac
}
