Chromium Code Reviews| Index: tools/telemetry/telemetry/core/webdriver/webdriver_tab_backend.py |
| diff --git a/tools/telemetry/telemetry/core/webdriver/webdriver_tab_backend.py b/tools/telemetry/telemetry/core/webdriver/webdriver_tab_backend.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a9a803c8cceba5b6e78d05f75162cad79eca8c57 |
| --- /dev/null |
| +++ b/tools/telemetry/telemetry/core/webdriver/webdriver_tab_backend.py |
| @@ -0,0 +1,107 @@ |
| +# Copyright (c) 2013 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 logging |
| + |
| +class WebDriverTabBackend(object): |
| + def __init__(self, browser_backend, window_handle): |
| + self._browser_backend = browser_backend |
| + self._window_handle = window_handle |
| + |
| + def Disconnect(self): |
| + pass |
| + |
| + @property |
| + def browser(self): |
| + return self._browser_backend.browser |
| + |
| + @property |
| + def window_handle(self): |
| + return self._window_handle |
| + |
| + @property |
| + def url(self): |
| + self._browser_backend.driver.switch_to_window(self._window_handle) |
| + return self._browser_backend.driver.current_url |
| + |
| + def Activate(self): |
| + raise NotImplementedError() |
| + |
| + def Close(self): |
| + self._browser_backend.driver.switch_to_window(self._window_handle) |
| + self._browser_backend.driver.close() |
| + |
| + def WaitForDocumentReadyStateToBeComplete(self, timeout=None): |
| + # TODO Double check. |
| + pass |
| + |
| + def WaitForDocumentReadyStateToBeInteractiveOrBetter(self, timeout=None): |
| + # TODO Double check. |
| + pass |
| + |
| + @property |
| + def screenshot_supported(self): |
| + return True |
| + |
| + def Screenshot(self, timeout=None): |
| + # TODO |
| + raise NotImplementedError() |
| + |
| + @property |
| + def message_output_stream(self): |
| + raise NotImplementedError() |
| + |
| + @message_output_stream.setter |
| + def message_output_stream(self, stream): |
| + raise NotImplementedError() |
| + |
| + def GetDOMStats(self, timeout=None): |
| + raise NotImplementedError() |
| + |
| + def PerformActionAndWaitForNavigate(self, action_function, _): |
| + # TODO Double check. |
| + action_function() |
| + |
| + def Navigate(self, url, script_to_evaluate_on_commit=None, timeout=None): |
| + if script_to_evaluate_on_commit: |
| + raise NotImplementedError('script_to_evaluate_on_commit is NOT supported') |
| + self._browser_backend.driver.switch_to_window(self._window_handle) |
| + if timeout: |
| + self._browser_backend.driver.set_page_load_timeout(timeout * 1000) |
| + self._browser_backend.driver.get(url) |
| + |
| + def GetCookieByName(self, name, timeout=None): |
| + # TODO |timeout| is not supported. |
| + if timeout: |
| + logging.warning('timeout is not supported') |
| + self._browser_backend.driver.switch_to_window(self._window_handle) |
| + cookie = self._browser_backend.driver.get_cookie(name) |
| + if cookie: |
| + return cookie['value'] |
| + return None |
| + |
| + def ExecuteJavaScript(self, expr, timeout=None): |
| + self._browser_backend.driver.switch_to_window(self._window_handle) |
| + if timeout: |
| + self._browser_backend.driver.set_script_timeout(timeout * 1000) |
| + self._browser_backend.driver.execute_script(expr) |
| + |
| + def EvaluateJavaScript(self, expr, timeout=None): |
| + self._browser_backend.driver.switch_to_window(self._window_handle) |
| + if timeout: |
| + self._browser_backend.driver.set_page_load_timeout(timeout * 1000) |
|
tonyg
2013/07/26 18:21:07
Should this be set_script_timeout instead of set_p
chrisgao (Use stgao instead)
2013/07/30 02:06:49
Whoops..
After double check on the webdriver prot
|
| + return self._browser_backend.driver.execute_script( |
| + 'return eval(\'%s\')' % expr.replace('\'', '\\\'').replace('\n', '')) |
|
tonyg
2013/07/26 18:21:07
Maybe we should replace '\n' with ' '.
chrisgao (Use stgao instead)
2013/07/30 02:06:49
Done.
|
| + |
| + @property |
| + def timeline_model(self): |
| + raise NotImplementedError() |
| + |
| + def StartTimelineRecording(self): |
| + raise NotImplementedError() |
| + |
| + def StopTimelineRecording(self): |
| + raise NotImplementedError() |
| + |
| + def ClearCache(self): |
| + raise NotImplementedError() |