15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)from metrics import cpu 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)from metrics import memory 74ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochfrom metrics import power 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)from telemetry.page import page_test 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class WebRTC(page_test.PageTest): 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) """Gathers WebRTC-related metrics on a page set.""" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) def __init__(self): 1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) super(WebRTC, self).__init__('RunWebrtc') 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._cpu_metric = None 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._memory_metric = None 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch self._power_metric = None 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def WillStartBrowser(self, platform): 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._power_metric = power.PowerMetric(platform) 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) def DidStartBrowser(self, browser): 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._cpu_metric = cpu.CpuMetric(browser) 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._memory_metric = memory.MemoryMetric(browser) 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) def DidNavigateToPage(self, page, tab): 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._cpu_metric.Start(page, tab) 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._memory_metric.Start(page, tab) 304ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch self._power_metric.Start(page, tab) 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) def CustomizeBrowserOptions(self, options): 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) memory.MemoryMetric.CustomizeBrowserOptions(options) 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) options.AppendExtraBrowserArgs('--use-fake-device-for-media-stream') 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) options.AppendExtraBrowserArgs('--use-fake-ui-for-media-stream') 364ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch power.PowerMetric.CustomizeBrowserOptions(options) 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) def ValidateAndMeasurePage(self, page, tab, results): 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) """Measure the page's performance.""" 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._memory_metric.Stop(page, tab) 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._memory_metric.AddResults(tab, results) 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._cpu_metric.Stop(page, tab) 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._cpu_metric.AddResults(tab, results) 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 464ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch self._power_metric.Stop(page, tab) 474ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch self._power_metric.AddResults(tab, results) 48