1a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch# Copyright 2014 The Chromium Authors. All rights reserved.
2a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch# Use of this source code is governed by a BSD-style license that can be
3a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch# found in the LICENSE file.
4a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochfrom telemetry.page import page as page_module
5a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochfrom telemetry.page import page_set as page_set_module
6a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
7a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class ToughEnergyCasesPage(page_module.Page):
9a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
10a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  def __init__(self, url, page_set):
11a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    super(ToughEnergyCasesPage, self).__init__(url=url, page_set=page_set)
12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    self.credentials_path = 'data/credentials.json'
13a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass CodePenPage(ToughEnergyCasesPage):
15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  def __init__(self, url, page_set):
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    super(CodePenPage, self).__init__(url, page_set)
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.credentials = 'codepen'
19a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
20a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass GooglePage(ToughEnergyCasesPage):
22a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  def __init__(self, url, page_set):
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    super(GooglePage, self).__init__(
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        url=url,
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        page_set=page_set)
27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    self.credentials = 'google'
28a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  def RunNavigateSteps(self, action_runner):
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    action_runner.NavigateToPage(self)
31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    action_runner.WaitForJavaScriptCondition(
32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        'window.gmonkey !== undefined &&'
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        'document.getElementById("gb") !== null')
34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
35a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
36a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass ToughEnergyCasesPageSet(page_set_module.PageSet):
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  """Pages for measuring Chrome power draw."""
38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  def __init__(self):
40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    super(ToughEnergyCasesPageSet, self).__init__(
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        archive_data_file='data/tough_energy_cases.json',
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        bucket=page_set_module.PUBLIC_BUCKET,
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        credentials_path='data/credentials.json')
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: productivity, top google properties
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(GooglePage('https://mail.google.com/mail/', self))
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Disabled: pegs CPU too much to get meaningful results.
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: Image constantly changed in the background, above the fold
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # self.AddPage(CodePenPage(
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    #     'http://codepen.io/testificate364/debug/eIutG', self))
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Disabled: pegs CPU too much to get meaningful results.
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: Image constantly changed in the background, below the fold
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # self.AddPage(CodePenPage(
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    #     'http://codepen.io/testificate364/debug/zcDdv', self))
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: CSS Animation, above the fold
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci         'http://codepen.io/testificate364/debug/nrbDc', self))
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: CSS Animation, below the fold
631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/fhKCg', self))
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: requestAnimationFrame, above the fold
671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/paJhg',self))
691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: requestAnimationFrame, below the fold
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/yaosK', self))
731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: setTimeout animation, above the fold
751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/DLbxg', self))
771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: setTimeout animation, below the fold
791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/kFvpd', self))
811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: setInterval animation, above the fold
831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/lEhyw', self))
851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: setInterval animation, below the fold
871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/zhgBD', self))
891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: Animated GIF, above the fold
911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/jetyn', self))
931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: Animated GIF, below the fold
951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/Kvdxs', self))
971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: HTML5 video, above the fold
991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/lJAiH', self))
1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: HTML5 video, below the fold
1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/EFceH', self))
1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Disabled: pegs CPU too much to get meaningful results.
1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: PostMessage between frames, above the fold
1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # self.AddPage(CodePenPage(
1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    #    'http://codepen.io/testificate364/debug/pgBHu', self))
1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Disabled: pegs CPU too much to get meaningful results.
1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: Asynchronous XHR continually running
1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # self.AddPage(CodePenPage(
1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # 'http://codepen.io/testificate364/debug/iwAfJ', self))
1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Disabled: pegs CPU too much to get meaningful results.
1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: Web Worker continually running
1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # self.AddPage(CodePenPage(
1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    #     'http://codepen.io/testificate364/debug/ckItK', self))
1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: flash video
1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/slBue', self))
1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    # Why: Blank page in the foreground
1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.AddPage(CodePenPage(
1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        'http://codepen.io/testificate364/debug/HdIgr', self))
128