text: # Copyright 2014 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 unittest
  
  from systrace import util
  
  from devil.android import device_utils
  from devil.android.sdk import intent
  from devil.android.sdk import keyevent
  
  
  class BaseAgentTest(unittest.TestCase):
    def setUp(self):
      devices = device_utils.DeviceUtils.HealthyDevices()
      self.browser = 'stable'
      self.package_info = util.get_supported_browsers()[self.browser]
      self.device = devices[0]
  
      curr_browser = self.GetChromeProcessID()
      if curr_browser == None:
        self.StartBrowser()
  
    def tearDown(self):
      # Stop the browser after each test to ensure that it doesn't interfere
      # with subsequent tests, e.g. by holding the devtools socket open.
      self.device.ForceStop(self.package_info.package)
  
    def StartBrowser(self):
      # Turn on the device screen.
      self.device.SetScreen(True)
  
      # Unlock device.
      self.device.SendKeyEvent(keyevent.KEYCODE_MENU)
  
      # Start browser.
      self.device.StartActivity(
        intent.Intent(activity=self.package_info.activity,
                      package=self.package_info.package,
                      data='about:blank',
                      extras={'create_new_tab': True}),
        blocking=True, force_stop=True)
  
    def GetChromeProcessID(self):
      return self.device.GetApplicationPids(
          self.package_info.package, at_most_one=True)
  