
Three directories had a PRESUBMIT designed to catch "std::unique_ptr<T>()" and require nullptr instead. In two directories, the match was overbroad, catching things like "std::vector<std::unique_ptr<T>>()". In ui/, ricea attempted a fix (in https://codereview.chromium.org/2311783002 ) that made the regex too conservative, failing to catch std::unique_ptr<Foo<T>>(). Instead, fail to match std::unique_ptr<T>() if it's immediately preceded by '<'. This moves the check to the global PRESUBMIT to avoid duplication. BUG=none TEST=none TBR=sky Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel Change-Id: Ia8888408683b2de3bbe60e0e43409d72475ea169 Reviewed-on: https://chromium-review.googlesource.com/933547 Reviewed-by: Peter Kasting <pkasting@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Commit-Queue: Peter Kasting <pkasting@chromium.org> Cr-Commit-Position: refs/heads/master@{#538723}
48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
# Copyright 2015 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 ui.
|
|
|
|
See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
|
|
for more details about the presubmit API built into depot_tools.
|
|
"""
|
|
|
|
def CheckX11HeaderUsage(input_api, output_api):
|
|
"""X11 headers pollute the global namespace with macros for common
|
|
names so instead code should include "ui/gfx/x/x11.h" which hide the
|
|
dangerous macros inside the x11 namespace."""
|
|
|
|
# Only check files in ui/gl and ui/gfx for now since that is the
|
|
# only code converted.
|
|
|
|
source_file_filter = lambda x: input_api.FilterSourceFile(
|
|
x,
|
|
white_list=tuple([r'.*ui[\\/].*\.(cc|h)$']))
|
|
errors = []
|
|
x11_include_pattern = input_api.re.compile(r'#include\s+<X11/.*\.h>')
|
|
for f in input_api.AffectedSourceFiles(source_file_filter):
|
|
if f.LocalPath().endswith(input_api.os_path.normpath("ui/gfx/x/x11.h")):
|
|
# This is the only file that is allowed to include X11 headers.
|
|
continue
|
|
for line_number, line in f.ChangedContents():
|
|
if input_api.re.search(x11_include_pattern, line):
|
|
errors.append(output_api.PresubmitError(
|
|
'%s:%d includes an X11 header. Include "ui/gfx/x/x11.h" instead.' %
|
|
(f.LocalPath(), line_number)))
|
|
return errors
|
|
|
|
|
|
def CheckChange(input_api, output_api):
|
|
results = []
|
|
results += CheckX11HeaderUsage(input_api, output_api)
|
|
return results
|
|
|
|
|
|
def CheckChangeOnUpload(input_api, output_api):
|
|
return CheckChange(input_api, output_api)
|
|
|
|
|
|
def CheckChangeOnCommit(input_api, output_api):
|
|
return CheckChange(input_api, output_api)
|