| Index: tools/chrome_remote_control/chrome_remote_control/tab.py
|
| diff --git a/tools/chrome_remote_control/chrome_remote_control/tab.py b/tools/chrome_remote_control/chrome_remote_control/tab.py
|
| index 976eee04b65c90b6f761a3dfc049423d7f4d9432..e86f95bc9c6ab5751a0e6045125cedfb5d2299db 100644
|
| --- a/tools/chrome_remote_control/chrome_remote_control/tab.py
|
| +++ b/tools/chrome_remote_control/chrome_remote_control/tab.py
|
| @@ -6,6 +6,7 @@ import websocket
|
| import socket
|
| import time
|
|
|
| +import tab_console
|
| import tab_page
|
| import tab_runtime
|
| import util
|
| @@ -13,21 +14,34 @@ import util
|
| DEFAULT_TAB_TIMEOUT=60
|
|
|
| class Tab(object):
|
| - def __init__(self, inspector_backend):
|
| - self._inspector_backend = inspector_backend
|
| - self.page = tab_page.TabPage(self._inspector_backend)
|
| - self.runtime = tab_runtime.TabRuntime(self._inspector_backend)
|
| + """Represents a tab in the browser
|
| +
|
| + The important parts of the Tab object are in the runtime and page objects.
|
| + E.g.:
|
| + # Navigates the tab to a given url.
|
| + tab.page.Navigate("http://www.google.com/")
|
|
|
| + # Evaluates 1+1 in the tab's javascript context.
|
| + tab.runtime.Evaluate("1+1")
|
| + """
|
| + def __init__(self, browser, inspector_backend):
|
| + self._browser = browser
|
| + self._inspector_backend = inspector_backend
|
| + self._page = tab_page.TabPage(self._inspector_backend)
|
| + self._runtime = tab_runtime.TabRuntime(self._inspector_backend)
|
| + self._console = tab_console.TabConsole(self._inspector_backend)
|
|
|
| def __del__(self):
|
| self.Close()
|
|
|
| def Close(self):
|
| - self.page = None
|
| - self.runtime = None
|
| + self._console = None
|
| + self._runtime = None
|
| + self._page = None
|
| if self._inspector_backend:
|
| self._inspector_backend.Close()
|
| self._inspector_backend = None
|
| + self._browser = None
|
|
|
| def __enter__(self):
|
| return self
|
| @@ -35,13 +49,33 @@ class Tab(object):
|
| def __exit__(self, *args):
|
| self.Close()
|
|
|
| + @property
|
| + def browser(self):
|
| + """The browser in which this tab resides."""
|
| + return self._browser
|
| +
|
| + @property
|
| + def page(self):
|
| + """Methods for interacting with the current page."""
|
| + return self._page
|
| +
|
| + @property
|
| + def runtime(self):
|
| + """Methods for interacting with the page's javascript runtime."""
|
| + return self._runtime
|
| +
|
| + @property
|
| + def console(self):
|
| + """Methods for interacting with the page's console objec."""
|
| + return self._console
|
| +
|
| def WaitForDocumentReadyStateToBeComplete(self, timeout=60):
|
| util.WaitFor(
|
| - lambda: self.runtime.Evaluate('document.readyState') == 'complete',
|
| + lambda: self._runtime.Evaluate('document.readyState') == 'complete',
|
| timeout)
|
|
|
| def WaitForDocumentReadyStateToBeInteractiveOrBetter(self, timeout=60):
|
| def IsReadyStateInteractiveOrBetter():
|
| - rs = self.runtime.Evaluate('document.readyState')
|
| + rs = self._runtime.Evaluate('document.readyState')
|
| return rs == 'complete' or rs == 'interactive'
|
| util.WaitFor(IsReadyStateInteractiveOrBetter, timeout)
|
|
|