1
mirror of https://invent.kde.org/network/falkon.git synced 2024-09-21 17:52:10 +02:00

GreaseMonkey: Fix removing/updating userscripts

This commit is contained in:
David Rosca 2015-05-27 19:48:40 +02:00
parent 431610215d
commit 9c7bfb1c94
4 changed files with 32 additions and 16 deletions

View File

@ -138,7 +138,8 @@ void GM_Manager::enableScript(GM_Script* script)
script->setEnabled(true);
m_disabledScripts.removeOne(script->fullName());
mApp->webProfile()->scripts().insert(script->webScript());
QWebEngineScriptCollection &collection = mApp->webProfile()->scripts();
collection.insert(script->webScript());
}
void GM_Manager::disableScript(GM_Script* script)
@ -146,7 +147,8 @@ void GM_Manager::disableScript(GM_Script* script)
script->setEnabled(false);
m_disabledScripts.append(script->fullName());
mApp->webProfile()->scripts().remove(script->webScript());
QWebEngineScriptCollection &collection = mApp->webProfile()->scripts();
collection.remove(collection.findScript(script->fullName()));
}
bool GM_Manager::addScript(GM_Script* script)
@ -156,7 +158,10 @@ bool GM_Manager::addScript(GM_Script* script)
}
m_scripts.append(script);
mApp->webProfile()->scripts().insert(script->webScript());
connect(script, &GM_Script::scriptChanged, this, &GM_Manager::scriptChanged);
QWebEngineScriptCollection &collection = mApp->webProfile()->scripts();
collection.insert(script->webScript());
emit scriptsChanged();
return true;
@ -169,7 +174,9 @@ bool GM_Manager::removeScript(GM_Script* script, bool removeFile)
}
m_scripts.removeOne(script);
mApp->webProfile()->scripts().insert(script->webScript());
QWebEngineScriptCollection &collection = mApp->webProfile()->scripts();
collection.remove(collection.findScript(script->fullName()));
m_disabledScripts.removeOne(script->fullName());
@ -229,6 +236,17 @@ void GM_Manager::load()
//m_jsObject->setSettingsFile(m_settingsPath + QL1S("/extensions.ini"));
}
void GM_Manager::scriptChanged()
{
GM_Script *script = qobject_cast<GM_Script*>(sender());
if (!script)
return;
QWebEngineScriptCollection &collection = mApp->webProfile()->scripts();
collection.remove(collection.findScript(script->fullName()));
collection.insert(script->webScript());
}
bool GM_Manager::canRunOnScheme(const QString &scheme)
{
return (scheme == QLatin1String("http") || scheme == QLatin1String("https")

View File

@ -71,6 +71,7 @@ public slots:
private slots:
void load();
void scriptChanged();
private:
QString m_settingsPath;

View File

@ -23,6 +23,7 @@
#include <QFile>
#include <QStringList>
#include <QWebEngineScript>
#include <QCryptographicHash>
GM_Script::GM_Script(GM_Manager* manager, const QString &filePath)
@ -135,7 +136,13 @@ QString GM_Script::fileName() const
QWebEngineScript GM_Script::webScript() const
{
return m_webScript;
QWebEngineScript script;
script.setName(fullName());
script.setInjectionPoint(startAt() == DocumentStart ? QWebEngineScript::DocumentCreation : QWebEngineScript::DocumentReady);
script.setWorldId(QWebEngineScript::MainWorld);
script.setRunsOnSubFrames(!m_noframes);
script.setSourceCode(QSL("%1\n%2\n%3").arg(m_metadata, m_manager->bootstrapScript(), m_script));
return script;
}
bool GM_Script::match(const QString &urlString)
@ -285,11 +292,4 @@ void GM_Script::parseScript()
const QString gmValues = m_manager->valuesScript().arg(nspace);
m_script = QSL("(function(){%1\n%2\n%3\n})();").arg(gmValues, m_manager->requireScripts(requireList), script);
// Create QWebEngineScript
m_webScript.setName(fullName());
m_webScript.setInjectionPoint(startAt() == DocumentStart ? QWebEngineScript::DocumentCreation : QWebEngineScript::DocumentReady);
m_webScript.setWorldId(QWebEngineScript::MainWorld);
m_webScript.setRunsOnSubFrames(!m_noframes);
m_webScript.setSourceCode(QSL("%1\n%2\n%3").arg(m_metadata, m_manager->bootstrapScript(), m_script));
}

View File

@ -23,9 +23,8 @@
#include <QObject>
#include <QVector>
#include <QUrl>
#include <QWebEngineScript>
class QWebFrame;
class QWebEngineScript;
class GM_Manager;
class GM_UrlMatcher;
@ -95,8 +94,6 @@ private:
QString m_fileName;
bool m_enabled;
bool m_valid;
QWebEngineScript m_webScript;
};
#endif // GM_SCRIPT_H