1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 from telemetry import value as value_module
7 class ListOfStringValues(value_module.Value):
8 def __init__(self, page, name, units, values,
9 important=True, same_page_merge_policy=value_module.CONCATENATE):
10 super(ListOfStringValues, self).__init__(page, name, units, important)
11 assert len(values) > 0
12 assert isinstance(values, list)
14 assert isinstance(v, basestring)
16 self.same_page_merge_policy = same_page_merge_policy
20 page_name = self.page.url
23 if self.same_page_merge_policy == value_module.CONCATENATE:
24 merge_policy = 'CONCATENATE'
26 merge_policy = 'PICK_FIRST'
27 return ('ListOfStringValues(%s, %s, %s, %s, ' +
28 'important=%s, same_page_merge_policy=%s)') % (
30 self.name, self.units,
35 def GetBuildbotDataType(self, output_context):
36 if self._IsImportantGivenOutputIntent(output_context):
40 def GetBuildbotValue(self):
43 def GetRepresentativeNumber(self):
46 def GetRepresentativeString(self):
47 return repr(self.values)
49 def IsMergableWith(self, that):
50 return (super(ListOfStringValues, self).IsMergableWith(that) and
51 self.same_page_merge_policy == that.same_page_merge_policy)
54 def MergeLikeValuesFromSamePage(cls, values):
55 assert len(values) > 0
58 if v0.same_page_merge_policy == value_module.PICK_FIRST:
59 return ListOfStringValues(
60 v0.page, v0.name, v0.units,
62 important=v0.important,
63 same_page_merge_policy=v0.same_page_merge_policy)
65 assert v0.same_page_merge_policy == value_module.CONCATENATE
68 all_values.extend(v.values)
69 return ListOfStringValues(
70 v0.page, v0.name, v0.units,
72 important=v0.important,
73 same_page_merge_policy=v0.same_page_merge_policy)
76 def MergeLikeValuesFromDifferentPages(cls, values,
77 group_by_name_suffix=False):
78 assert len(values) > 0
82 all_values.extend(v.values)
83 if not group_by_name_suffix:
87 return ListOfStringValues(
90 important=v0.important,
91 same_page_merge_policy=v0.same_page_merge_policy)