• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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