# Copyright 2018 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. """Content public presubmit script See https://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for more details about the presubmit API built into gcl. """ def _CheckConstInterfaces(input_api, output_api): # Matches 'virtual...const = 0;', 'virtual...const;' or 'virtual...const {}' pattern = input_api.re.compile(r'virtual[^;]*const\s*(=\s*0)?\s*({}|;)', input_api.re.MULTILINE) files = [] for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile): if not f.LocalPath().endswith('.h'): continue contents = input_api.ReadFile(f) if pattern.search(contents): files.append(f) if len(files): return [output_api.PresubmitError( 'Do not add const to content/public ' 'interfaces. See ' 'https://www.chromium.org/developers/content-module/content-api', files) ] return [] def CheckChangeOnUpload(input_api, output_api): results = [] results.extend(_CheckConstInterfaces(input_api, output_api)) return results def CheckChangeOnCommit(input_api, output_api): results = [] results.extend(_CheckConstInterfaces(input_api, output_api)) return results