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)
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)
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)
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)
def close(self) -> None: """Close the SQL connection.""" database = self.qt_database() database.close() sip.delete(database) QSqlDatabase.removeDatabase(self._path)