Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / core / backends / browser_backend.py
index ac46b4f..26b5df4 100644 (file)
@@ -2,37 +2,37 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-from telemetry.core import util
+from telemetry import decorators
+from telemetry.core import platform
 from telemetry.core import web_contents
+from telemetry.core.forwarders import do_nothing_forwarder
 
 
 class ExtensionsNotSupportedException(Exception):
   pass
 
+
 class BrowserBackend(object):
   """A base class for browser backends."""
 
-  WEBPAGEREPLAY_HOST = '127.0.0.1'
-
-  def __init__(self, is_content_shell, supports_extensions, browser_options,
-               tab_list_backend):
+  def __init__(self, supports_extensions, browser_options, tab_list_backend):
     assert browser_options.browser_type
     self.browser_type = browser_options.browser_type
-    self.is_content_shell = is_content_shell
     self._supports_extensions = supports_extensions
     self.browser_options = browser_options
     self._browser = None
-    self._tab_list_backend = tab_list_backend(self)
+    self._tab_list_backend_class = tab_list_backend
+    self._forwarder_factory = None
 
   def AddReplayServerOptions(self, extra_wpr_args):
     pass
 
   def SetBrowser(self, browser):
     self._browser = browser
-    self._tab_list_backend.Init()
-    if (self.browser_options.netsim and
-        not browser.platform.CanLaunchApplication('ipfw')):
-      browser.platform.InstallApplication('ipfw')
+    if self.browser_options.netsim:
+      host_platform = platform.GetHostPlatform()
+      if not host_platform.CanLaunchApplication('ipfw'):
+        host_platform.InstallApplication('ipfw')
 
   @property
   def browser(self):
@@ -52,8 +52,9 @@ class BrowserBackend(object):
     raise NotImplementedError()
 
   @property
+  @decorators.Cache
   def tab_list_backend(self):
-    return self._tab_list_backend
+    return self._tab_list_backend_class(self)
 
   @property
   def supports_tracing(self):
@@ -63,22 +64,29 @@ class BrowserBackend(object):
   def supports_system_info(self):
     return False
 
-  def StartTracing(self, custom_categories=None,
+  @property
+  def forwarder_factory(self):
+    if not self._forwarder_factory:
+      self._forwarder_factory = do_nothing_forwarder.DoNothingForwarderFactory()
+    return self._forwarder_factory
+
+  def StartTracing(self, trace_options, custom_categories=None,
                    timeout=web_contents.DEFAULT_WEB_CONTENTS_TIMEOUT):
     raise NotImplementedError()
 
+  @property
+  def is_tracing_running(self):
+    return False
+
   def StopTracing(self):
     raise NotImplementedError()
 
-  def GetRemotePort(self, _):
-    return util.GetUnreservedAvailableLocalPort()
+  def GetRemotePort(self, port):
+    return port
 
   def Start(self):
     raise NotImplementedError()
 
-  def CreateForwarder(self, *port_pairs):
-    raise NotImplementedError()
-
   def IsBrowserRunning(self):
     raise NotImplementedError()
 
@@ -90,16 +98,3 @@ class BrowserBackend(object):
 
   def GetSystemInfo(self):
     raise NotImplementedError()
-
-
-class DoNothingForwarder(object):
-  def __init__(self, *port_pairs):
-    self._host_port = port_pairs[0].local_port
-
-  @property
-  def url(self):
-    assert self._host_port
-    return 'http://127.0.0.1:%i' % self._host_port
-
-  def Close(self):
-    self._host_port = None