|  | # Copyright 2017 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. | 
|  |  | 
|  | """Chromium presubmit script to check that BadMessage enums in histograms.xml | 
|  | match the corresponding bad_message.h file. | 
|  | """ | 
|  |  | 
|  | def CheckChangeOnCommit(input_api, output_api): | 
|  | return _CommonChecks(input_api, output_api) | 
|  |  | 
|  | def CheckChangeOnUpload(input_api, output_api): | 
|  | return _CommonChecks(input_api, output_api) | 
|  |  | 
|  | def _RunHistogramChecks(input_api, output_api, histogram_name): | 
|  | 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, histogram_name) | 
|  | except Exception as e: | 
|  | return [output_api.PresubmitError("Error verifying histogram (%s)." | 
|  | % str(e))] | 
|  | finally: | 
|  | sys.path = original_sys_path | 
|  |  | 
|  | def _CommonChecks(input_api, output_api): | 
|  | return _RunHistogramChecks(input_api, output_api, "BadMessageReasonContent") |