# Copyright 2017 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.

def PostUploadHook(cl, change, output_api):
  """git cl upload will call this hook after the issue is created/modified.

  This will add extra trybot coverage for non-default Android architectures
  that have a history of breaking with Seccomp changes.
  """
  def affects_seccomp(f):
    seccomp_paths = [
        'bpf_dsl/',
        'seccomp-bpf/',
        'seccomp-bpf-helpers/',
        'system_headers/',
        'tests/'
        ]
    # If the file path contains any of the above fragments, it affects
    # the Seccomp implementation.
    affected_any = map(lambda sp: sp in f.LocalPath(), seccomp_paths)
    return reduce(lambda a, b: a or b, affected_any)

  if not change.AffectedFiles(file_filter=affects_seccomp):
    return []

  return output_api.EnsureCQIncludeTrybotsAreAdded(
      cl,
      [
        'master.tryserver.chromium.android:android_arm64_dbg_recipe',
        'master.tryserver.chromium.android:android_compile_mips_dbg',
        'master.tryserver.chromium.android:android_compile_x64_dbg',
        'master.tryserver.chromium.android:android_compile_x86_dbg',
      ],
      'Automatically added Android multi-arch compile bots to run on CQ.')
