# Copyright 2014 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Chromium presubmit script for src/extensions/browser. See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for more details on the presubmit API built into depot_tools. """ import sys PRESUBMIT_VERSION = '2.0.0' def _CreateHistogramValueChecker(input_api, output_api, path): original_sys_path = sys.path try: sys.path.append( input_api.os_path.join( input_api.PresubmitLocalPath(), '..', '..', 'tools', 'strict_enum_value_checker', ) ) from strict_enum_value_checker import StrictEnumValueChecker finally: sys.path = original_sys_path return StrictEnumValueChecker( input_api, output_api, start_marker='enum HistogramValue {', end_marker=' // Last entry:', path=path, ) def CheckHistogramValuesUpload(input_api, output_api): results = [] histogram_paths = ( 'extensions/browser/extension_event_histogram_value.h', 'extensions/browser/extension_function_histogram_value.h', ) for path in histogram_paths: results += _CreateHistogramValueChecker(input_api, output_api, path).Run() return results def CheckHistogramsUpload(input_api, output_api): try: # Setup sys.path so that we can call histograms code. import sys original_sys_path = sys.path sys.path = sys.path + [ input_api.os_path.join( input_api.change.RepositoryRoot(), 'tools', 'metrics', 'histograms' ) ] import presubmit_bad_message_reasons return presubmit_bad_message_reasons.PrecheckBadMessage( input_api, output_api, 'BadMessageReasonExtensions' ) except: return [output_api.PresubmitError('Could not verify histogram!')] finally: sys.path = original_sys_path