History

Fix console errors for javascript: urls

Zander Otavka committed 10 years ago

Commit a826f4e1 parent f9b6db11 file · +9 −4Browse files

Showing the changes to libraries/script-engine/src/ScriptCache.cpp (1 of 1 file). Show all

Unified · Split

libraries/script-engine/src/ScriptCache.cpp+9−4
@@ -18,6 +18,7 @@ · 17 unmodified lines
1818 #include <QNetworkReply>
1919 #include <QObject>
2020 #include <QThread>
21+#include <QRegularExpression>
2122
2223 #include <assert.h>
2324 #include <SharedUtil.h>
@@ -109,17 +110,20 @@ void ScriptCache::getScriptContents(const QString& scriptOrURL, contentAvailable · 85 unmodified lines
109110 QUrl unnormalizedURL(scriptOrURL);
110111 QUrl url = ResourceManager::normalizeURL(unnormalizedURL);
111112
112− // attempt to determine if this is a URL to a script, or if this is actually a script itself (which is valid in the entityScript use case)
113− if (unnormalizedURL.scheme().isEmpty() && scriptOrURL.simplified().replace(" ", "").contains("(function(){")) {
113+ // attempt to determine if this is a URL to a script, or if this is actually a script itself (which is valid in the
114+ // entityScript use case)
115+ if (unnormalizedURL.scheme().isEmpty() &&
116+ scriptOrURL.simplified().replace(" ", "").contains(QRegularExpression(R"(\(function\([a-z]?[\w,]*\){)"))) {
114117 contentAvailable(scriptOrURL, scriptOrURL, false, true);
115118 return;
116119 }
117120
118121 // give a similar treatment to javacript: urls
119122 if (unnormalizedURL.scheme() == "javascript") {
120− QString contents{ scriptOrURL };
121− contents.replace(QRegExp("^javascript:"), "");
123+ QString contents { scriptOrURL };
124+ contents.replace(QRegularExpression("^javascript:"), "");
122125 contentAvailable(scriptOrURL, contents, false, true);
126+ return;
123127 }
124128
125129 Lock lock(_containerLock);
@@ -140,6 +144,7 @@ void ScriptCache::getScriptContents(const QString& scriptOrURL, contentAvailable · 14 unmodified lines
140144 qCDebug(scriptengine) << "about to call: ResourceManager::createResourceRequest(this, url); on thread [" << QThread::currentThread() << "] expected thread [" << thread() << "]";
141145 #endif
142146 auto request = ResourceManager::createResourceRequest(nullptr, url);
147+ Q_ASSERT(request);
143148 request->setCacheEnabled(!forceDownload);
144149 connect(request, &ResourceRequest::finished, this, &ScriptCache::scriptContentAvailable);
145150 request->send();