1# Copyright 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5
6class PossibleApp(object):
7  """A factory class that can be used to create a running instance of app.
8
9  Call Create() to launch the app and begin manipulating it.
10  """
11
12  def __init__(self, app_type, target_os):
13    self._app_type = app_type
14    self._target_os = target_os
15    self._platform = None
16    self._platform_backend = None
17
18  def __repr__(self):
19    return 'PossibleApp(app_type=%s)' % self.app_type
20
21  @property
22  def app_type(self):
23    return self._app_type
24
25  @property
26  def target_os(self):
27    """Target OS, the app will run on."""
28    return self._target_os
29
30  @property
31  def platform(self):
32    self._InitPlatformIfNeeded()
33    return self._platform
34
35  def _InitPlatformIfNeeded(self):
36    raise NotImplementedError()
37
38  def Create(self, finder_options):
39    raise NotImplementedError()
40
41  def SupportsOptions(self, finder_options):
42    """Tests for extension support."""
43    raise NotImplementedError()
44