Presubmit script for preventing changes to protected files and add the full list of those files.

BUG=2090
R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/1855004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4419 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/PRESUBMIT.py b/talk/PRESUBMIT.py
index 447b46d..fc29f95 100644
--- a/talk/PRESUBMIT.py
+++ b/talk/PRESUBMIT.py
@@ -23,6 +23,37 @@
 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+# List of files that should not be committed to
+DO_NOT_SUBMIT_FILES = [
+    "talk/app/webrtc/mediaconstraintsinterface.h",
+    "talk/app/webrtc/webrtcsdp_unittest.cc",
+    "talk/base/linux.cc",
+    "talk/base/linux.h",
+    "talk/base/linux_unittest.cc",
+    "talk/main.scons",
+    "talk/media/base/hybridvideoengine.cc",
+    "talk/media/base/mediaengine.cc",
+    "talk/media/base/mutedvideocapturer.cc",
+    "talk/media/base/streamparams.h",
+    "talk/media/base/videocapturer.cc",
+    "talk/media/base/videocapturer.h",
+    "talk/media/base/videocapturer_unittest.cc",
+    "talk/media/base/videoengine_unittest.h",
+    "talk/media/devices/devicemanager.cc",
+    "talk/media/webrtc/fakewebrtcvideoengine.h",
+    "talk/media/webrtc/fakewebrtcvoiceengine.h",
+    "talk/media/webrtc/webrtcexport.h",
+    "talk/media/webrtc/webrtcmediaengine.h",
+    "talk/media/webrtc/webrtcvideoengine.cc",
+    "talk/media/webrtc/webrtcvideoengine.h",
+    "talk/media/webrtc/webrtcvideoengine_unittest.cc",
+    "talk/media/webrtc/webrtcvoiceengine.cc",
+    "talk/media/webrtc/webrtcvoiceengine.h",
+    "talk/media/webrtc/webrtcvoiceengine_unittest.cc",
+    "talk/p2p/base/session.cc",
+    "talk/session/media/channel.cc",
+    "talk/session/media/mediasession_unittest.cc"]
+
 def _LicenseHeader(input_api):
   """Returns the license header regexp."""
   # Accept any year number from 2008 to the current year
@@ -75,11 +106,26 @@
   }
   return license_header
 
+def _ProtectedFiles(input_api, output_api):
+  results = []
+  changed_files = []
+  for f in input_api.AffectedFiles():
+    changed_files.append(f.LocalPath())
+  bad_files = list(set(DO_NOT_SUBMIT_FILES) & set(changed_files))
+  if bad_files:
+    error_type = output_api.PresubmitError
+    results.append(error_type(
+        'The following affected files are only allowed to be updated when '
+        'importing libjingle',
+        bad_files))
+  return results
+
 def _CommonChecks(input_api, output_api):
   """Checks common to both upload and commit."""
   results = []
   results.extend(input_api.canned_checks.CheckLicense(
       input_api, output_api, _LicenseHeader(input_api)))
+  results.extend(_ProtectedFiles(input_api, output_api))
   return results
 
 def CheckChangeOnUpload(input_api, output_api):