# 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

  # 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 = []
}

# 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"
}
