# 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/ui.gni")

declare_args() {
  # Optional system library.
  use_xkbcommon = use_ozone && (is_linux || is_chromeos) && !is_chromecast

  # Whether the platform provides a native accessibility toolkit.
  has_native_accessibility = use_atk || is_win || is_mac

  # Whether the message center should be included for displaying notifications.
  enable_message_center = is_win || is_mac || is_linux || is_chromeos || is_fuchsia
}

enable_hidpi = is_mac || is_win || is_linux || is_chromeos || is_ios
