Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3007)

Unified Diff: build/android/gyp/jarjar_resources.py

Issue 1040653003: Remove support for jarjar-ing layout.xml files. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « android_webview/build/jarjar_resources.gypi ('k') | build/common.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/gyp/jarjar_resources.py
diff --git a/build/android/gyp/jarjar_resources.py b/build/android/gyp/jarjar_resources.py
deleted file mode 100755
index 67b510ba577fac81ab9d310a320e336c5e804cb6..0000000000000000000000000000000000000000
--- a/build/android/gyp/jarjar_resources.py
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2014 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.
-
-"""Transforms direct Java class references in Android layout .xml files
-according to the specified JarJar rules."""
-
-import optparse
-import os
-import shutil
-import sys
-from xml.dom import minidom
-
-from util import build_utils
-
-
-class JarJarRules(object):
- def __init__(self, jarjar_rules):
- self._rules = []
- for line in jarjar_rules.splitlines():
- rule = line.split()
- if rule[0] != 'rule':
- continue
- _, src, dest = rule
- if src.endswith('**'):
- src_real_name = src[:-2]
- else:
- assert not '*' in src
- src_real_name = src
-
- if dest.endswith('@0'):
- self._rules.append((src, dest[:-2] + src_real_name))
- elif dest.endswith('@1'):
- assert '**' in src
- self._rules.append((src, dest[:-2]))
- else:
- assert not '@' in dest
- self._rules.append((src, dest))
-
- def RenameClass(self, class_name):
- for old, new in self._rules:
- if old.endswith('**') and old[:-2] in class_name:
- return class_name.replace(old[:-2], new, 1)
- if '*' not in old and class_name.endswith(old):
- return class_name.replace(old, new, 1)
- return class_name
-
-
-def RenameNodes(node, rules):
- if node.nodeType == node.ELEMENT_NODE:
- if node.tagName.lower() == 'view' and node.attributes.has_key('class'):
- node.attributes['class'] = rules.RenameClass(node.attributes['class'])
- else:
- node.tagName = rules.RenameClass(node.tagName)
- for child in node.childNodes:
- RenameNodes(child, rules)
-
-
-def ProcessLayoutFile(path, rules):
- xmldoc = minidom.parse(path)
- RenameNodes(xmldoc.documentElement, rules)
- with open(path, 'w') as f:
- xmldoc.writexml(f)
-
-
-def LayoutFilesFilter(src, names):
- if os.path.basename(src).lower() != 'layout':
- return []
- else:
- return filter(lambda n: n.endswith('.xml'), names)
-
-
-def ProcessResources(options):
- with open(options.rules_path) as f:
- rules = JarJarRules(f.read())
-
- build_utils.DeleteDirectory(options.output_dir)
- for input_dir in options.input_dir:
- shutil.copytree(input_dir, options.output_dir)
-
- for root, _dirnames, filenames in os.walk(options.output_dir):
- layout_files = LayoutFilesFilter(root, filenames)
- for layout_file in layout_files:
- ProcessLayoutFile(os.path.join(root, layout_file), rules)
-
-
-def ParseArgs():
- parser = optparse.OptionParser()
- parser.add_option('--input-dir', action='append',
- help='Path to the resources folder to process.')
- parser.add_option('--output-dir',
- help=('Directory to hold processed resources. Note: the ' +
- 'directory will be clobbered on every invocation.'))
- parser.add_option('--rules-path',
- help='Path to the jarjar rules file.')
- parser.add_option('--stamp', help='Path to touch on success.')
-
- options, args = parser.parse_args()
-
- if args:
- parser.error('No positional arguments should be given.')
-
- # Check that required options have been provided.
- required_options = ('input_dir', 'output_dir', 'rules_path')
- build_utils.CheckOptions(options, parser, required=required_options)
-
- return options
-
-
-def main():
- options = ParseArgs()
-
- ProcessResources(options)
-
- if options.stamp:
- build_utils.Touch(options.stamp)
-
-
-if __name__ == '__main__':
- sys.exit(main())
« no previous file with comments | « android_webview/build/jarjar_resources.gypi ('k') | build/common.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698