# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

# Inspired by chromium.org:
# http://dev.chromium.org/developers/contributing-code/watchlists

{
  'WATCHLIST_DEFINITIONS': {
    'this_file': {
      'filepath': '^WATCHLISTS$',
    },
    'all_webrtc': {
      # NOTE: if you like this you might like webrtc-reviews@webrtc.org!
      'filepath': '^webrtc/.*',
    },
    'root_files': {
      # webrtc/build/ and non-recursive contents of ./ and webrtc/
      'filepath': '^[^/]*$|^webrtc/[^/]*$|^webrtc/build/.*',
    },
    'documented_interfaces': {
      'filepath': '^webrtc/[^/]*\.h$|'\
                  'webrtc/voice_engine/include/.*',
    },
    'build_files': {
      'filepath': '\.gyp$|\.gypi$|Android\.mk$',
    },
    'java_files': {
      'filepath': '\.java$|\.xml$',
    },
    'audio': {
      'filepath': 'webrtc/audio/.*',
    },
    'call': {
      'filepath': 'webrtc/call/.*',
    },
    'video': {
      'filepath': 'webrtc/video/.*',
    },
    'voice_engine': {
      'filepath': 'webrtc/voice_engine/.*',
    },
    'common_audio': {
      'filepath': 'webrtc/common_audio/.*',
    },
    'common_video': {
      'filepath': 'webrtc/common_video/.*',
    },
    'video_capture': {
      'filepath': 'webrtc/modules/video_capture/.*',
    },
    'video_render': {
      'filepath': 'webrtc/modules/video_render/.*',
    },
    'audio_device': {
      'filepath': 'webrtc/modules/audio_device/.*',
    },
    'audio_coding': {
      'filepath': 'webrtc/modules/audio_coding/.*',
    },
    'neteq': {
      'filepath': 'webrtc/modules/audio_coding/neteq/.*',
    },
    'audio_processing': {
      'filepath': 'webrtc/modules/audio_processing/.*',
    },
    'video_coding': {
      'filepath': 'webrtc/modules/video_coding/.*',
    },
    'video_processing': {
      'filepath': 'webrtc/modules/video_processing/.*',
    },
    'bitrate_controller': {
      'filepath': 'webrtc/modules/bitrate_controller/.*'
    },
    'remote_bitrate_estimator': {
      'filepath': 'webrtc/modules/remote_bitrate_estimator/.*'
    },
    'pacing': {
      'filepath': 'webrtc/modules/pacing/.*'
    },
    'rtp_rtcp': {
      'filepath': 'webrtc/modules/rtp_rtcp/.*'
    },
    'system_wrappers': {
      'filepath': 'webrtc/system_wrappers/.*',
    },
  },

  'WATCHLISTS': {
    'this_file': [''],
    'all_webrtc': ['tterriberry@mozilla.com'],
    'root_files': ['niklas.enbom@webrtc.org',
                   'peah@webrtc.org',
                   'qiang.lu@intel.com',
                   'yujie.mao@webrtc.org'],
    'documented_interfaces': ['interface-changes@webrtc.org',
                              'rwolff@gocast.it'],
    'common_audio': ['aluebs@webrtc.org',
                     'andrew@webrtc.org',
                     'audio-team@agora.io',
                     'bjornv@webrtc.org',
                     'minyue@webrtc.org',
                     'peah@webrtc.org'],
    'audio': ['solenberg@webrtc.org',
              'tina.legrand@webrtc.org'],
    'call': ['mflodman@webrtc.org',
             'pbos@webrtc.org',
             'solenberg@webrtc.org',
             'stefan@webrtc.org'],
    'video': ['andresp@webrtc.org',
              'mflodman@webrtc.org',
              'pbos@webrtc.org',
              'perkj@webrtc.org',
              'solenberg@webrtc.org',
              'stefan@webrtc.org',
              'video-team@agora.io',
              'yujie.mao@webrtc.org',
              'zhengzhonghou@agora.io'],
    'voice_engine': ['andrew@webrtc.org',
                     'audio-team@agora.io',
                     'henrika@webrtc.org',
                     'henrik.lundin@webrtc.org',
                     'minyue@webrtc.org',
                     'peah@webrtc.org',
                     'solenberg@webrtc.org'],
    'video_capture': ['mflodman@webrtc.org',
                      'perkj@webrtc.org',
                      'sdk-team@agora.io',
                      'zhengzhonghou@agora.io'],
    'video_render': ['mflodman@webrtc.org',
                     'perkj@webrtc.org',
                     'sdk-team@agora.io',
                     'zhengzhonghou@agora.io'],
    'audio_device': ['audio-team@agora.io',
                     'henrika@webrtc.org',
                     'peah@webrtc.org',
                     'sdk-team@agora.io'],
    'audio_coding': ['audio-team@agora.io',
                     'henrik.lundin@webrtc.org',
                     'kwiberg@webrtc.org',
                     'minyue@webrtc.org',
                     'peah@webrtc.org',
                     'tina.legrand@webrtc.org'],
    'neteq': ['audio-team@agora.io',
              'henrik.lundin@webrtc.org',
              'minyue@webrtc.org'],
    'audio_processing': ['aluebs@webrtc.org',
                         'andrew@webrtc.org',
                         'audio-team@agora.io',
                         'bjornv@webrtc.org',
                         'henrik.lundin@webrtc.org',
                         'kwiberg@webrtc.org',
                         'minyue@webrtc.org',
                         'peah@webrtc.org',
                         'solenberg@webrtc.org'],
    'video_coding': ['mflodman@webrtc.org',
                     'stefan@webrtc.org',
                     'video-team@agora.io',
                     'zhengzhonghou@agora.io'],
    'video_processing': ['stefan@webrtc.org',
                         'video-team@agora.io',
                         'zhengzhonghou@agora.io'],
    'bitrate_controller': ['mflodman@webrtc.org',
                           'stefan@webrtc.org',
                           'zhuangzesen@agora.io'],
    'remote_bitrate_estimator': ['mflodman@webrtc.org',
                                 'stefan@webrtc.org',
                                 'zhuangzesen@agora.io'],
    'pacing': ['mflodman@webrtc.org',
               'stefan@webrtc.org',
               'zhuangzesen@agora.io'],
    'rtp_rtcp': ['mflodman@webrtc.org',
                 'stefan@webrtc.org',
                 'zhuangzesen@agora.io'],
    'system_wrappers': ['fengyue@agora.io',
                        'henrika@webrtc.org',
                        'mflodman@webrtc.org',
                        'peah@webrtc.org',
                        'zhengzhonghou@agora.io'],
  },
}
