diff options
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/jsruntime/qv4urlobject.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/qml/jsruntime/qv4urlobject.cpp b/src/qml/jsruntime/qv4urlobject.cpp index c63e71ea46..0a55a1d876 100644 --- a/src/qml/jsruntime/qv4urlobject.cpp +++ b/src/qml/jsruntime/qv4urlobject.cpp @@ -167,7 +167,7 @@ void UrlObject::setUrl(const QUrl &url) d()->port.set(engine(), engine()->newString(url.port() == -1 ? QLatin1String("") : QString::number(url.port()))); - d()->protocol.set(engine(), engine()->newString(url.scheme())); + d()->protocol.set(engine(), engine()->newString(url.scheme() + QLatin1Char(':'))); d()->search.set(engine(), engine()->newString(url.query())); d()->username.set(engine(), engine()->newString(url.userName())); @@ -222,15 +222,23 @@ bool UrlObject::setPort(QString port) return true; } -bool UrlObject::setProtocol(QString protocol) +bool UrlObject::setProtocol(QString protocolOrScheme) { QUrl url = toQUrl(); - url.setScheme(protocol); + // If there is one or several ':' in the protocolOrScheme, + // everything from the first colon is removed. + + qsizetype firstColonPos = protocolOrScheme.indexOf(QLatin1Char(':')); + + if (firstColonPos != -1) + protocolOrScheme.truncate(firstColonPos); + + url.setScheme(protocolOrScheme); if (!url.isValid()) return false; - d()->protocol.set(engine(), engine()->newString(url.scheme())); + d()->protocol.set(engine(), engine()->newString(url.scheme() + QLatin1Char(':'))); d()->href.set(engine(), engine()->newString(url.toString())); updateOrigin(); |