text: # This Source Code Form is subject to the terms of the Mozilla Public
  # License, v. 2.0. If a copy of the MPL was not distributed with this
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
  
  from marionette import SkipTest
  try:
      from marionette.wait import Wait
  except:
      from marionette_driver.wait import Wait
  
  from gaiatest import GaiaTestCase
  from gaiatest.apps.phone.regions.call_screen import CallScreen
  
  
  class TestReceiveCallScreenLocked(GaiaTestCase):
  
      def setUp(self):
          try:
              self.testvars['plivo']
          except KeyError:
              raise SkipTest('Plivo account details not present in test variables')
  
          GaiaTestCase.setUp(self)
  
      def test_receive_call_with_locked_screen(self):
          """
          Verify that the User can receive a call whilst the device is locked
          https://moztrap.mozilla.org/manage/case/1300/
          """
          self.call_uuid = False
  
          from gaiatest.utils.plivo.plivo_util import PlivoUtil
          self.plivo = PlivoUtil(
              self.testvars['plivo']['auth_id'],
              self.testvars['plivo']['auth_token'],
              self.testvars['plivo']['phone_number']
          )
  
          self.device.lock()
          self.call_uuid = self.plivo.make_call(
              to_number=self.environment.phone_numbers[0].replace('+', ''))
  
          call_screen = CallScreen(self.marionette)
          call_screen.wait_for_incoming_call()
  
          call_screen.reject_call()
          self.plivo.wait_for_call_completed(self.call_uuid)
          self.call_uuid = None
  
          self.assertTrue(self.device.is_locked)
  
      def tearDown(self):
          # Switch back to main frame before Marionette loses track bug #840931
          self.marionette.switch_to_frame()
  
          # In case an assertion fails this will still kill the call
          # An open call creates problems for future tests
          self.data_layer.kill_active_call()
  
          # Also ask Plivo to kill the call if needed
          if self.call_uuid:
              self.plivo.hangup_call(self.call_uuid)
  
          GaiaTestCase.tearDown(self)
  