| Index: tools/metrics/actions/print_style.py
|
| diff --git a/tools/memory_inspector/memory_inspector/unittest/mock_adb/adb b/tools/metrics/actions/print_style.py
|
| old mode 100755
|
| new mode 100644
|
| similarity index 13%
|
| copy from tools/memory_inspector/memory_inspector/unittest/mock_adb/adb
|
| copy to tools/metrics/actions/print_style.py
|
| index 6d4b6b8bcd3197b818335cdc8d7c53c30a36aac8..5625669147eadd626cfc14358f5f4e0e763f99d0
|
| --- a/tools/memory_inspector/memory_inspector/unittest/mock_adb/adb
|
| +++ b/tools/metrics/actions/print_style.py
|
| @@ -1,40 +1,41 @@
|
| -#!/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.
|
|
|
| -"""Client side of the mock adb (i.e. the one called instead of the actual adb).
|
| +"""Holds the constants for pretty printing actions.xml."""
|
|
|
| -This file is meant to be put in front of the PATH during integration tests, in
|
| -order to route all the adb calls here and serve them using a pre-configured
|
| -dictionary (epxected commands -> planned responses).
|
| -mock_adb.py is the counterpart of this file, and is meant to be used in the
|
| -unittests for configuring the behavior (i.e. the dictionary) of this script.
|
| -"""
|
| -
|
| -import json
|
| -import optparse
|
| import os
|
| import sys
|
|
|
| -
|
| -def main(argv):
|
| - # Load the dictionary of expected_cmd -> planned_response from the json file
|
| - # which mock_adb.py creates.
|
| - with open(os.environ['MOCK_ADB_CFG']) as f:
|
| - responses = json.load(f)
|
| -
|
| - # Swallow the irrelevant adb extra arguments (e.g., device id).
|
| - parser = optparse.OptionParser()
|
| - parser.add_option('-s')
|
| - options, args = parser.parse_args(argv[1:])
|
| - adb_args = ' '.join(args)
|
| -
|
| - response = ''
|
| - for (cmd, planned_response) in responses.iteritems():
|
| - if adb_args.startswith(cmd):
|
| - response = planned_response
|
| - print response
|
| -
|
| -if __name__ == '__main__':
|
| - main(sys.argv)
|
| +# Import the metrics/common module for pretty print xml.
|
| +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common'))
|
| +import pretty_print_xml
|
| +
|
| +# Desired order for tag and tag attributes.
|
| +# { tag_name: [attribute_name, ...] }
|
| +ATTRIBUTE_ORDER = {
|
| + 'action': ['name'],
|
| + 'owner': [],
|
| + 'description': [],
|
| + 'obsolete': [],
|
| +}
|
| +
|
| +# Tag names for top-level nodes whose children we don't want to indent.
|
| +TAGS_THAT_DONT_INDENT = ['actions']
|
| +
|
| +# Extra vertical spacing rules for special tag names.
|
| +# {tag_name: (newlines_after_open, newlines_before_close, newlines_after_close)}
|
| +TAGS_THAT_HAVE_EXTRA_NEWLINE = {
|
| + 'actions': (2, 1, 1),
|
| + 'action': (1, 1, 1),
|
| +}
|
| +
|
| +# Tags that we allow to be squished into a single line for brevity.
|
| +TAGS_THAT_ALLOW_SINGLE_LINE = ['owner', 'description', 'obsolete']
|
| +
|
| +def GetPrintStyle():
|
| + """Returns an XmlStyle object for pretty printing actions."""
|
| + return pretty_print_xml.XmlStyle(ATTRIBUTE_ORDER,
|
| + TAGS_THAT_HAVE_EXTRA_NEWLINE,
|
| + TAGS_THAT_DONT_INDENT,
|
| + TAGS_THAT_ALLOW_SINGLE_LINE)
|
|
|