Commit 9bb65868 authored by wuhu's avatar wuhu Committed by Commit bot

Change PageTest.WillStartBrowser to depend on platform instead of browser...

Change PageTest.WillStartBrowser to depend on platform instead of browser object as it would not have been created at this point.

BUG=413481

Review URL: https://codereview.chromium.org/554583003

Cr-Commit-Position: refs/heads/master@{#294703}
parent edae4643
......@@ -20,8 +20,8 @@ class _DromaeoMeasurement(page_test.PageTest):
def CustomizeBrowserOptions(self, options):
power.PowerMetric.CustomizeBrowserOptions(options)
def WillStartBrowser(self, browser):
self._power_metric = power.PowerMetric(browser)
def WillStartBrowser(self, platform):
self._power_metric = power.PowerMetric(platform)
def DidNavigateToPage(self, page, tab):
self._power_metric.Start(page, tab)
......
......@@ -42,9 +42,9 @@ class _IndexedDbMeasurement(page_test.PageTest):
self._power_metric = None
self._v8_object_stats_metric = None
def WillStartBrowser(self, browser):
def WillStartBrowser(self, platform):
"""Initialize metrics once right before the browser has been launched."""
self._power_metric = power.PowerMetric(browser)
self._power_metric = power.PowerMetric(platform)
def DidStartBrowser(self, browser):
"""Initialize metrics once right after the browser has been launched."""
......
......@@ -73,8 +73,8 @@ class _KrakenMeasurement(page_test.PageTest):
def CustomizeBrowserOptions(self, options):
power.PowerMetric.CustomizeBrowserOptions(options)
def WillStartBrowser(self, browser):
self._power_metric = power.PowerMetric(browser)
def WillStartBrowser(self, platform):
self._power_metric = power.PowerMetric(platform)
def DidNavigateToPage(self, page, tab):
self._power_metric.Start(page, tab)
......
......@@ -72,8 +72,8 @@ class _OctaneMeasurement(page_test.PageTest):
def CustomizeBrowserOptions(self, options):
power.PowerMetric.CustomizeBrowserOptions(options)
def WillStartBrowser(self, browser):
self._power_metric = power.PowerMetric(browser)
def WillStartBrowser(self, platform):
self._power_metric = power.PowerMetric(platform)
def WillNavigateToPage(self, page, tab):
memory_stats = tab.browser.memory_stats
......
......@@ -21,8 +21,8 @@ class _RobohornetProMeasurement(page_test.PageTest):
def CustomizeBrowserOptions(self, options):
power.PowerMetric.CustomizeBrowserOptions(options)
def WillStartBrowser(self, browser):
self._power_metric = power.PowerMetric(browser)
def WillStartBrowser(self, platform):
self._power_metric = power.PowerMetric(platform)
def DidNavigateToPage(self, page, tab):
self._power_metric.Start(page, tab)
......
......@@ -80,8 +80,8 @@ class _SunspiderMeasurement(page_test.PageTest):
def CustomizeBrowserOptions(self, options):
power.PowerMetric.CustomizeBrowserOptions(options)
def WillStartBrowser(self, browser):
self._power_metric = power.PowerMetric(browser)
def WillStartBrowser(self, platform):
self._power_metric = power.PowerMetric(platform)
def DidNavigateToPage(self, page, tab):
self._power_metric.Start(page, tab)
......
......@@ -20,8 +20,8 @@ class ImageDecoding(page_test.PageTest):
options.AppendExtraBrowserArgs('--enable-gpu-benchmarking')
power.PowerMetric.CustomizeBrowserOptions(options)
def WillStartBrowser(self, browser):
self._power_metric = power.PowerMetric(browser)
def WillStartBrowser(self, platform):
self._power_metric = power.PowerMetric(platform)
def WillNavigateToPage(self, page, tab):
tab.ExecuteJavaScript("""
......
......@@ -25,8 +25,8 @@ class Media(page_test.PageTest):
self._memory_metric = None
self._power_metric = None
def WillStartBrowser(self, browser):
self._power_metric = power.PowerMetric(browser)
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.
......
......@@ -12,8 +12,8 @@ class Memory(page_test.PageTest):
self._memory_metric = None
self._power_metric = None
def WillStartBrowser(self, browser):
self._power_metric = power.PowerMetric(browser)
def WillStartBrowser(self, platform):
self._power_metric = power.PowerMetric(platform)
def DidStartBrowser(self, browser):
self._memory_metric = memory.MemoryMetric(browser)
......
......@@ -84,9 +84,9 @@ class PageCycler(page_test.PageTest):
else:
cls._cold_run_start_index = args.pageset_repeat * args.page_repeat
def WillStartBrowser(self, browser):
def WillStartBrowser(self, platform):
"""Initialize metrics once right before the browser has been launched."""
self._power_metric = power.PowerMetric(browser)
self._power_metric = power.PowerMetric(platform)
def DidStartBrowser(self, browser):
"""Initialize metrics once right after the browser has been launched."""
......
......@@ -120,7 +120,7 @@ class PageCyclerUnitTest(unittest.TestCase):
try:
page_cycler.memory = mock_memory_module
browser = FakeBrowser()
cycler.WillStartBrowser(browser)
cycler.WillStartBrowser(options.browser_options.platform)
cycler.DidStartBrowser(browser)
finally:
page_cycler.memory = real_memory_module
......
......@@ -20,8 +20,8 @@ class Smoothness(page_test.PageTest):
options.AppendExtraBrowserArgs('--running-performance-benchmark')
power.PowerMetric.CustomizeBrowserOptions(options)
def WillStartBrowser(self, browser):
self._power_metric = power.PowerMetric(browser)
def WillStartBrowser(self, platform):
self._power_metric = power.PowerMetric(platform)
def WillNavigateToPage(self, page, tab):
self._power_metric.Start(page, tab)
......
......@@ -68,7 +68,7 @@ class SmoothnessUnitTest(page_test_test_case.PageTestTestCase):
tab = FakeTab()
measurement = smoothness.Smoothness()
measurement.WillStartBrowser(tab.browser)
measurement.WillStartBrowser(tab.browser.platform)
measurement.WillNavigateToPage(test_page, tab)
measurement.WillRunActions(test_page, tab)
......@@ -166,8 +166,8 @@ class SmoothnessUnitTest(page_test_test_case.PageTestTestCase):
class BuggyMeasurement(smoothness.Smoothness):
fake_power = None
# Inject fake power metric.
def WillStartBrowser(self, browser):
self.fake_power = self._power_metric = FakePowerMetric(browser)
def WillStartBrowser(self, platform):
self.fake_power = self._power_metric = FakePowerMetric(platform)
measurement = BuggyMeasurement()
try:
......
......@@ -38,9 +38,9 @@ class TabSwitching(page_test.PageTest):
options.disable_background_networking = False
power.PowerMetric.CustomizeBrowserOptions(options)
def WillStartBrowser(self, browser):
def WillStartBrowser(self, platform):
self._first_page_in_pageset = True
self._power_metric = power.PowerMetric(browser, TabSwitching.SAMPLE_TIME)
self._power_metric = power.PowerMetric(platform, TabSwitching.SAMPLE_TIME)
def TabForPage(self, page, browser):
if self._first_page_in_pageset:
......
......@@ -17,8 +17,8 @@ class WebRTC(page_test.PageTest):
self._memory_metric = None
self._power_metric = None
def WillStartBrowser(self, browser):
self._power_metric = power.PowerMetric(browser)
def WillStartBrowser(self, platform):
self._power_metric = power.PowerMetric(platform)
def DidStartBrowser(self, browser):
self._cpu_metric = cpu.CpuMetric(browser)
......
......@@ -15,15 +15,16 @@ class PowerMetric(Metric):
# System power draw while idle.
_quiescent_power_draw_mwh = 0
def __init__(self, browser, quiescent_measurement_time_s=0):
def __init__(self, platform, quiescent_measurement_time_s=0):
"""PowerMetric Constructor.
Args:
browser: browser object to use.
platform: platform object to use.
quiescent_measurement_time_s: time to measure quiescent power,
in seconds. 0 means don't measure quiescent power."""
super(PowerMetric, self).__init__()
self._browser = browser
self._browser = None
self._platform = platform
self._running = False
self._starting_cpu_stats = None
self._results = None
......@@ -43,16 +44,15 @@ class PowerMetric(Metric):
if not self._running:
return
self._running = False
self._results = self._browser.platform.StopMonitoringPower()
self._results = self._platform.StopMonitoringPower()
if self._results: # StopMonitoringPower() can return None.
self._results['cpu_stats'] = (
_SubtractCpuStats(self._browser.cpu_stats, self._starting_cpu_stats))
def _MeasureQuiescentPower(self, measurement_time_s):
"""Measure quiescent power draw for the system."""
platform = self._browser.platform
if not platform.CanMonitorPower() or \
platform.CanMeasurePerApplicationPower() or \
if not self._platform.CanMonitorPower() or \
self._platform.CanMeasurePerApplicationPower() or \
not measurement_time_s:
return
......@@ -60,14 +60,16 @@ class PowerMetric(Metric):
if PowerMetric._quiescent_power_draw_mwh:
return
platform.StartMonitoringPower(self._browser)
self._platform.StartMonitoringPower(self._browser)
time.sleep(measurement_time_s)
power_results = platform.StopMonitoringPower()
power_results = self._platform.StopMonitoringPower()
PowerMetric._quiescent_power_draw_mwh = (
power_results.get('energy_consumption_mwh', 0))
def Start(self, _, tab):
if not tab.browser.platform.CanMonitorPower():
self._browser = tab.browser
if not self._platform.CanMonitorPower():
return
self._results = None
......@@ -75,11 +77,11 @@ class PowerMetric(Metric):
# This line invokes top a few times, call before starting power measurement.
self._starting_cpu_stats = self._browser.cpu_stats
self._browser.platform.StartMonitoringPower(self._browser)
self._platform.StartMonitoringPower(self._browser)
self._running = True
def Stop(self, _, tab):
if not tab.browser.platform.CanMonitorPower():
if not self._platform.CanMonitorPower():
return
self._StopInternal()
......
......@@ -54,7 +54,7 @@ class _RunState(object):
page_set.make_javascript_deterministic)
self._last_archive_path = page.archive_path
test.WillStartBrowser(self.browser)
test.WillStartBrowser(possible_browser.platform)
self.browser.Start()
test.DidStartBrowser(self.browser)
......
......@@ -406,7 +406,7 @@ class PageRunnerTests(unittest.TestCase):
self._did_call_will_start = False
self._did_call_did_start = False
def WillStartBrowser(self, browser):
def WillStartBrowser(self, platform):
self._did_call_will_start = True
# TODO(simonjam): Test that the profile is available.
......
......@@ -193,7 +193,7 @@ class PageTest(command_line.Command):
if page.startup_url:
options.browser_options.startup_url = page.startup_url
def WillStartBrowser(self, browser):
def WillStartBrowser(self, platform):
"""Override to manipulate the browser environment before it launches."""
def DidStartBrowser(self, browser):
......
......@@ -68,7 +68,7 @@ class MockPageTest(page_test.PageTest):
def ValidatePage(self, page, tab, results):
self.func_calls.append('ValidatePage')
def WillStartBrowser(self, browser):
def WillStartBrowser(self, platform):
self.func_calls.append('WillStartBrowser')
def DidStartBrowser(self, browser):
......@@ -201,7 +201,7 @@ class RecordWprUnitTests(tab_test_case.TabTestCase):
def testRecorderPageTest_BrowserMethods(self):
record_page_test = record_wpr.RecorderPageTest([])
record_page_test.page_test = MockBenchmark().test()
record_page_test.WillStartBrowser(self._tab.browser)
record_page_test.WillStartBrowser(self._tab.browser.platform)
record_page_test.DidStartBrowser(self._tab.browser)
self.assertTrue('WillStartBrowser' in record_page_test.page_test.func_calls)
self.assertTrue('DidStartBrowser' in record_page_test.page_test.func_calls)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment