[Qt][WK2] Favor QUrl and QString over WTF::String in the Qt API layer
authorjocelyn.turcotte@digia.com <jocelyn.turcotte@digia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Mar 2013 11:11:14 +0000 (11:11 +0000)
committerjocelyn.turcotte@digia.com <jocelyn.turcotte@digia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Mar 2013 11:11:14 +0000 (11:11 +0000)
https://bugs.webkit.org/show_bug.cgi?id=109468

Reviewed by Allan Sandfeld Jensen.
Signed off for WebKit2 by Benjamin Poulain.

In preparation for patches using the C API types in some areas, remove the
usage of WTF::String on the affected line.

Use a QUrl for icon URL to avoid unnecessary conversion.
Use a QString for the page URL to keep it compatible with WebPageProxy and
WebIconDatabase and avoid QUrl parsing.

* UIProcess/API/qt/qquickwebview.cpp:
(QQuickWebViewPrivate::_q_onIconChangedForPageURL):
(QQuickWebViewPrivate::updateIcon):
(QQuickWebView::emitUrlChangeIfNeeded):
(QQuickWebView::icon):
* UIProcess/API/qt/qquickwebview_p_p.h:
(QQuickWebViewPrivate):
* UIProcess/API/qt/qwebiconimageprovider.cpp:
(QWebIconImageProvider::iconURLForPageURLInContext):
* UIProcess/API/qt/qwebiconimageprovider_p.h:
* UIProcess/qt/QtWebIconDatabaseClient.cpp:
(WebKit::QtWebIconDatabaseClient::iconForPageURL):
(WebKit::QtWebIconDatabaseClient::iconImageForPageURL):
(WebKit::QtWebIconDatabaseClient::retainIconForPageURL):
(WebKit::QtWebIconDatabaseClient::releaseIconForPageURL):
* UIProcess/qt/QtWebIconDatabaseClient.h:
(QtWebIconDatabaseClient):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@145512 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h
Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider.cpp
Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider_p.h
Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp
Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.h

index 64e38e6..aef44a0 100644 (file)
@@ -1,3 +1,36 @@
+2013-02-14  Jocelyn Turcotte  <jocelyn.turcotte@digia.com>
+
+        [Qt][WK2] Favor QUrl and QString over WTF::String in the Qt API layer
+        https://bugs.webkit.org/show_bug.cgi?id=109468
+
+        Reviewed by Allan Sandfeld Jensen.
+        Signed off for WebKit2 by Benjamin Poulain.
+
+        In preparation for patches using the C API types in some areas, remove the
+        usage of WTF::String on the affected line.
+
+        Use a QUrl for icon URL to avoid unnecessary conversion.
+        Use a QString for the page URL to keep it compatible with WebPageProxy and
+        WebIconDatabase and avoid QUrl parsing.
+
+        * UIProcess/API/qt/qquickwebview.cpp:
+        (QQuickWebViewPrivate::_q_onIconChangedForPageURL):
+        (QQuickWebViewPrivate::updateIcon):
+        (QQuickWebView::emitUrlChangeIfNeeded):
+        (QQuickWebView::icon):
+        * UIProcess/API/qt/qquickwebview_p_p.h:
+        (QQuickWebViewPrivate):
+        * UIProcess/API/qt/qwebiconimageprovider.cpp:
+        (QWebIconImageProvider::iconURLForPageURLInContext):
+        * UIProcess/API/qt/qwebiconimageprovider_p.h:
+        * UIProcess/qt/QtWebIconDatabaseClient.cpp:
+        (WebKit::QtWebIconDatabaseClient::iconForPageURL):
+        (WebKit::QtWebIconDatabaseClient::iconImageForPageURL):
+        (WebKit::QtWebIconDatabaseClient::retainIconForPageURL):
+        (WebKit::QtWebIconDatabaseClient::releaseIconForPageURL):
+        * UIProcess/qt/QtWebIconDatabaseClient.h:
+        (QtWebIconDatabaseClient):
+
 2013-03-12  Manuel Rego Casasnovas  <rego@igalia.com>
 
         [GTK][WK2] REGRESSION(r145081): Unit tests not working if locale is not English
