# 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/chrome_build.gni")
import("//build/config/ios/ios_sdk.gni")
import("//build/config/mac/symbols.gni")

declare_args() {
  # Enable widget extensions.
  ios_enable_content_widget_extension = true
  ios_enable_search_widget_extension = true

  # Enable share extension.
  ios_enable_share_extension = true

  # Enable credential provider extension.
  ios_enable_credential_provider_extension = false

  # Label of the target providing implementation for AccountVerificationProvider.
  # Overridden when using the Google-internal repository to build Chrome on iOS.
  ios_account_verification_provider_target = "//ios/chrome/common/credential_provider:account_verification_provider_implementation"

  # Enable multi-window configuration in Info.plist
  ios_enable_multi_window = false

  # Value of the encryption export compliance code. See "Cryptography and
  # U.S. Export Compliance" in "Submitting the App to App Review" in the
  # Apple developer documentation (https://goo.gl/yv1xEF).
  ios_encryption_export_compliance_code = ""

  # List of plist templates to merge when generating chrome Info.plist.
  ios_chrome_info_plist_additions = []

  # List of plist templates to merge when generating chrome entitlements.
  ios_chrome_entitlements_additions = []

  # List of plist templates to merge when generating EarlGrey tests
  # entitlements.
  ios_egtests_entitlements_additions = []

  # Overridable list of dependencies that are forbidden for
  # //ios/chrome/app:chrome target.
  ios_chrome_extra_assert_no_deps = []

  # List of plist templates to merge when generating chrome cpe entitlements.
  ios_chrome_cpe_entitlements_additions = []
}

# Configure whether breakpad support is enabled.
breakpad_enabled = is_official_build && is_chrome_branded

if (breakpad_enabled) {
  breakpad_enabled_as_int = 1
  is_official_release = enable_dsyms && !use_ios_simulator &&
                        current_toolchain == default_toolchain
} else {
  breakpad_enabled_as_int = 0
  is_official_release = false
}

chromium_bundle_id = "chrome.ios.herebedragons"
chromium_handoff_id = "$ios_app_bundle_id_prefix.chrome.handoff"

if (is_chrome_branded) {
  chromium_short_name = "Chrome"
  url_channel_scheme = "googlechrome-dev"
  url_secure_scheme = "googlechromes"
  url_ssoauth_scheme = "$ios_app_bundle_id_prefix.sso.chrome.stable"
  url_unsecure_scheme = "googlechrome"
  url_x_callback_scheme = "googlechrome-x-callback"
} else {
  chromium_short_name = "Chromium"
  url_channel_scheme = "chromium-dev"
  url_secure_scheme = "chromiums"
  url_ssoauth_scheme = "$ios_app_bundle_id_prefix.sso.chromium"
  url_unsecure_scheme = "chromium"
  url_x_callback_scheme = "chromium-x-callback"
}
