move JS_WORLD_MAP to usertypes, circular import

This commit is contained in:
toofar 2023-04-30 15:00:43 +12:00
parent acb58804c3
commit 025757a9c1
3 changed files with 18 additions and 17 deletions

View File

@ -469,7 +469,7 @@ def _inject_greasemonkey_scripts(profile, scripts):
continue
except ValueError:
try:
world = qtutils.JS_WORLD_MAP[usertypes.JsWorld[script.jsworld.lower()]]
world = usertypes.JS_WORLD_MAP[usertypes.JsWorld[script.jsworld.lower()]]
except KeyError:
log.greasemonkey.error(
f"script {script.name} has invalid value for '@qute-js-world'"

View File

@ -25,7 +25,6 @@ Module attributes:
MINVALS: A dictionary of C/Qt types (as string) mapped to their minimum
value.
MAX_WORLD_ID: The highest world ID allowed by QtWebEngine.
JS_WORLD_MAP: Mapping form usertypes.JsWorld to QWebEngineScript.ScriptWorldId
"""
@ -42,7 +41,6 @@ from qutebrowser.qt.core import (qVersion, QEventLoop, QDataStream, QByteArray,
QIODevice, QFileDevice, QSaveFile, QT_VERSION_STR,
PYQT_VERSION_STR, QObject, QUrl, QLibraryInfo)
from qutebrowser.qt.gui import QColor
from qutebrowser.qt.webenginecore import QWebEngineScript
try:
from qutebrowser.qt.webkit import qWebKitVersion
except ImportError: # pragma: no cover
@ -119,18 +117,6 @@ def version_check(version: str,
MAX_WORLD_ID = 256
# Mapping worlds from usertypes.JsWorld to QWebEngineScript world IDs.
if not QWebEngineScript:
JS_WORLD_MAP = {}
else:
JS_WORLD_MAP = {
usertypes.JsWorld.main: QWebEngineScript.ScriptWorldId.MainWorld,
usertypes.JsWorld.application: QWebEngineScript.ScriptWorldId.ApplicationWorld,
usertypes.JsWorld.user: QWebEngineScript.ScriptWorldId.UserWorld,
usertypes.JsWorld.jseval: QWebEngineScript.ScriptWorldId.UserWorld + 1,
}
def is_new_qtwebkit() -> bool:
"""Check if the given version is a new QtWebKit."""
assert qWebKitVersion is not None

View File

@ -25,8 +25,11 @@ import enum
import dataclasses
from typing import Optional, Sequence, TypeVar, Union
from qutebrowser.qt.core import pyqtSignal, pyqtSlot, QObject, QTimer
from qutebrowser.qt.core import QUrl
from qutebrowser.qt.core import pyqtSignal, pyqtSlot, QObject, QTimer, QUrl
try:
from qutebrowser.qt.webenginecore import QWebEngineScript
except ImportError:
QWebEngineScript = None
from qutebrowser.utils import log, qtutils, utils
@ -316,6 +319,18 @@ class JsWorld(enum.Enum):
jseval = enum.auto() #: World used for the jseval-command.
# Mapping worlds from JsWorld to QWebEngineScript world IDs.
if QWebEngineScript: # type: ignore[truthy-function]
JS_WORLD_MAP = {
JsWorld.main: QWebEngineScript.ScriptWorldId.MainWorld,
JsWorld.application: QWebEngineScript.ScriptWorldId.ApplicationWorld,
JsWorld.user: QWebEngineScript.ScriptWorldId.UserWorld,
JsWorld.jseval: QWebEngineScript.ScriptWorldId.UserWorld + 1,
}
else:
JS_WORLD_MAP = {} # type: ignore[unreachable]
class JsLogLevel(enum.Enum):
"""Log level of a JS message.