blob: f3a4ab753784e3572f120cf149d74ba1c789a36f [file] [log] [blame]
# Copyright (c) 2012 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.
import json
from telemetry.core import web_contents
from telemetry.core.chrome import inspector_backend
class MiscWebContentsBackend(object):
"""Provides acccess to chrome://oobe/login page, which is neither an extension
nor a tab."""
def __init__(self, browser_backend):
self._browser_backend = browser_backend
def GetOobe(self):
oobe_web_contents_info = self._FindWebContentsInfo()
if oobe_web_contents_info:
debugger_url = oobe_web_contents_info.get('webSocketDebuggerUrl')
if debugger_url:
inspector = self._CreateInspectorBackend(debugger_url)
return web_contents.WebContents(inspector)
return None
def _CreateInspectorBackend(self, debugger_url):
return inspector_backend.InspectorBackend(self._browser_backend.browser,
self._browser_backend,
debugger_url)
def _ListWebContents(self, timeout=None):
data = self._browser_backend.Request('', timeout=timeout)
return json.loads(data)
def _FindWebContentsInfo(self):
for web_contents_info in self._ListWebContents():
# Prior to crrev.com/203152, url was chrome://oobe/login.
if (web_contents_info.get('url').startswith('chrome://oobe')):
return web_contents_info
return None