| # Copyright 2019 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import os |
| import re |
| |
| |
| def normpath(path): |
| '''Version of os.path.normpath that also changes backward slashes to |
| forward slashes when not running on Windows. |
| ''' |
| # This is safe to always do because the Windows version of os.path.normpath |
| # will replace forward slashes with backward slashes. |
| path = path.replace(os.sep, '/') |
| return os.path.normpath(path) |
| |
| |
| _SRC_ROOT = normpath( |
| os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..'))) |
| COLOR_PALETTE_RELATIVE_PATH = normpath( |
| 'ui/android/java/res/values/color_palette.xml') |
| COLOR_PALETTE_PATH = normpath( |
| os.path.join(_SRC_ROOT, COLOR_PALETTE_RELATIVE_PATH)) |
| ONE_OFF_COLORS_RELATIVE_PATH = normpath( |
| 'ui/android/java/res/values/one_off_colors.xml') |
| ONE_OFF_COLORS_PATH = normpath( |
| os.path.join(_SRC_ROOT, ONE_OFF_COLORS_RELATIVE_PATH)) |
| BUTTOM_COMPAT_WIDGET_RELATIVE_PATH = ( |
| normpath('ui/android/java/src/org/chromium/ui/widget/ButtonCompat.java')) |
| |
| COLOR_PATTERN = re.compile(r'(>|")(#[0-9A-Fa-f]+)(<|")') |
| VALID_COLOR_PATTERN = re.compile( |
| r'^#([0-9A-F][0-9A-E]|[0-9A-E][0-9A-F])?[0-9A-F]{6}$') |
| XML_APP_NAMESPACE_PATTERN = re.compile( |
| r'xmlns:(\w+)="http://schemas.android.com/apk/res-auto"') |
| TEXT_APPEARANCE_STYLE_PATTERN = re.compile(r'^TextAppearance\.?') |
| INCLUDED_PATHS = [ |
| r'^(chrome|ui|components|content)[\\/](.*[\\/])?java[\\/]res.+\.xml$' |
| ] |
| DYNAMIC_COLOR_INCLUDED_PATHS = [ |
| r'^(chrome|components)[\\/](.*[\\/])?java[\\/]res.+\.xml$' |
| ] |
| INCLUDED_GRD_PATHS = [ |
| r'^(chrome|ui|components|content)[\\/](.*[\\/])?android[\\/](.*)\.grd$' |
| ] |
| # TODO(lazzzis): Check color references in java source files. |
| COLOR_REFERENCE_PATTERN = re.compile( |
| r''' |
| @color/ # starts with '@color' |
| ([\w|_]+) # color name is only composed of numbers, letters and underscore |
| ''', re.VERBOSE) |
| |
| DYNAMIC_COLOR_SUPPORTING_DIRS = {'components', 'chrome'} |
| COLOR_STATE_LIST_DIRS = { |
| # Generated with the command below. When color state lists in new folders |
| # are added, re-run this command and update. |
| # find chrome/ components/ -name *\.xml | grep "/res/color" | xargs grep "<selector" | cut -d: -f1 | xargs dirname | sort | uniq | sed "s/^/'/" | sed "s/$/\/',/" |
| normpath('chrome/browser/feed/android/java/res/color/'), |
| normpath('components/browser_ui/styles/android/java/res/color/'), |
| normpath('components/browser_ui/styles/android/java/res/color-night/'), |
| normpath('components/browser_ui/widget/android/java/res/color/'), |
| normpath('components/permissions/android/res/color/'), |
| } |
| |
| KNOWN_STYLE_ATTRIBUTE = re.compile( |
| r' (android:theme|android:textAppearance|style)=\"(.*)\"') |
| STYLE_REF_PREFIX = re.compile(r'^(@style|\?attr|\?android:attr)/') |
| |
| UI_PATHS = [r'^ui[\\/].*\.xml'] |