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.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)import logging
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
6a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochfrom telemetry.page import page as page_module
7a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochfrom telemetry.page import page_set as page_set_module
8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
9a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class ToughWebglCasesPage(page_module.Page):
11a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  def __init__(self, url, page_set):
13a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    super(ToughWebglCasesPage, self).__init__(url=url, page_set=page_set)
14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    self.archive_data_file = 'data/tough_webgl_cases.json'
15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  def CanRunOnBrowser(self, browser_info):
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if not browser_info.HasWebGLSupport():
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      logging.warning('Browser does not support webgl, skipping test')
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      return False
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return True
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
22a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  def RunNavigateSteps(self, action_runner):
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    action_runner.NavigateToPage(self)
24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    action_runner.WaitForJavaScriptCondition(
25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        'document.readyState == "complete"')
26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    action_runner.Wait(2)
27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
28a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  def RunSmoothness(self, action_runner):
29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    action_runner.Wait(5)
30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
32a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass ToughWebglCasesPageSet(page_set_module.PageSet):
33a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  """
35a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  Description: Self-driven WebGL animation examples
36a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  """
37a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  def __init__(self):
39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    super(ToughWebglCasesPageSet, self).__init__(
40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      archive_data_file='data/tough_webgl_cases.json')
41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    urls_list = [
43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      # pylint: disable=C0301
44a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      'http://www.khronos.org/registry/webgl/sdk/demos/google/nvidia-vertex-buffer-object/index.html',
45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      # pylint: disable=C0301
46a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      'http://www.khronos.org/registry/webgl/sdk/demos/google/san-angeles/index.html',
47a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      # pylint: disable=C0301
48a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      'http://www.khronos.org/registry/webgl/sdk/demos/google/particles/index.html',
49a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      'http://www.khronos.org/registry/webgl/sdk/demos/webkit/Earth.html',
50a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      # pylint: disable=C0301
51a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      'http://www.khronos.org/registry/webgl/sdk/demos/webkit/ManyPlanetsDeep.html',
52a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      'http://webglsamples.googlecode.com/hg/aquarium/aquarium.html',
53a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      'http://webglsamples.googlecode.com/hg/blob/blob.html',
54a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      # pylint: disable=C0301
55a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      'http://webglsamples.googlecode.com/hg/dynamic-cubemap/dynamic-cubemap.html'
56a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    ]
57a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    for url in urls_list:
58a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      self.AddPage(ToughWebglCasesPage(url, self))
59