# 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/video_engine/include/.*|'\
                  'webrtc/voice_engine/include/.*',
    },
    'build_files': {
      'filepath': '\.gyp$|\.gypi$|Android\.mk$',
    },
    'java_files': {
      'filepath': '\.java$|\.xml$',
    },
    'video_engine': {
      'filepath': 'webrtc/video_engine/.*|'\
                  '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_codecs': {
      'filepath': 'webrtc/modules/video_coding/codecs/.*',
    },
    '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': ['giles@mozilla.com',
                   'tterriberry@mozilla.com'],
    'root_files': ['andrew@webrtc.org',
                   'niklas.enbom@webrtc.org',
                   'yujie.mao@webrtc.org',
                   'qiang.lu@intel.com'],
    'documented_interfaces': ['interface-changes@webrtc.org',
                              'rwolff@gocast.it'],
    'common_audio': ['bjornv@webrtc.org',
                     'andrew@webrtc.org'],
    'video_engine': ['andresp@webrtc.org',
                     'mflodman@webrtc.org',
                     'perkj@webrtc.org',
                     'stefan@webrtc.org',
                     'yujie.mao@webrtc.org'],
    'voice_engine': ['henrika@webrtc.org'],
    'video_capture': ['mflodman@webrtc.org',
                      'perkj@webrtc.org'],
    'video_render': ['mflodman@webrtc.org',
                     'perkj@webrtc.org'],
    'audio_device': ['henrika@webrtc.org'],
    'audio_coding': ['tina.legrand@webrtc.org',
                     'henrik.lundin@webrtc.org',
                     'kwiberg@webrtc.org'],
    'neteq': ['henrik.lundin@webrtc.org'],
    'audio_processing': ['andrew@webrtc.org',
                         'bjornv@webrtc.org',
                         'kwiberg@webrtc.org'],
    'video_codecs': ['henrik.lundin@webrtc.org'],
    'video_coding': ['stefan@webrtc.org',
                     'mflodman@webrtc.org'],
    'video_processing': ['stefan@webrtc.org'],
    'bitrate_controller': ['stefan@webrtc.org',
                           'mflodman@webrtc.org'],
    'remote_bitrate_estimator': ['stefan@webrtc.org',
                                 'mflodman@webrtc.org'],
    'pacing': ['stefan@webrtc.org',
               'mflodman@webrtc.org'],
    'rtp_rtcp': ['mflodman@webrtc.org',
                 'stefan@webrtc.org'],
    'system_wrappers': ['mflodman@webrtc.org',
                        'henrika@webrtc.org',
                        'andrew@webrtc.org'],
  },
}
