Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Unified Diff: tools/telemetry/telemetry/page/page_runner.py

Issue 44883004: [telemetry] Move tab from RunState to PageState. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comment nit. Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/perf/profile_creators/small_profile_creator.py ('k') | tools/telemetry/telemetry/page/page_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/page/page_runner.py
diff --git a/tools/telemetry/telemetry/page/page_runner.py b/tools/telemetry/telemetry/page/page_runner.py
index 071646493c9e966fccaa9a73431c36360c757530..1ff2c74bc39cf0f188a5cb0ceef70c6c036e3f00 100644
--- a/tools/telemetry/telemetry/page/page_runner.py
+++ b/tools/telemetry/telemetry/page/page_runner.py
@@ -27,7 +27,6 @@ from telemetry.page.actions import navigate
class _RunState(object):
def __init__(self):
self.browser = None
- self.tab = None
self._append_to_existing_wpr = False
self._last_archive_path = None
@@ -41,7 +40,6 @@ class _RunState(object):
started_browser = not self.browser
# Create a browser.
if not self.browser:
- assert not self.tab
self.browser = possible_browser.Create()
self.browser.credentials.credentials_path = credentials_path
@@ -105,17 +103,10 @@ class _RunState(object):
if started_browser:
self.browser.tabs[0].WaitForDocumentReadyStateToBeComplete()
- if not self.tab:
- self.tab = self.browser.tabs[0]
-
if self.first_page[page]:
self.first_page[page] = False
def StopBrowser(self):
- if self.tab:
- self.tab.Disconnect()
- self.tab = None
-
if self.browser:
self.browser.Close()
self.browser = None
@@ -139,41 +130,50 @@ class _RunState(object):
class PageState(object):
- def __init__(self):
+ def __init__(self, page, tab):
+ self.page = page
+ self.tab = tab
+
self._did_login = False
- def PreparePage(self, page, tab, test=None):
- if page.is_file:
- server_started = tab.browser.SetHTTPServerDirectories(
- page.page_set.serving_dirs | set([page.serving_dir]))
+ def PreparePage(self, test=None):
+ if self.page.is_file:
+ server_started = self.tab.browser.SetHTTPServerDirectories(
+ self.page.page_set.serving_dirs | set([self.page.serving_dir]))
if server_started and test:
- test.DidStartHTTPServer(tab)
+ test.DidStartHTTPServer(self.tab)
- if page.credentials:
- if not tab.browser.credentials.LoginNeeded(tab, page.credentials):
- raise page_test.Failure('Login as ' + page.credentials + ' failed')
+ if self.page.credentials:
+ if not self.tab.browser.credentials.LoginNeeded(
+ self.tab, self.page.credentials):
+ raise page_test.Failure('Login as ' + self.page.credentials + ' failed')
self._did_login = True
if test:
if test.clear_cache_before_each_run:
- tab.ClearCache()
+ self.tab.ClearCache()
- def ImplicitPageNavigation(self, page, tab, test=None):
+ def ImplicitPageNavigation(self, test=None):
"""Executes the implicit navigation that occurs for every page iteration.
This function will be called once per page before any actions are executed.
"""
if test:
- test.WillNavigateToPage(page, tab)
- test.RunNavigateSteps(page, tab)
- test.DidNavigateToPage(page, tab)
+ test.WillNavigateToPage(self.page, self.tab)
+ test.RunNavigateSteps(self.page, self.tab)
+ test.DidNavigateToPage(self.page, self.tab)
else:
i = navigate.NavigateAction()
- i.RunAction(page, tab, None)
+ i.RunAction(self.page, self.tab, None)
+
+ def CleanUpPage(self):
+ if self.page.credentials and self._did_login:
+ self.tab.browser.credentials.LoginNoLongerNeeded(
+ self.tab, self.page.credentials)
- def CleanUpPage(self, page, tab):
- if page.credentials and self._did_login:
- tab.browser.credentials.LoginNoLongerNeeded(tab, page.credentials)
+ if self.tab:
+ self.tab.Disconnect()
+ self.tab = None
def AddCommandLineOptions(parser):
@@ -235,7 +235,7 @@ def _PrepareAndRunPage(test, page_set, expectations, finder_options,
if finder_options.profiler:
state.StopProfiling()
- if test.NeedsBrowserRestartAfterEachRun(state.tab):
+ if test.NeedsBrowserRestartAfterEachRun(state.browser):
state.StopBrowser()
break
@@ -314,8 +314,7 @@ def Run(test, page_set, expectations, finder_options):
# TODO(dtu): Move results creation and results_for_current_run into RunState.
try:
- # TODO(dtu): state.tab is always None here, maybe we should not pass it?
- test.WillRunTest(state.tab)
+ test.WillRunTest()
state.repeat_state = page_runner_repeat.PageRunnerRepeatState(
finder_options.repeat_options)
@@ -323,19 +322,19 @@ def Run(test, page_set, expectations, finder_options):
while state.repeat_state.ShouldRepeatPageSet() and not test.IsExiting():
for page in pages:
state.repeat_state.WillRunPage()
- test.WillRunPageRepeats(page, state.tab)
+ test.WillRunPageRepeats(page)
while state.repeat_state.ShouldRepeatPage():
# execute test on page
_PrepareAndRunPage(test, page_set, expectations, finder_options,
browser_options, page, credentials_path,
possible_browser, results, state)
state.repeat_state.DidRunPage()
- test.DidRunPageRepeats(page, state.tab)
+ test.DidRunPageRepeats(page)
if test.IsExiting():
break
state.repeat_state.DidRunPageSet()
- test.DidRunTest(state.tab, results)
+ test.DidRunTest(state.browser, results)
finally:
state.StopBrowser()
@@ -423,9 +422,7 @@ def _RunPage(test, page, state, expectation, results, finder_options):
logging.info('Running %s' % page.url)
- page_state = PageState()
- tab = test.TabForPage(page, state.tab)
- state.tab = tab
+ page_state = PageState(page, test.TabForPage(page, state.browser))
def ProcessError():
logging.error('%s:\n%s', page.url, traceback.format_exc())
@@ -436,12 +433,12 @@ def _RunPage(test, page, state, expectation, results, finder_options):
results.AddError(page, sys.exc_info())
try:
- page_state.PreparePage(page, tab, test)
+ page_state.PreparePage(test)
if state.repeat_state.ShouldNavigate(
finder_options.skip_navigate_on_repeat):
- page_state.ImplicitPageNavigation(page, tab, test)
- test.Run(finder_options, page, tab, results)
- util.CloseConnections(tab)
+ page_state.ImplicitPageNavigation(test)
+ test.Run(finder_options, page, page_state.tab, results)
+ util.CloseConnections(page_state.tab)
except page_test.Failure:
logging.warning('%s:\n%s', page.url, traceback.format_exc())
if expectation == 'fail':
@@ -463,7 +460,7 @@ def _RunPage(test, page, state, expectation, results, finder_options):
logging.warning('%s was expected to fail, but passed.\n', page.url)
results.AddSuccess(page)
finally:
- page_state.CleanUpPage(page, tab)
+ page_state.CleanUpPage()
def _GetSequentialFileName(base_name):
« no previous file with comments | « tools/perf/profile_creators/small_profile_creator.py ('k') | tools/telemetry/telemetry/page/page_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698