1# Copyright 2013 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 5 6class PageRunnerRepeatState(object): 7 def __init__(self, args): 8 self.total_pageset_iters = args.pageset_repeat 9 self.total_page_iters = args.page_repeat 10 11 self.pageset_iters = None 12 self.page_iters = None 13 14 def WillRunPage(self): 15 """Runs before we start repeating a page.""" 16 self.page_iters = 0 17 18 def WillRunPageSet(self): 19 """Runs before we start repeating a pageset.""" 20 self.pageset_iters = 0 21 22 def DidRunPage(self): 23 """Runs after each completion of a page iteration""" 24 self.page_iters += 1 25 26 def DidRunPageSet(self): 27 """Runs after each completion of a pageset iteration""" 28 self.pageset_iters += 1 29 30 def ShouldRepeatPageSet(self): 31 """Returns True if we need to repeat this pageset more times.""" 32 return self.pageset_iters < self.total_pageset_iters 33 34 def ShouldRepeatPage(self): 35 """Returns True if we need to repeat this page more times.""" 36 return self.page_iters < self.total_page_iters 37 38 def ShouldNavigate(self, skip_navigate_on_repeat): 39 """Checks whether we want to perform a navigate action. 40 41 Args: 42 skip_navigate_on_repeat: Boolean, whether we want to skip the navigate 43 step when repeating a single page. This option is useful for endure 44 tests, where we don't want to reload the page when repeating it. 45 46 Returns: 47 True if we want to navigate. 48 """ 49 # Always navigate on the first iteration of a page and on every new pageset. 50 return self.page_iters == 0 or not skip_navigate_on_repeat 51