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

Unified Diff: tools/telemetry/telemetry/core/backends/chrome/cros_browser_backend.py

Issue 205763002: Support for gaia login. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@oobe
Patch Set: rebase Created 6 years, 9 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/telemetry/telemetry/core/backends/chrome/chrome_browser_options.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/core/backends/chrome/cros_browser_backend.py
diff --git a/tools/telemetry/telemetry/core/backends/chrome/cros_browser_backend.py b/tools/telemetry/telemetry/core/backends/chrome/cros_browser_backend.py
index ce7890c1a0d63a3b8a4afaca5506106aea1ccc70..5db7a5bb7bdad55f10652af2358127bca70484a3 100644
--- a/tools/telemetry/telemetry/core/backends/chrome/cros_browser_backend.py
+++ b/tools/telemetry/telemetry/core/backends/chrome/cros_browser_backend.py
@@ -215,6 +215,8 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
# incognito browser in a separate process, which we need to wait for.
util.WaitFor(lambda: pid != self.pid, 10)
self._WaitForBrowserToComeUp()
+ elif self.browser_options.gaia_login:
+ self._NavigateGaiaLogin()
else:
self._NavigateFakeLogin()
@@ -312,6 +314,20 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
exceptions.BrowserConnectionGoneException):
pass
+ def _GaiaLoginContext(self):
+ oobe = self.oobe
+ # TODO(achuith): Implement an api in the oobe instead of calling
+ # chrome.send.
+ oobe.ExecuteJavaScript("chrome.send('addUser');")
+ for gaia_context in range(15):
+ try:
+ if oobe.EvaluateJavaScriptInContext(
+ "document.getElementById('Email') != null", gaia_context):
+ return gaia_context
+ except exceptions.EvaluateException:
+ pass
+ return None
+
def _NavigateGuestLogin(self):
"""Navigates through oobe login screen as guest."""
logging.info('Logging in as guest')
@@ -344,6 +360,22 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
% (self.browser_options.username, self.browser_options.password))
self._WaitForLogin()
+ def _NavigateGaiaLogin(self):
+ """Logs into the GAIA service with provided credentials."""
+ # TODO(achuith): Fake gaia service with a python server.
+ self._WaitForSigninScreen()
+ gaia_context = util.WaitFor(self._GaiaLoginContext, timeout=10)
+ oobe = self.oobe
+ oobe.ExecuteJavaScriptInContext(
+ "document.getElementById('Email').value='%s';"
+ % self.browser_options.username, gaia_context)
+ oobe.ExecuteJavaScriptInContext(
+ "document.getElementById('Passwd').value='%s';"
+ % self.browser_options.password, gaia_context)
+ oobe.ExecuteJavaScriptInContext(
+ "document.getElementById('signIn').click();", gaia_context)
+ self._WaitForLogin()
+
def _WaitForLogin(self):
try:
util.WaitFor(self._IsLoggedIn, 60)
« no previous file with comments | « tools/telemetry/telemetry/core/backends/chrome/chrome_browser_options.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698