# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Impact HTML5 Gaming benchmark.

Tests one very specific use case: smooth running games rendered with the
<canvas> element. The score for the HTML5-Benchmark takes the total time the
browser spent rendering frames (formula is 1000000/(sqrt(totalTime) + lagTime *
0.1)). The benchmark automatically runs at a reasonable screen size. Final
score is a indicator for the browser's ability to smoothly run HTML5 games."""

import os

from telemetry import benchmark
from telemetry.page import page_measurement
from telemetry.page import page_set


class _HTML5GamingMeasurement(page_measurement.PageMeasurement):
  def MeasurePage(self, _, tab, results):
    tab.ExecuteJavaScript('benchmark();')
    # Default value of score element is 87485, its value is updated with actual
    # score when test finish.
    tab.WaitForJavaScriptExpression(
        'document.getElementById("score").innerHTML != "87485"', 200)
    result = int(tab.EvaluateJavaScript(
        'document.getElementById("score").innerHTML'))
    results.Add('Score', 'score', result)


@benchmark.Disabled
class HTML5Gaming(benchmark.Benchmark):
  """Imapct HTML5 smooth running games benchmark suite."""
  test = _HTML5GamingMeasurement
  def CreatePageSet(self, options):
    ps = page_set.PageSet(
      file_path=os.path.abspath(__file__),
      archive_data_file='../page_sets/data/html5gaming.json',
      make_javascript_deterministic=False)
    ps.AddPageWithDefaultRunNavigate('http://html5-benchmark.com/')
    return ps

# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Impact HTML5 Gaming benchmark.

Tests one very specific use case: smooth running games rendered with the
<canvas> element. The score for the HTML5-Benchmark takes the total time the
browser spent rendering frames (formula is 1000000/(sqrt(totalTime) + lagTime *
0.1)). The benchmark automatically runs at a reasonable screen size. Final
score is a indicator for the browser's ability to smoothly run HTML5 games."""

import os

from telemetry import benchmark
from telemetry.page import page_measurement
from telemetry.page import page_set
from telemetry.value import scalar


class _HTML5GamingMeasurement(page_measurement.PageMeasurement):
  def MeasurePage(self, _, tab, results):
    tab.ExecuteJavaScript('benchmark();')
    # Default value of score element is 87485, its value is updated with actual
    # score when test finish.
    tab.WaitForJavaScriptExpression(
        'document.getElementById("score").innerHTML != "87485"', 200)
    result = int(tab.EvaluateJavaScript(
        'document.getElementById("score").innerHTML'))
    results.AddValue(
        scalar.ScalarValue(results.current_page, 'Score', 'score', result))



@benchmark.Disabled
class HTML5Gaming(benchmark.Benchmark):
  """Imapct HTML5 smooth running games benchmark suite."""
  test = _HTML5GamingMeasurement
  def CreatePageSet(self, options):
    ps = page_set.PageSet(
      file_path=os.path.abspath(__file__),
      archive_data_file='../page_sets/data/html5gaming.json',
      make_javascript_deterministic=False)
    ps.AddPageWithDefaultRunNavigate('http://html5-benchmark.com/')
    return ps

Update html5gaming to use results.AddValue(...).