def __init__(self, *, win_id, private, parent=None): if private: assert not qtutils.is_single_process() super().__init__(parent) self.widget = tabwidget.TabWidget(win_id, parent=self) self._win_id = win_id self._tab_insert_idx_left = 0 self._tab_insert_idx_right = -1 self.shutting_down = False self.widget.tabCloseRequested.connect(self.on_tab_close_requested) self.widget.new_tab_requested.connect(self.tabopen) self.widget.currentChanged.connect(self._on_current_changed) self.cur_fullscreen_requested.connect(self.widget.tabBar().maybe_hide) self.widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) # WORKAROUND for https://bugreports.qt.io/browse/QTBUG-65223 if qtutils.version_check('5.10', compiled=False): self.cur_load_finished.connect(self._leave_modes_on_load) else: self.cur_load_started.connect(self._leave_modes_on_load) # This init is never used, it is immediately thrown away in the next # line. self._undo_stack = collections.deque() self._update_stack_size() self._filter = signalfilter.SignalFilter(win_id, self) self._now_focused = None self.search_text = None self.search_options = {} self._local_marks = {} self._global_marks = {} self.default_window_icon = self.widget.window().windowIcon() self.is_private = private config.instance.changed.connect(self._on_config_changed)
def load(self, name, temp=False): """Load a named session. Args: name: The name of the session to load. temp: If given, don't set the current session. """ path = self._get_session_path(name, check_exists=True) try: with open(path, encoding='utf-8') as f: data = utils.yaml_load(f) except (OSError, UnicodeDecodeError, yaml.YAMLError) as e: raise SessionError(e) log.sessions.debug("Loading session {} from {}...".format(name, path)) if data is None: raise SessionError("Got empty session file") if qtutils.is_single_process(): if any(win.get('private') for win in data['windows']): raise SessionError("Can't load a session with private windows " "in single process mode.") for win in data['windows']: self._load_window(win) if data['windows']: self.did_load = True if not name.startswith('_') and not temp: self.current = name
def _process_args(args): """Open startpage etc. and process commandline args.""" if not args.override_restore: sessions.load_default(args.session) if not sessions.session_manager.did_load: log.init.debug("Initializing main window...") if config.val.content.private_browsing and qtutils.is_single_process(): err = Exception("Private windows are unavailable with " "the single-process process model.") error.handle_fatal_exc(err, 'Cannot start in private mode', no_err_windows=args.no_err_windows) sys.exit(usertypes.Exit.err_init) window = mainwindow.MainWindow(private=None) if not args.nowindow: window.show() q_app.setActiveWindow(window) process_pos_args(args.command) _open_startpage() _open_special_pages(args) delta = datetime.datetime.now() - earlyinit.START_TIME log.init.debug("Init finished after {}s".format(delta.total_seconds()))
def __init__(self, *, win_id, private, parent=None): if private: assert not qtutils.is_single_process() super().__init__(parent) self.widget = tabwidget.TabWidget(win_id, parent=self) self._win_id = win_id self._tab_insert_idx_left = 0 self._tab_insert_idx_right = -1 self.is_shutting_down = False self.widget.tabCloseRequested.connect(self.on_tab_close_requested) self.widget.new_tab_requested.connect(self.tabopen) self.widget.currentChanged.connect(self._on_current_changed) self.cur_fullscreen_requested.connect(self.widget.tabBar().maybe_hide) self.widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) # load_finished instead of load_started as WORKAROUND for # https://bugreports.qt.io/browse/QTBUG-65223 self.cur_load_finished.connect(self._leave_modes_on_load) # This init is never used, it is immediately thrown away in the next # line. self.undo_stack: UndoStackType = collections.deque() self._update_stack_size() self._filter = signalfilter.SignalFilter(win_id, self) self._now_focused = None self.search_text = None self.search_options: Mapping[str, Any] = {} self._local_marks: MutableMapping[QUrl, MutableMapping[str, int]] = {} self._global_marks: MutableMapping[str, Tuple[int, QUrl]] = {} self.default_window_icon = self.widget.window().windowIcon() self.is_private = private self.tab_deque = TabDeque() config.instance.changed.connect(self._on_config_changed) quitter.instance.shutting_down.connect(self.shutdown)
def __init__(self, *, win_id, private, parent=None): if private: assert not qtutils.is_single_process() super().__init__(parent) self.widget = tabwidget.TabWidget(win_id, parent=self) self._win_id = win_id self._tab_insert_idx_left = 0 self._tab_insert_idx_right = -1 self.shutting_down = False self.widget.tabCloseRequested.connect(self.on_tab_close_requested) self.widget.new_tab_requested.connect(self.tabopen) self.widget.currentChanged.connect(self.on_current_changed) self.cur_fullscreen_requested.connect(self.widget.tabBar().maybe_hide) self.widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) # WORKAROUND for https://bugreports.qt.io/browse/QTBUG-65223 if qtutils.version_check('5.10', compiled=False): self.cur_load_finished.connect(self._leave_modes_on_load) else: self.cur_load_started.connect(self._leave_modes_on_load) self._undo_stack = [] self._filter = signalfilter.SignalFilter(win_id, self) self._now_focused = None self.search_text = None self.search_options = {} self._local_marks = {} self._global_marks = {} self.default_window_icon = self.widget.window().windowIcon() self.is_private = private config.instance.changed.connect(self._on_config_changed)
def __init__(self, *, win_id, private, parent=None): if private: assert not qtutils.is_single_process() super().__init__(parent) self.widget = tabwidget.TabWidget(win_id, parent=self) self._win_id = win_id self._tab_insert_idx_left = 0 self._tab_insert_idx_right = -1 self.shutting_down = False self.widget.tabCloseRequested.connect(self.on_tab_close_requested) self.widget.new_tab_requested.connect(self.tabopen) self.widget.currentChanged.connect(self.on_current_changed) self.cur_load_started.connect(self.on_cur_load_started) self.cur_fullscreen_requested.connect(self.widget.tabBar().maybe_hide) self.widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self._undo_stack = [] self._filter = signalfilter.SignalFilter(win_id, self) self._now_focused = None self.search_text = None self.search_options = {} self._local_marks = {} self._global_marks = {} self.default_window_icon = self.widget.window().windowIcon() self.is_private = private config.instance.changed.connect(self._on_config_changed)
def init_private_profile(): """Init the private QWebEngineProfile.""" global private_profile if qtutils.is_single_process(): return private_profile = QWebEngineProfile() assert private_profile.isOffTheRecord() _init_profile(private_profile)
def init_private_profile(): """Init the private QWebEngineProfile.""" global private_profile if not qtutils.is_single_process(): private_profile = QWebEngineProfile() private_profile.setter = ProfileSetter( # type: ignore[attr-defined] private_profile) assert private_profile.isOffTheRecord() private_profile.setter.init_profile()
def _init_profiles(): """Init the two used QWebEngineProfiles.""" global default_profile, private_profile, default_user_agent default_profile = QWebEngineProfile.defaultProfile() default_user_agent = default_profile.httpUserAgent() default_profile.setter = ProfileSetter(default_profile) default_profile.setCachePath(os.path.join(standarddir.cache(), 'webengine')) default_profile.setPersistentStoragePath( os.path.join(standarddir.data(), 'webengine')) default_profile.setter.init_profile() default_profile.setter.set_persistent_cookie_policy() if not qtutils.is_single_process(): private_profile = QWebEngineProfile() private_profile.setter = ProfileSetter(private_profile) assert private_profile.isOffTheRecord() private_profile.setter.init_profile()
def init_private_profile(): """Init the private QWebEngineProfile.""" global private_profile if not qtutils.is_single_process(): private_profile = QWebEngineProfile() private_profile.setter = ProfileSetter( # type: ignore[attr-defined] private_profile) assert private_profile.isOffTheRecord() private_profile.setter.init_profile() _qute_scheme_handler.install(private_profile) _req_interceptor.install(private_profile) _download_manager.install(private_profile) cookies.install_filter(private_profile) # Clear visited links on web history clear history.web_history.history_cleared.connect( private_profile.clearAllVisitedLinks) history.web_history.url_cleared.connect( lambda url, profile=private_profile: profile.clearVisitedLinks( [url]))
def _process_args(args): """Open startpage etc. and process commandline args.""" if not args.override_restore: _load_session(args.session) session_manager = objreg.get('session-manager') if not session_manager.did_load: log.init.debug("Initializing main window...") if config.val.content.private_browsing and qtutils.is_single_process(): err = Exception("Private windows are unavailable with " "the single-process process model.") error.handle_fatal_exc(err, args, 'Cannot start in private mode') sys.exit(usertypes.Exit.err_init) window = mainwindow.MainWindow(private=None) if not args.nowindow: window.show() q_app.setActiveWindow(window) process_pos_args(args.command) _open_startpage() _open_special_pages(args) delta = datetime.datetime.now() - earlyinit.START_TIME log.init.debug("Init finished after {}s".format(delta.total_seconds()))
def test_is_single_process(monkeypatch, stubs, backend, arguments, single_process): qapp = stubs.FakeQApplication(arguments=arguments) monkeypatch.setattr(qtutils, 'QApplication', qapp) monkeypatch.setattr(qtutils.objects, 'backend', backend) assert qtutils.is_single_process() == single_process