1# Copyright (c) 2013 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"""Class representing instrumentation test apk and jar."""
6
7import os
8
9from pylib.instrumentation import test_jar
10from pylib.utils import apk_helper
11
12
13class TestPackage(test_jar.TestJar):
14  def __init__(self, apk_path, jar_path, test_support_apk_path):
15    test_jar.TestJar.__init__(self, jar_path)
16
17    if not os.path.exists(apk_path):
18      raise Exception('%s not found, please build it' % apk_path)
19    self._apk_path = apk_path
20    self._apk_name = os.path.splitext(os.path.basename(apk_path))[0]
21    self._package_name = apk_helper.GetPackageName(self._apk_path)
22    self._test_support_apk_path = test_support_apk_path
23
24  def GetApkPath(self):
25    """Returns the absolute path to the APK."""
26    return self._apk_path
27
28  def GetApkName(self):
29    """Returns the name of the apk without the suffix."""
30    return self._apk_name
31
32  def GetPackageName(self):
33    """Returns the package name of this APK."""
34    return self._package_name
35
36  # Override.
37  def Install(self, device):
38    device.Install(self.GetApkPath())
39    if (self._test_support_apk_path and
40        os.path.exists(self._test_support_apk_path)):
41      device.Install(self._test_support_apk_path)
42
43