133259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck# Copyright 2012 The Chromium Authors. All rights reserved.
233259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck# Use of this source code is governed by a BSD-style license that can be
333259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck# found in the LICENSE file.
433259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
533259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reckfrom py_trace_event import trace_event
633259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
733259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
833259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reckclass AppBackend(object):
933259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
1033259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  __metaclass__ = trace_event.TracedMetaClass
1133259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
1233259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def __init__(self, app_type, platform_backend):
1333259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    super(AppBackend, self).__init__()
1433259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    self._app = None
1533259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    self._app_type = app_type
1633259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    self._platform_backend = platform_backend
1733259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
1833259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def __del__(self):
1933259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    self.Close()
2033259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
2133259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def SetApp(self, app):
2233259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    self._app = app
2333259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
2433259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  @property
2533259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def app(self):
2633259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    return self._app
2733259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
2833259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  @property
2933259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def app_type(self):
3033259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    return self._app_type
3133259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
3233259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  @property
3333259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def pid(self):
3433259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    raise NotImplementedError
3533259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
3633259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  @property
3733259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def platform_backend(self):
3833259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    return self._platform_backend
3933259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
4033259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def Start(self):
4133259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    raise NotImplementedError
4233259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
4333259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def Foreground(self):
4433259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    # TODO(catapult:#2194): Remove the unnecessary pass below when the method
4533259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    # has been implemented on all concrete subclasses.
4633259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    pass  # pylint: disable=unnecessary-pass
4733259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    raise NotImplementedError
4833259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
4933259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def Background(self):
5033259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    raise NotImplementedError
5133259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
5233259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def Close(self):
5333259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    raise NotImplementedError
5433259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
5533259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def IsAppRunning(self):
5633259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    raise NotImplementedError
5733259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
5833259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def GetStandardOutput(self):
5933259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    raise NotImplementedError
6033259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
6133259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def GetStackTrace(self):
6233259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    raise NotImplementedError
6333259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck
6433259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck  def GetMostRecentMinidumpPath(self):
6533259e44c8229f70ffe0cf3bb5ca9375c4feb2f9John Reck    raise NotImplementedError
66