# 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 ChromeOS, iOS,
  # Chromecast, at least for now. This feature needs configuration (krb5.conf
  # and so on).
  use_kerberos = !is_chromeos && !is_ios && !is_chromecast

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

  # Multicast DNS.
  enable_mdns = is_win || is_linux
}
