diff options
author | dskiba <dskiba@google.com> | 2015-08-14 16:03:29 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-14 23:04:01 +0000 |
commit | 88634f4e2e63e13a71d94386dca77b3fc802077c (patch) | |
tree | 4dee7d28fa867ea8a62e19a4eb22a160bfa709b5 /PRESUBMIT.py | |
parent | b708d49c73208337e93b3d2f231da0dfe08cc5d9 (diff) | |
download | chromium_src-88634f4e2e63e13a71d94386dca77b3fc802077c.zip chromium_src-88634f4e2e63e13a71d94386dca77b3fc802077c.tar.gz chromium_src-88634f4e2e63e13a71d94386dca77b3fc802077c.tar.bz2 |
Don't trigger HW acceleration from Toasts on low-end devices.
BUG=520600
Review URL: https://codereview.chromium.org/1276523003
Cr-Commit-Position: refs/heads/master@{#343518}
Diffstat (limited to 'PRESUBMIT.py')
-rw-r--r-- | PRESUBMIT.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/PRESUBMIT.py b/PRESUBMIT.py index 520642e..7cbfa44 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py @@ -1312,6 +1312,43 @@ def _CheckJavaStyle(input_api, output_api): black_list=_EXCLUDED_PATHS + input_api.DEFAULT_BLACK_LIST) +def _CheckAndroidToastUsage(input_api, output_api): + """Checks that code uses org.chromium.ui.widget.Toast instead of + android.widget.Toast (Chromium Toast doesn't force hardware + acceleration on low-end devices, saving memory). + """ + toast_import_pattern = input_api.re.compile( + r'^import android\.widget\.Toast;$') + + errors = [] + + sources = lambda affected_file: input_api.FilterSourceFile( + affected_file, + black_list=(_EXCLUDED_PATHS + + _TEST_CODE_EXCLUDED_PATHS + + input_api.DEFAULT_BLACK_LIST + + (r'^chromecast[\\\/].*', + r'^remoting[\\\/].*')), + white_list=(r'.*\.java$',)) + + for f in input_api.AffectedSourceFiles(sources): + for line_num, line in f.ChangedContents(): + if toast_import_pattern.search(line): + errors.append("%s:%d" % (f.LocalPath(), line_num)) + + results = [] + + if errors: + results.append(output_api.PresubmitError( + 'android.widget.Toast usage is detected. Android toasts use hardware' + ' acceleration, and can be\ncostly on low-end devices. Please use' + ' org.chromium.ui.widget.Toast instead.\n' + 'Contact dskiba@chromium.org if you have any questions.', + errors)) + + return results + + def _CheckAndroidCrLogUsage(input_api, output_api): """Checks that new logs using org.chromium.base.Log: - Are using 'TAG' as variable name for the tags (warn) @@ -1530,6 +1567,7 @@ def _AndroidSpecificOnUploadChecks(input_api, output_api): """Groups checks that target android code.""" results = [] results.extend(_CheckAndroidCrLogUsage(input_api, output_api)) + results.extend(_CheckAndroidToastUsage(input_api, output_api)) return results |