예제 #1
0
def webengine_tab(web_tab_setup, qtbot, redirect_webengine_data,
                  tabbed_browser_stubs, mode_manager, widget_container,
                  monkeypatch):
    tabwidget = tabbed_browser_stubs[0].widget
    tabwidget.current_index = 0
    tabwidget.index_of = 0

    webenginetab = pytest.importorskip(
        'qutebrowser.browser.webengine.webenginetab')

    tab = webenginetab.WebEngineTab(win_id=0,
                                    mode_manager=mode_manager,
                                    private=False)
    widget_container.set_widget(tab)

    yield tab

    # If a page is still loading here, _on_load_finished could get called
    # during teardown when session_manager_stub is already deleted.
    tab.stop()

    # Make sure the tab shuts itself down properly
    tab.private_api.shutdown()

    # If we wait for the GC to clean things up, there's a segfault inside
    # QtWebEngine sometimes (e.g. if we only run
    # tests/unit/browser/test_caret.py).
    # However, with Qt < 5.12, doing this here will lead to an immediate
    # segfault...
    monkeypatch.undo()  # version_check could be patched
    if qtutils.version_check('5.12'):
        sip.delete(tab._widget)
예제 #2
0
def webengine_tab(web_tab_setup, qtbot, redirect_webengine_data,
                  tabbed_browser_stubs, mode_manager, widget_container,
                  monkeypatch):
    monkeypatch.setattr(objects, 'backend', usertypes.Backend.QtWebEngine)

    tabwidget = tabbed_browser_stubs[0].widget
    tabwidget.current_index = 0
    tabwidget.index_of = 0

    webenginetab = pytest.importorskip(
        'qutebrowser.browser.webengine.webenginetab')

    tab = webenginetab.WebEngineTab(win_id=0, mode_manager=mode_manager,
                                    private=False)
    tab.backend = usertypes.Backend.QtWebEngine
    widget_container.set_widget(tab)

    yield tab

    # If a page is still loading here, _on_load_finished could get called
    # during teardown when session_manager_stub is already deleted.
    tab.stop()

    # Make sure the tab shuts itself down properly
    tab.private_api.shutdown()

    # If we wait for the GC to clean things up, there's a segfault inside
    # QtWebEngine sometimes (e.g. if we only run
    # tests/unit/browser/test_caret.py).
    sip.delete(tab._widget)
예제 #3
0
    def __init__(self, *, tabdata, win_id, private, parent=None):
        super().__init__(parent)
        self._win_id = win_id
        self._tabdata = tabdata

        theme_color = self.style().standardPalette().color(QPalette.Base)
        if private:
            if webenginesettings.private_profile is None:
                raise AssertionError
            profile = webenginesettings.private_profile
            if not profile.isOffTheRecord():
                raise AssertionError
        else:
            profile = webenginesettings.default_profile
        page = WebEnginePage(theme_color=theme_color,
                             profile=profile,
                             parent=self)
        self.setPage(page)

        if qtutils.version_check('5.11', compiled=False):
            # Set a PseudoLayout as a WORKAROUND for
            # https://bugreports.qt.io/browse/QTBUG-68224
            # and other related issues.
            sip.delete(self.layout())
            self._layout = miscwidgets.PseudoLayout(self)
예제 #4
0
    def __init__(self, *, tabdata, win_id, private, parent=None):
        super().__init__(parent)
        self._win_id = win_id
        self._tabdata = tabdata

        theme_color = self.style().standardPalette().color(QPalette.Base)
        if private:
            profile = webenginesettings.private_profile
            assert profile.isOffTheRecord()
        else:
            profile = webenginesettings.default_profile
        page = WebEnginePage(theme_color=theme_color, profile=profile,
                             parent=self)
        self.setPage(page)

        if qtutils.version_check('5.11', compiled=False):
            # Set a PseudoLayout as a WORKAROUND for
            # https://bugreports.qt.io/browse/QTBUG-68224
            # and other related issues.
            sip.delete(self.layout())
            self._layout = miscwidgets.PseudoLayout(self)
예제 #5
0
 def close(self) -> None:
     """Close the SQL connection."""
     database = self.qt_database()
     database.close()
     sip.delete(database)
     QSqlDatabase.removeDatabase(self._path)