aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qdeclarativetypeloader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml/qdeclarativetypeloader.cpp')
-rw-r--r--src/declarative/qml/qdeclarativetypeloader.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/declarative/qml/qdeclarativetypeloader.cpp b/src/declarative/qml/qdeclarativetypeloader.cpp
index a65de06c04..a9dc46e897 100644
--- a/src/declarative/qml/qdeclarativetypeloader.cpp
+++ b/src/declarative/qml/qdeclarativetypeloader.cpp
@@ -388,6 +388,18 @@ QUrl QDeclarativeDataBlob::finalUrl() const
}
/*!
+Returns the finalUrl() as a string.
+*/
+QString QDeclarativeDataBlob::finalUrlString() const
+{
+ Q_ASSERT(isCompleteOrError() || (m_manager && m_manager->m_thread->isThisThread()));
+ if (m_finalUrlString.isEmpty())
+ m_finalUrlString = m_finalUrl.toString();
+
+ return m_finalUrlString;
+}
+
+/*!
Return the errors on this blob.
May only be called from the load thread, or after the blob isCompleteOrError().
@@ -1508,12 +1520,12 @@ void QDeclarativeTypeData::completed()
void QDeclarativeTypeData::dataReceived(const QByteArray &data)
{
- if (!scriptParser.parse(data, finalUrl())) {
+ if (!scriptParser.parse(data, finalUrl(), finalUrlString())) {
setError(scriptParser.errors());
return;
}
- m_imports.setBaseUrl(finalUrl());
+ m_imports.setBaseUrl(finalUrl(), finalUrlString());
foreach (const QDeclarativeScript::Import &import, scriptParser.imports()) {
if (import.type == QDeclarativeScript::Import::File && import.qualifier.isEmpty()) {
@@ -1569,8 +1581,8 @@ void QDeclarativeTypeData::compile()
QDeclarativeProfilerService::startRange(QDeclarativeProfilerService::Compiling);
m_compiledData = new QDeclarativeCompiledData(typeLoader()->engine());
- m_compiledData->url = m_imports.baseUrl();
- m_compiledData->name = m_compiledData->url.toString();
+ m_compiledData->url = finalUrl();
+ m_compiledData->name = finalUrlString();
QDeclarativeProfilerService::rangeLocation(QDeclarativeProfilerService::Compiling, QUrl(m_compiledData->name),1,1);
QDeclarativeProfilerService::rangeData(QDeclarativeProfilerService::Compiling, m_compiledData->name);
@@ -1817,7 +1829,7 @@ void QDeclarativeScriptBlob::dataReceived(const QByteArray &data)
QDeclarativeScript::Parser::JavaScriptMetaData metadata =
QDeclarativeScript::Parser::extractMetaData(m_source);
- m_imports.setBaseUrl(finalUrl());
+ m_imports.setBaseUrl(finalUrl(), finalUrlString());
m_pragmas = metadata.pragmas;
@@ -1881,6 +1893,7 @@ void QDeclarativeScriptBlob::done()
QDeclarativeEngine *engine = typeLoader()->engine();
m_scriptData = new QDeclarativeScriptData();
m_scriptData->url = finalUrl();
+ m_scriptData->urlString = finalUrlString();
m_scriptData->importCache = new QDeclarativeTypeNameCache();
for (int ii = 0; !isError() && ii < m_scripts.count(); ++ii) {