| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Top-level presubmit script for Chromium media component. | 5 """Top-level presubmit script for Chromium media component. |
| 6 | 6 |
| 7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts | 7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts |
| 8 for more details about the presubmit API built into depot_tools. | 8 for more details about the presubmit API built into depot_tools. |
| 9 """ | 9 """ |
| 10 | 10 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 'You added one or more references to the base::Time class and/or one\n' | 70 'You added one or more references to the base::Time class and/or one\n' |
| 71 'of its member functions (or base::Clock/DefaultClock). In media\n' | 71 'of its member functions (or base::Clock/DefaultClock). In media\n' |
| 72 'code, it is rarely correct to use a clock susceptible to time skew!\n' | 72 'code, it is rarely correct to use a clock susceptible to time skew!\n' |
| 73 'Instead, could you use base::TimeTicks to track the passage of\n' | 73 'Instead, could you use base::TimeTicks to track the passage of\n' |
| 74 'real-world time?\n\n' + | 74 'real-world time?\n\n' + |
| 75 '\n'.join(problems))] | 75 '\n'.join(problems))] |
| 76 else: | 76 else: |
| 77 return [] | 77 return [] |
| 78 | 78 |
| 79 | 79 |
| 80 def _CheckForMessageLoopProxy(input_api, output_api): | |
| 81 """Make sure media code only uses MessageLoopProxy for accessing the current | |
| 82 loop.""" | |
| 83 | |
| 84 message_loop_proxy_re = input_api.re.compile( | |
| 85 r'\bMessageLoopProxy(?!::current\(\))') | |
| 86 | |
| 87 problems = [] | |
| 88 for f in input_api.AffectedSourceFiles(_FilterFile): | |
| 89 for line_number, line in f.ChangedContents(): | |
| 90 if message_loop_proxy_re.search(line): | |
| 91 problems.append('%s:%d' % (f.LocalPath(), line_number)) | |
| 92 | |
| 93 if problems: | |
| 94 return [output_api.PresubmitError( | |
| 95 'MessageLoopProxy should only be used for accessing the current loop.\n' | |
| 96 'Use the TaskRunner interfaces instead as they are more explicit about\n' | |
| 97 'the run-time characteristics. In most cases, SingleThreadTaskRunner\n' | |
| 98 'is a drop-in replacement for MessageLoopProxy.', problems)] | |
| 99 | |
| 100 return [] | |
| 101 | |
| 102 | |
| 103 def _CheckForHistogramOffByOne(input_api, output_api): | 80 def _CheckForHistogramOffByOne(input_api, output_api): |
| 104 """Make sure histogram enum maxes are used properly""" | 81 """Make sure histogram enum maxes are used properly""" |
| 105 | 82 |
| 106 # A general-purpose chunk of regex to match whitespace and/or comments | 83 # A general-purpose chunk of regex to match whitespace and/or comments |
| 107 # that may be interspersed with the code we're interested in: | 84 # that may be interspersed with the code we're interested in: |
| 108 comment = r'/\*.*?\*/|//[^\n]*' | 85 comment = r'/\*.*?\*/|//[^\n]*' |
| 109 whitespace = r'(?:[\n\t ]|(?:' + comment + r'))*' | 86 whitespace = r'(?:[\n\t ]|(?:' + comment + r'))*' |
| 110 | 87 |
| 111 # The name is assumed to be a literal string. | 88 # The name is assumed to be a literal string. |
| 112 histogram_name = r'"[^"]*"' | 89 histogram_name = r'"[^"]*"' |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 if problems: | 163 if problems: |
| 187 return [output_api.PresubmitError( | 164 return [output_api.PresubmitError( |
| 188 'base::Time and derived classes should be passed by value and not by\n' | 165 'base::Time and derived classes should be passed by value and not by\n' |
| 189 'const ref, see base/time/time.h for more information.', problems)] | 166 'const ref, see base/time/time.h for more information.', problems)] |
| 190 return [] | 167 return [] |
| 191 | 168 |
| 192 | 169 |
| 193 def _CheckChange(input_api, output_api): | 170 def _CheckChange(input_api, output_api): |
| 194 results = [] | 171 results = [] |
| 195 results.extend(_CheckForUseOfWrongClock(input_api, output_api)) | 172 results.extend(_CheckForUseOfWrongClock(input_api, output_api)) |
| 196 results.extend(_CheckForMessageLoopProxy(input_api, output_api)) | |
| 197 results.extend(_CheckPassByValue(input_api, output_api)) | 173 results.extend(_CheckPassByValue(input_api, output_api)) |
| 198 results.extend(_CheckForHistogramOffByOne(input_api, output_api)) | 174 results.extend(_CheckForHistogramOffByOne(input_api, output_api)) |
| 199 results += input_api.canned_checks.CheckPatchFormatted(input_api, output_api) | 175 results += input_api.canned_checks.CheckPatchFormatted(input_api, output_api) |
| 200 return results | 176 return results |
| 201 | 177 |
| 202 | 178 |
| 203 def CheckChangeOnUpload(input_api, output_api): | 179 def CheckChangeOnUpload(input_api, output_api): |
| 204 return _CheckChange(input_api, output_api) | 180 return _CheckChange(input_api, output_api) |
| 205 | 181 |
| 206 | 182 |
| 207 def CheckChangeOnCommit(input_api, output_api): | 183 def CheckChangeOnCommit(input_api, output_api): |
| 208 return _CheckChange(input_api, output_api) | 184 return _CheckChange(input_api, output_api) |
| OLD | NEW |