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

  # Whether to compute UI colors with the color pipeline framework,
  # instead of NativeTheme/ThemeService.
  use_color_pipeline = false
}

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