from marionette_harness import MarionetteTestCase, WindowManagerMixin


class ChromeTests(WindowManagerMixin, MarionetteTestCase):
    def setUp(self):
        super(ChromeTests, self).setUp()

    def tearDown(self):
        self.close_all_windows()
        super(ChromeTests, self).tearDown()

    def test_hang_until_timeout(self):
        with self.marionette.using_context("chrome"):
            new_window = self.open_window()
        self.marionette.switch_to_window(new_window)

        try:
            try:
                # Raise an exception type which should not be thrown by Marionette
                # while running this test. Otherwise it would mask eg. IOError as
                # thrown for a socket timeout.
                raise NotImplementedError(
                    "Exception should not cause a hang when "
                    "closing the chrome window in content "
                    "context"
                )
            finally:
                self.marionette.close_chrome_window()
                self.marionette.switch_to_window(self.start_window)
        except NotImplementedError:
            pass
