Greasemonkey: move inject_userscripts into webenginesettings

This commit is contained in:
Jimmy 2017-10-04 21:24:16 +13:00
parent edf737ff7d
commit c1b912f567
2 changed files with 35 additions and 38 deletions

View File

@ -244,6 +244,39 @@ def _init_profiles():
private_profile.setSpellCheckEnabled(True)
def inject_userscripts():
"""Register user javascript files with the global profiles."""
# The greasemonkey metadata block support in qtwebengine only starts at 5.8
# Otherwise have to handle injecting the scripts into the page at very
# early load, probs same place in view as the enableJS check.
if not qtutils.version_check('5.8'):
return
# Since we are inserting scripts into profile.scripts they won't
# just get replaced by new gm scripts like if we were injecting them
# ourselves so we need to remove all gm scripts, while not removing
# any other stuff that might have been added. Like the one for
# stylsheets.
# Could either use a different world for gm scripts, check for gm metadata
# values (would mean no non-gm userscripts), or check the code for
# _qute_script_id
for profile in [default_profile, private_profile]:
scripts = profile.scripts()
for script in scripts.toList():
if script.worldId() == QWebEngineScript.MainWorld:
scripts.remove(script)
for profile in [default_profile, private_profile]:
scripts = profile.scripts()
greasemonkey = objreg.get('greasemonkey')
for script in greasemonkey.all_scripts():
new_script = QWebEngineScript()
new_script.setWorldId(QWebEngineScript.MainWorld)
new_script.setSourceCode(script.code())
log.greasemonkey.debug('adding script: %s', new_script.name())
scripts.insert(new_script)
def init(args):
"""Initialize the global QWebSettings."""
if args.enable_webengine_inspector:

View File

@ -70,8 +70,8 @@ def init():
objreg.register('webengine-download-manager', download_manager)
greasemonkey = objreg.get('greasemonkey')
greasemonkey.scripts_reloaded.connect(inject_userscripts)
inject_userscripts()
greasemonkey.scripts_reloaded.connect(webenginesettings.inject_userscripts)
webenginesettings.inject_userscripts()
# Mapping worlds from usertypes.JsWorld to QWebEngineScript world IDs.
@ -83,42 +83,6 @@ _JS_WORLD_MAP = {
}
def inject_userscripts():
"""Register user javascript files with the global profiles."""
# The greasemonkey metadata block support in qtwebengine only starts at 5.8
# Otherwise have to handle injecting the scripts into the page at very
# early load, probs same place in view as the enableJS check.
if not qtutils.version_check('5.8'):
return
# Since we are inserting scripts into profile.scripts they won't
# just get replaced by new gm scripts like if we were injecting them
# ourselves so we need to remove all gm scripts, while not removing
# any other stuff that might have been added. Like the one for
# stylsheets.
# Could either use a different world for gm scripts, check for gm metadata
# values (would mean no non-gm userscripts), or check the code for
# _qute_script_id
for profile in [webenginesettings.default_profile,
webenginesettings.private_profile]:
scripts = profile.scripts()
for script in scripts.toList():
if script.worldId() == QWebEngineScript.MainWorld:
scripts.remove(script)
# Should we be adding to private profile too?
for profile in [webenginesettings.default_profile,
webenginesettings.private_profile]:
scripts = profile.scripts()
greasemonkey = objreg.get('greasemonkey')
for script in greasemonkey.all_scripts():
new_script = QWebEngineScript()
new_script.setWorldId(QWebEngineScript.MainWorld)
new_script.setSourceCode(script.code())
log.greasemonkey.debug('adding script: %s', new_script.name)
scripts.insert(new_script)
class WebEngineAction(browsertab.AbstractAction):
"""QtWebEngine implementations related to web actions."""