| Index: tools/metrics/ukm/model.py
|
| diff --git a/tools/metrics/ukm/model.py b/tools/metrics/ukm/model.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f0c7ebeabf2cb1e288a6678ede4a51176773096a
|
| --- /dev/null
|
| +++ b/tools/metrics/ukm/model.py
|
| @@ -0,0 +1,61 @@
|
| +# Copyright 2017 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.
|
| +# """Model objects for ukm.xml contents."""
|
| +
|
| +import os
|
| +import sys
|
| +
|
| +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common'))
|
| +import models
|
| +
|
| +# Model definitions for ukm.xml content
|
| +_OBSOLETE_TYPE = models.TextNodeType('obsolete')
|
| +_OWNER_TYPE = models.TextNodeType('owner', single_line=True)
|
| +_SUMMARY_TYPE = models.TextNodeType('summary')
|
| +
|
| +_LOWERCASE_NAME_FN = lambda n: n.attributes['name'].value.lower()
|
| +
|
| +_METRIC_TYPE = models.ObjectNodeType(
|
| + 'metric',
|
| + attributes=[('name', unicode)],
|
| + children=[
|
| + models.ChildType('obsolete', _OBSOLETE_TYPE, False),
|
| + models.ChildType('owners', _OWNER_TYPE, True),
|
| + models.ChildType('summary', _SUMMARY_TYPE, False),
|
| + ])
|
| +
|
| +_EVENT_TYPE = models.ObjectNodeType(
|
| + 'event',
|
| + alphabetization=('metric', _LOWERCASE_NAME_FN),
|
| + attributes=[('name', unicode)],
|
| + extra_newlines=(1, 1, 1),
|
| + children=[
|
| + models.ChildType('obsolete', _OBSOLETE_TYPE, False),
|
| + models.ChildType('owners', _OWNER_TYPE, True),
|
| + models.ChildType('summary', _SUMMARY_TYPE, False),
|
| + models.ChildType('metrics', _METRIC_TYPE, True),
|
| + ])
|
| +
|
| +_UKM_CONFIGURATION_TYPE = models.ObjectNodeType(
|
| + 'ukm-configuration',
|
| + extra_newlines=(2, 1, 1),
|
| + indent=False,
|
| + children=[
|
| + models.ChildType('events', _EVENT_TYPE, True),
|
| + ])
|
| +
|
| +UKM_XML_TYPE = models.DocumentType(_UKM_CONFIGURATION_TYPE)
|
| +
|
| +def UpdateXML(original_xml):
|
| + """Parses the original xml and return a pretty printed version.
|
| +
|
| + Args:
|
| + original_xml: A string containing the original xml file contents.
|
| +
|
| + Returns:
|
| + A pretty-printed xml string, or None if the config contains errors.
|
| + """
|
| + config = UKM_XML_TYPE.Parse(original_xml)
|
| +
|
| + return UKM_XML_TYPE.PrettyPrint(config)
|
|
|