• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2013 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5# TODO(joaodasilva): remove this file. http://crbug.com/327345
6
7import itertools
8
9def _CheckPolicyProtobufs(input_api, output_api):
10  # List of pairs (A, B) where A should equal B.
11  file_pairs = [
12    ( 'chrome/browser/policy/proto/chromeos/chrome_device_policy.proto',
13      'chrome/browser/chromeos/policy/proto/chrome_device_policy.proto' ),
14    ( 'chrome/browser/policy/proto/chromeos/install_attributes.proto',
15      'chrome/browser/chromeos/policy/proto/install_attributes.proto' ),
16    ( 'chrome/browser/policy/proto/cloud/chrome_extension_policy.proto',
17      'components/policy/proto/chrome_extension_policy.proto' ),
18    ( 'chrome/browser/policy/proto/cloud/device_management_backend.proto',
19      'components/policy/proto/device_management_backend.proto' ),
20    ( 'chrome/browser/policy/proto/cloud/device_management_local.proto',
21      'components/policy/proto/device_management_local.proto' ),
22    ( 'chrome/browser/policy/proto/PRESUBMIT.py',
23      'components/policy/proto/PRESUBMIT.py' ),
24    ( 'chrome/browser/chromeos/policy/proto/PRESUBMIT.py',
25      'components/policy/proto/PRESUBMIT.py' ),
26  ]
27
28  root = input_api.change.RepositoryRoot()
29  results = []
30
31  for file_a, file_b in file_pairs:
32    path_a = input_api.os_path.join(root, *file_a.split('/'))
33    path_b = input_api.os_path.join(root, *file_b.split('/'))
34    with open(path_a, 'r') as f_a:
35      content_a = f_a.readlines()[3:]
36    with open(path_b, 'r') as f_b:
37      content_b = f_b.readlines()[3:]
38    if content_a != content_b:
39      # If you get this error then check |file_pairs| and make sure that the
40      # contents of the files in each pair match.
41      results.append(output_api.PresubmitError(
42          '%s must equal %s. This is temporary until http://crbug.com/327345 '
43          'is fixed.' % (file_a, file_b)))
44
45  # If new files are added then |file_pairs| must be updated.
46  existing = frozenset(itertools.chain(*file_pairs))
47  for f in input_api.AffectedFiles():
48    if f.LocalPath() not in existing:
49      # If you get this error then add an entry for the new files to
50      # |file_pairs|.
51      results.append(output_api.PresubmitError(
52          'Please add an entry for %s to %s/PRESUBMIT.py' %
53          (f.LocalPath(), input_api.PresubmitLocalPath())))
54
55  return results
56
57
58def _CommonChecks(input_api, output_api):
59  return _CheckPolicyProtobufs(input_api, output_api)
60
61
62def CheckChangeOnUpload(input_api, output_api):
63  return _CommonChecks(input_api, output_api)
64
65
66def CheckChangeOnCommit(input_api, output_api):
67  return _CommonChecks(input_api, output_api)
68