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. 4 5from telemetry.value import failure 6from telemetry.value import skip 7 8 9class PageRun(object): 10 def __init__(self, page): 11 self._page = page 12 self._values = [] 13 14 def AddValue(self, value): 15 self._values.append(value) 16 17 def ClearValues(self): 18 self._values = [] 19 20 @property 21 def page(self): 22 return self._page 23 24 @property 25 def values(self): 26 """The values that correspond to this page run.""" 27 return self._values 28 29 @property 30 def ok(self): 31 """Whether the current run is still ok. 32 33 To be precise: returns true if there is neither FailureValue nor 34 SkipValue in self.values. 35 """ 36 return not self.skipped and not self.failed 37 38 @property 39 def skipped(self): 40 """Whether the current run is being skipped. 41 42 To be precise: returns true if there is any SkipValue in self.values. 43 """ 44 return any(isinstance(v, skip.SkipValue) for v in self.values) 45 46 @property 47 def failed(self): 48 """Whether the current run failed. 49 50 To be precise: returns true if there is a FailureValue but not 51 SkipValue in self.values. 52 """ 53 return not self.skipped and any( 54 isinstance(v, failure.FailureValue) for v in self.values) 55