summaryrefslogtreecommitdiff
path: root/chromium/content/browser/conversions/PRESUBMIT.py
blob: 768e7f0e20d456528dd1b45a62558a3c03cf69cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Copyright 2020 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.

"""Presubmit script for the content/browser/conversions directory.

See https://www.chromium.org/developers/how-tos/depottools/presubmit-scripts
for more details about the presubmit API built into depot_tools.
"""

USE_PYTHON3 = True

def CheckConversionStorageSchemaModification(input_api, output_api):
  """ Checks the kCurrentVersionNumber is modified when necessary.

  Whenever any of the following files is changed:
    - conversion_storage_sql.cc
    - conversion_storage_sql_migrations.cc
    - rate_limit_table.cc
  and kCurrentVersionNumber stays intact, this check returns a
  presubmit warning to make sure the value is updated if necessary.
  """

  database_files_changed = False
  database_version_changed = False

  for affected_file in input_api.AffectedFiles():
    basename = input_api.basename(affected_file.LocalPath())

    if (basename == 'conversion_storage_sql_migrations.cc' or
        basename == 'conversion_storage_sql.cc' or
        basename == 'rate_limit_table.cc'):
      database_files_changed = True

    if basename == 'conversion_storage_sql.cc':
      for (_, line) in affected_file.ChangedContents():
        if 'const int kCurrentVersionNumber' in line:
          database_version_changed = True
          break

  out = []
  if database_files_changed and not database_version_changed:
    out.append(output_api.PresubmitPromptWarning(
        'Please make sure that the conversions database is properly versioned '
        'and migrated when making changes to schema or table contents. '
        'kCurrentVersionNumber in conversion_storage_sql.cc '
        'must be updated when doing a migration.'))
  return out

def CheckChangeOnUpload(input_api, output_api):
  return CheckConversionStorageSchemaModification(input_api, output_api)