index 66cb83c..61020eb 100644 (file)
@@ -627,7 +627,7 @@ void QQuickWebViewPrivate::_q_onUrlChanged()
 
 void QQuickWebViewPrivate::_q_onIconChangedForPageURL(const QString& pageUrl)
 {
-    if (pageUrl != QString(m_currentUrl))
+    if (pageUrl != m_currentUrl)
         return;
 
     updateIcon();
@@ -647,7 +647,7 @@ void QQuickWebViewPrivate::updateIcon()
     if (!provider)
         return;
 
-    WTF::String iconUrl = provider->iconURLForPageURLInContext(m_currentUrl, context.get());
+    QUrl iconUrl = provider->iconURLForPageURLInContext(m_currentUrl, context.get());
 
     if (iconUrl == m_iconUrl)
         return;
@@ -1700,7 +1700,7 @@ void QQuickWebView::emitUrlChangeIfNeeded()
 {
     Q_D(QQuickWebView);
 
-    WTF::String activeUrl = d->webPageProxy->activeURL();
+    QString activeUrl = d->webPageProxy->activeURL();
     if (activeUrl != d->m_currentUrl) {
         d->m_currentUrl = activeUrl;
         emit urlChanged();
@@ -1728,7 +1728,7 @@ void QQuickWebView::emitUrlChangeIfNeeded()
 QUrl QQuickWebView::icon() const
 {
     Q_D(const QQuickWebView);
-    return QUrl(d->m_iconUrl);
+    return d->m_iconUrl;
 }
 
 /*!
index 8ad53e3..dcba084 100644 (file)
@@ -202,9 +202,9 @@ protected:
     bool m_navigatorQtObjectEnabled;
     bool m_renderToOffscreenBuffer;
     bool m_allowAnyHTTPSCertificateForLocalHost;
-    WTF::String m_iconUrl;
+    QUrl m_iconUrl;
     int m_loadProgress;
-    WTF::String m_currentUrl;
+    QString m_currentUrl;
 };
 
 class QQuickWebViewLegacyPrivate : public QQuickWebViewPrivate {
index aa26c07..e625cd7 100644 (file)
@@ -38,29 +38,29 @@ QWebIconImageProvider::~QWebIconImageProvider()
 {
 }
 
-WTF::String QWebIconImageProvider::iconURLForPageURLInContext(const WTF::String &pageURL, QtWebContext* context)
+QUrl QWebIconImageProvider::iconURLForPageURLInContext(const QString &pageURL, QtWebContext* context)
 {
     QtWebIconDatabaseClient* iconDatabase = context->iconDatabase();
-    WTF::String iconURL = iconDatabase->iconForPageURL(pageURL);
+    QUrl iconURL = iconDatabase->iconForPageURL(pageURL);
 
     if (iconURL.isEmpty())
-        return String();
+        return QUrl();
 
     QUrl url;
     url.setScheme(QStringLiteral("image"));
     url.setHost(QWebIconImageProvider::identifier());
     // Make sure that QML doesn't show cached versions of the previous icon if the icon location changed.
-    url.setPath(QLatin1Char('/') + QString::number(WTF::StringHash::hash(iconURL)));
+    url.setPath(QLatin1Char('/') + QString::number(WTF::StringHash::hash(iconURL.toString())));
 
     // FIXME: Use QUrl::DecodedMode when landed in Qt
-    url.setFragment(QString::fromLatin1(QByteArray(QString(pageURL).toUtf8()).toBase64()));
+    url.setFragment(QString::fromLatin1(pageURL.toUtf8().toBase64()));
 
     // FIXME: We can't know when the icon url is no longer in use,
     // so we never release these icons. At some point we might want
     // to introduce expiry of icons to elevate this issue.
     iconDatabase->retainIconForPageURL(pageURL);
 
-    return url.toString(QUrl::FullyEncoded);
+    return url;
 }
 
 QImage QWebIconImageProvider::requestImage(const QString& id, QSize* size, const QSize& requestedSize)
index 7efe21a..2df97c2 100644 (file)
@@ -36,7 +36,7 @@ public:
 
     static QString identifier() { return QStringLiteral("webicon"); }
 
-    WTF::String iconURLForPageURLInContext(const WTF::String& pageURL, WebKit::QtWebContext* context);
+    QUrl iconURLForPageURLInContext(const QString& pageURL, WebKit::QtWebContext* context);
     virtual QImage requestImage(const QString& id, QSize* size, const QSize& requestedSize);
 };
 
index 7dbb273..3f38d64 100644 (file)
@@ -65,24 +65,24 @@ void QtWebIconDatabaseClient::didChangeIconForPageURL(WKIconDatabaseRef, WKURLRe
     emit toQtWebIconDatabaseClient(clientInfo)->iconChangedForPageURL(toImpl(pageURL)->string());
 }
 
-WTF::String QtWebIconDatabaseClient::iconForPageURL(const WTF::String& pageURL)
+QUrl QtWebIconDatabaseClient::iconForPageURL(const QString& pageURL)
 {
     String iconURL;
     m_iconDatabase->synchronousIconURLForPageURL(pageURL, iconURL);
 
     if (iconURL.isEmpty())
-        return String();
+        return QUrl();
 
     // Verify that the image data is actually available before reporting back
     // a url, since clients assume that the url can be used directly.
     WebCore::Image* iconImage = m_iconDatabase->imageForPageURL(pageURL);
     if (!iconImage || iconImage->isNull())
-        return String();
+        return QUrl();
 
-    return iconURL;
+    return QUrl(iconURL);
 }
 
-QImage QtWebIconDatabaseClient::iconImageForPageURL(const WTF::String& pageURL, const QSize& iconSize)
+QImage QtWebIconDatabaseClient::iconImageForPageURL(const QString& pageURL, const QSize& iconSize)
 {
     MutexLocker locker(m_imageLock);
 
@@ -95,12 +95,12 @@ QImage QtWebIconDatabaseClient::iconImageForPageURL(const WTF::String& pageURL,
     return nativeImage->toImage();
 }
 
-void QtWebIconDatabaseClient::retainIconForPageURL(const String& pageURL)
+void QtWebIconDatabaseClient::retainIconForPageURL(const QString& pageURL)
 {
     m_iconDatabase->retainIconForPageURL(pageURL);
 }
 
-void QtWebIconDatabaseClient::releaseIconForPageURL(const String& pageURL)
+void QtWebIconDatabaseClient::releaseIconForPageURL(const QString& pageURL)
 {
     m_iconDatabase->releaseIconForPageURL(pageURL);
 }
index 97197d8..9b5307f 100644 (file)
@@ -33,10 +33,6 @@ class QImage;
 class QUrl;
 QT_END_NAMESPACE
 
-namespace WTF {
-class String;
-}
-
 namespace WebKit {
 
 class WebContext;
@@ -49,11 +45,11 @@ public:
     QtWebIconDatabaseClient(WebContext*);
     ~QtWebIconDatabaseClient();
 
-    WTF::String iconForPageURL(const WTF::String& pageURL);
-    QImage iconImageForPageURL(const WTF::String& pageURL, const QSize& iconSize = QSize(32, 32));
+    QUrl iconForPageURL(const QString& pageURL);
+    QImage iconImageForPageURL(const QString& pageURL, const QSize& iconSize = QSize(32, 32));
 
-    void retainIconForPageURL(const WTF::String&);
-    void releaseIconForPageURL(const WTF::String&);
+    void retainIconForPageURL(const QString&);
+    void releaseIconForPageURL(const QString&);
 
 public:
     Q_SIGNAL void iconChangedForPageURL(const QString& pageURL);