blob: a06473692dd22b2d74754c600f2517a203f2a3b2 [file] [log] [blame]
# 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.
from telemetry.page import legacy_page_test
from metrics import cpu
from metrics import media
from metrics import power
from metrics import system_memory
class Media(legacy_page_test.LegacyPageTest):
"""The MediaMeasurement class gathers media-related metrics on a page set.
Media metrics recorded are controlled by metrics/media.js. At the end of the
test each metric for every media element in the page are reported.
"""
def __init__(self):
super(Media, self).__init__()
self._media_metric = None
# Used to add browser power and CPU metrics to results per test.
self._add_browser_metrics = False
self._cpu_metric = None
self._memory_metric = None
self._power_metric = None
def WillStartBrowser(self, platform):
self._power_metric = power.PowerMetric(platform)
def CustomizeBrowserOptions(self, options):
# Needed to run media actions in JS on touch-based devices as on Android.
options.AppendExtraBrowserArgs(
'--disable-gesture-requirement-for-media-playback')
power.PowerMetric.CustomizeBrowserOptions(options)
def DidNavigateToPage(self, page, tab):
"""Override to do operations right after the page is navigated."""
self._media_metric = media.MediaMetric(tab)
self._media_metric.Start(page, tab)
# Reset to false for every page.
self._add_browser_metrics = (
page.add_browser_metrics
if hasattr(page, 'add_browser_metrics') else False)
if self._add_browser_metrics:
self._cpu_metric = cpu.CpuMetric(tab.browser)
self._cpu_metric.Start(page, tab)
self._memory_metric = system_memory.SystemMemoryMetric(tab.browser)
self._memory_metric.Start(page, tab)
self._power_metric.Start(page, tab)
def ValidateAndMeasurePage(self, page, tab, results):
"""Measure the page's performance."""
self._media_metric.Stop(page, tab)
trace_name = self._media_metric.AddResults(tab, results)
if self._add_browser_metrics:
self._cpu_metric.Stop(page, tab)
self._memory_metric.Stop(page, tab)
self._power_metric.Stop(page, tab)
self._cpu_metric.AddResults(tab, results, trace_name=trace_name)
exclude_metrics = ['WorkingSetSizePeak', 'SystemCommitCharge', 'VMPeak',
'VM']
self._memory_metric.AddResults(tab, results,
trace_name=trace_name,
exclude_metrics=exclude_metrics)
self._power_metric.AddResults(tab, results)
def DidRunPage(self, platform):
del platform # unused
self._power_metric.Close()