910e62b5创建于 1月15日历史提交
# Copyright 2023 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Presubmit tests for android_webview/java/res/raw"""

import os
import sys


def CheckChangeOnUpload(input_api, output_api):
    results = []
    results.extend(_CheckHistogramsAllowlist(input_api, output_api))
    return results


def _CheckHistogramsAllowlist(input_api, output_api):
    """Checks that HistogramsAllowlist.java contains valid histograms."""
    src_path = os.path.join(input_api.PresubmitLocalPath(), '..', '..', '..',
                            '..')
    histograms_path = os.path.join(src_path, 'tools', 'metrics', 'histograms')
    sys.path.append(histograms_path)

    import print_histogram_names
    from histograms_allowlist_check import WellKnownAllowlistPath
    from histograms_allowlist_check import check_histograms_allowlist
    allowlist_path = os.path.join(
        src_path, WellKnownAllowlistPath.ANDROID_WEBVIEW.relative_path())

    histograms_allowlist_filter = lambda f: f.LocalPath().endswith(
        WellKnownAllowlistPath.ANDROID_WEBVIEW.filename())
    if not input_api.AffectedFiles(file_filter=histograms_allowlist_filter):
        return []

    xml_files = print_histogram_names.histogram_xml_files()
    result = check_histograms_allowlist(output_api, allowlist_path, xml_files)

    # TODO(crbug.com/391795980): Files should be scope managed, remove this
    # quick fixed once the issue is done.
    for f in xml_files:
        f.close()

    return result