Title: [118762] trunk
Revision
118762
Author
[email protected]
Date
2012-05-29 06:17:23 -0700 (Tue, 29 May 2012)

Log Message

[Qt] Sync up favicon-implementation with WebView url changes in r118158

https://bugs.webkit.org/show_bug.cgi?id=87133

We now base64-encode the page url in the image-provider url, so that any
normalization done by QUrl will not mess up the page-url. The logic of
creating and parsing the provider-url has been moved into the image
provider, to keep it in one place.

We were also releasing icons (even ones we hadn't retained), which we can't
do since we don't know when the icon url is no longer in use.

Reviewed-by Simon Hausmann.

Modified Paths

Diff

Modified: trunk/Source/WebKit/qt/ChangeLog (118761 => 118762)


--- trunk/Source/WebKit/qt/ChangeLog	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Source/WebKit/qt/ChangeLog	2012-05-29 13:17:23 UTC (rev 118762)
@@ -1,3 +1,22 @@
+2012-05-29  Tor Arne Vestbø  <[email protected]>
+
+        [Qt] Sync up favicon-implementation with WebView url changes in r118158
+
+        https://bugs.webkit.org/show_bug.cgi?id=87133
+
+        We now base64-encode the page url in the image-provider url, so that any
+        normalization done by QUrl will not mess up the page-url. The logic of
+        creating and parsing the provider-url has been moved into the image
+        provider, to keep it in one place.
+
+        We were also releasing icons (even ones we hadn't retained), which we can't
+        do since we don't know when the icon url is no longer in use.
+
+        Reviewed-by Simon Hausmann.
+
+        * declarative/plugin.cpp:
+        * declarative/public.pri:
+
 2012-05-25  Jesus Sanchez-Palencia  <[email protected]>
 
         WebKitTestRunner needs to support layoutTestController.setJavaScriptProfilingEnabled

Modified: trunk/Source/WebKit/qt/declarative/plugin.cpp (118761 => 118762)


--- trunk/Source/WebKit/qt/declarative/plugin.cpp	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Source/WebKit/qt/declarative/plugin.cpp	2012-05-29 13:17:23 UTC (rev 118762)
@@ -17,6 +17,8 @@
     Boston, MA 02110-1301, USA.
 */
 
+#include "config.h"
+
 #include "qglobal.h"
 
 #if defined(HAVE_QQUICK1)

Modified: trunk/Source/WebKit/qt/declarative/public.pri (118761 => 118762)


--- trunk/Source/WebKit/qt/declarative/public.pri	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Source/WebKit/qt/declarative/public.pri	2012-05-29 13:17:23 UTC (rev 118762)
@@ -34,6 +34,8 @@
     HEADERS += qdeclarativewebview_p.h
 }
 
+WEBKIT += wtf
+
 DESTDIR = $${ROOT_BUILD_DIR}/imports/$${TARGET.module_name}
 
 CONFIG += rpath

Modified: trunk/Source/WebKit2/ChangeLog (118761 => 118762)


--- trunk/Source/WebKit2/ChangeLog	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Source/WebKit2/ChangeLog	2012-05-29 13:17:23 UTC (rev 118762)
@@ -1,3 +1,43 @@
+2012-05-29  Tor Arne Vestbø  <[email protected]>
+
+        [Qt] Sync up favicon-implementation with WebView url changes in r118158
+
+        https://bugs.webkit.org/show_bug.cgi?id=87133
+
+        We now base64-encode the page url in the image-provider url, so that any
+        normalization done by QUrl will not mess up the page-url. The logic of
+        creating and parsing the provider-url has been moved into the image
+        provider, to keep it in one place.
+
+        We were also releasing icons (even ones we hadn't retained), which we can't
+        do since we don't know when the icon url is no longer in use.
+
+        Reviewed-by Simon Hausmann.
+
+        * UIProcess/API/qt/qquickwebview.cpp:
+        (QQuickWebViewPrivate::initialize):
+        (QQuickWebViewPrivate::loadProgressDidChange):
+        (QQuickWebViewPrivate::_q_onUrlChanged):
+        (QQuickWebViewPrivate::_q_onIconChangedForPageURL):
+        (QQuickWebViewPrivate::updateIcon):
+        (QQuickWebView::icon):
+        * UIProcess/API/qt/qquickwebview_p.h:
+        * UIProcess/API/qt/qquickwebview_p_p.h:
+        (QQuickWebViewPrivate):
+        * UIProcess/API/qt/qwebiconimageprovider.cpp:
+        (QWebIconImageProvider::iconURLForPageURLInContext):
+        (QWebIconImageProvider::requestImage):
+        * UIProcess/API/qt/qwebiconimageprovider_p.h:
+        (WebKit):
+        * UIProcess/API/qt/tests/qmltests/WebView/tst_favIconLoad.qml:
+        * UIProcess/qt/QtWebIconDatabaseClient.cpp:
+        (WebKit::QtWebIconDatabaseClient::didChangeIconForPageURL):
+        (WebKit::QtWebIconDatabaseClient::iconForPageURL):
+        (WebKit):
+        (WebKit::QtWebIconDatabaseClient::iconImageForPageURL):
+        * UIProcess/qt/QtWebIconDatabaseClient.h:
+        (QtWebIconDatabaseClient):
+
 2012-05-29  Kenneth Rohde Christiansen  <[email protected]>
 
         [Qt][WK2] Fix failing qmltests::FitToView::test_basic()

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp (118761 => 118762)


--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp	2012-05-29 13:17:23 UTC (rev 118762)
@@ -44,6 +44,7 @@
 #include "qquickwebpage_p_p.h"
 #include "qquickwebview_p_p.h"
 #include "qwebdownloaditem_p_p.h"
+#include "qwebiconimageprovider_p.h"
 #include "qwebkittest_p.h"
 #include "qwebloadrequest_p.h"
 #include "qwebnavigationhistory_p.h"
@@ -56,6 +57,7 @@
 #include <QDateTime>
 #include <QtCore/QFile>
 #include <QtQml/QJSValue>
+#include <QtQuick/QQuickView>
 #include <WKOpenPanelResultListener.h>
 #include <WKSerializedScriptValue.h>
 #include <WebCore/IntPoint.h>
@@ -305,7 +307,7 @@
     navigationHistory = adoptPtr(QWebNavigationHistoryPrivate::createHistory(toAPI(webPageProxy.get())));
 
     QtWebIconDatabaseClient* iconDatabase = context->iconDatabase();
-    QObject::connect(iconDatabase, SIGNAL(iconChangedForPageURL(QUrl, QUrl)), q_ptr, SLOT(_q_onIconChangedForPageURL(QUrl, QUrl)));
+    QObject::connect(iconDatabase, SIGNAL(iconChangedForPageURL(QString)), q_ptr, SLOT(_q_onIconChangedForPageURL(QString)));
 
     // Any page setting should preferrable be set before creating the page.
     webPageProxy->pageGroup()->preferences()->setAcceleratedCompositingEnabled(true);
@@ -375,9 +377,6 @@
 {
     Q_Q(QQuickWebView);
 
-    if (!loadProgress)
-        setIcon(QUrl());
-
     m_loadProgress = loadProgress;
 
     emit q->loadProgressChanged();
@@ -420,16 +419,6 @@
     q->page()->update();
 }
 
-void QQuickWebViewPrivate::_q_onIconChangedForPageURL(const QUrl& pageURL, const QUrl& iconURL)
-{
-    Q_Q(QQuickWebView);
-
-    if (q->url() != pageURL)
-        return;
-
-    setIcon(iconURL);
-}
-
 void QQuickWebViewPrivate::processDidCrash()
 {
     Q_Q(QQuickWebView);
@@ -483,8 +472,38 @@
 
 void QQuickWebViewPrivate::_q_onUrlChanged()
 {
+    updateIcon();
+}
+
+void QQuickWebViewPrivate::_q_onIconChangedForPageURL(const QString& pageUrl)
+{
+    if (pageUrl != QString(m_currentUrl))
+        return;
+
+    updateIcon();
+}
+
+/* Called either when the url changes, or when the icon for the current page changes */
+void QQuickWebViewPrivate::updateIcon()
+{
     Q_Q(QQuickWebView);
-    context->iconDatabase()->requestIconForPageURL(q->url());
+
+    QQuickView* view = qobject_cast<QQuickView*>(q->canvas());
+    if (!view)
+        return;
+
+    QWebIconImageProvider* provider = static_cast<QWebIconImageProvider*>(
+                view->engine()->imageProvider(QWebIconImageProvider::identifier()));
+    if (!provider)
+        return;
+
+    WTF::String iconUrl = provider->iconURLForPageURLInContext(m_currentUrl, context.get());
+
+    if (iconUrl == m_iconUrl)
+        return;
+
+    m_iconUrl = iconUrl;
+    emit q->iconChanged();
 }
 
 void QQuickWebViewPrivate::_q_onReceivedResponseFromDownload(QWebDownloadItem* downloadItem)
@@ -644,31 +663,6 @@
     attached->setView(q);
 }
 
-void QQuickWebViewPrivate::setIcon(const QUrl& iconURL)
-{
-    Q_Q(QQuickWebView);
-    if (m_iconURL == iconURL)
-        return;
-
-    if (!webPageProxy->mainFrame())
-        return;
-
-    String oldPageURL = QUrl::fromPercentEncoding(m_iconURL.encodedFragment());
-    String newPageURL = webPageProxy->mainFrame()->url();
-
-    if (oldPageURL != newPageURL) {
-        QtWebIconDatabaseClient* iconDatabase = context->iconDatabase();
-        if (!oldPageURL.isEmpty())
-            iconDatabase->releaseIconForPageURL(oldPageURL);
-
-        if (!newPageURL.isEmpty())
-            iconDatabase->retainIconForPageURL(newPageURL);
-    }
-
-    m_iconURL = iconURL;
-    emit q->iconChanged();
-}
-
 bool QQuickWebViewPrivate::navigatorQtObjectEnabled() const
 {
     return m_navigatorQtObjectEnabled;
@@ -1561,7 +1555,7 @@
 QUrl QQuickWebView::icon() const
 {
     Q_D(const QQuickWebView);
-    return d->m_iconURL;
+    return QUrl(d->m_iconUrl);
 }
 
 /*!

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h (118761 => 118762)


--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h	2012-05-29 13:17:23 UTC (rev 118762)
@@ -212,7 +212,7 @@
     Q_PRIVATE_SLOT(d_func(), void _q_onVisibleChanged());
     Q_PRIVATE_SLOT(d_func(), void _q_onUrlChanged());
     Q_PRIVATE_SLOT(d_func(), void _q_onReceivedResponseFromDownload(QWebDownloadItem*));
-    Q_PRIVATE_SLOT(d_func(), void _q_onIconChangedForPageURL(const QUrl&, const QUrl&));
+    Q_PRIVATE_SLOT(d_func(), void _q_onIconChangedForPageURL(const QString&));
     // Hides QObject::d_ptr allowing us to use the convenience macros.
     QScopedPointer<QQuickWebViewPrivate> d_ptr;
     QQuickWebViewExperimental* m_experimental;

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h (118761 => 118762)


--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h	2012-05-29 13:17:23 UTC (rev 118762)
@@ -103,7 +103,7 @@
     void _q_onVisibleChanged();
     void _q_onUrlChanged();
     void _q_onReceivedResponseFromDownload(QWebDownloadItem*);
-    void _q_onIconChangedForPageURL(const QUrl& pageURL, const QUrl& iconURLString);
+    void _q_onIconChangedForPageURL(const QString&);
 
     void chooseFiles(WKOpenPanelResultListenerRef, const QStringList& selectedFileNames, WebKit::QtWebPageUIClient::FileChooserType);
     quint64 exceededDatabaseQuota(const QString& databaseName, const QString& displayName, WKSecurityOriginRef securityOrigin, quint64 currentQuota, quint64 currentOriginUsage, quint64 currentDatabaseUsage, quint64 expectedUsage);
@@ -118,7 +118,6 @@
     void setRenderToOffscreenBuffer(bool enable) { m_renderToOffscreenBuffer = enable; }
     void setTransparentBackground(bool);
     void addAttachedPropertyTo(QObject*);
-    void setIcon(const QUrl&);
 
     bool navigatorQtObjectEnabled() const;
     bool renderToOffscreenBuffer() const { return m_renderToOffscreenBuffer; }
@@ -133,6 +132,8 @@
 
     void setDialogActive(bool active) { m_dialogActive = active; }
 
+    void updateIcon();
+
     // PageClient.
     WebCore::IntSize viewSize() const;
     void didReceiveMessageFromNavigatorQtObject(const String& message);
@@ -200,7 +201,7 @@
     bool m_renderToOffscreenBuffer;
     bool m_dialogActive;
     bool m_allowAnyHTTPSCertificateForLocalHost;
-    QUrl m_iconURL;
+    WTF::String m_iconUrl;
     int m_loadProgress;
     WTF::String m_currentUrl;
 };

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider.cpp (118761 => 118762)


--- trunk/Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider.cpp	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider.cpp	2012-05-29 13:17:23 UTC (rev 118762)
@@ -24,6 +24,7 @@
 #include "QtWebIconDatabaseClient.h"
 #include <QtCore/QUrl>
 #include <QtGui/QImage>
+#include <wtf/text/StringHash.h>
 #include <wtf/text/WTFString.h>
 
 using namespace WebKit;
@@ -37,24 +38,52 @@
 {
 }
 
+WTF::String QWebIconImageProvider::iconURLForPageURLInContext(const WTF::String &pageURL, QtWebContext* context)
+{
+    QtWebIconDatabaseClient* iconDatabase = context->iconDatabase();
+    WTF::String iconURL = iconDatabase->iconForPageURL(pageURL);
+
+    if (iconURL.isEmpty())
+        return String();
+
+    QUrl url;
+    url.setScheme(QStringLiteral("image"));
+    url.setHost(QWebIconImageProvider::identifier());
+
+    QString path;
+    path.append(QLatin1Char('/'));
+    path.append(QString::number(context->contextID()));
+    path.append(QLatin1Char('/'));
+    path.append(QString::number(WTF::StringHash::hash(iconURL)));
+    url.setPath(path);
+
+    // FIXME: Use QUrl::DecodedMode when landed in Qt
+    url.setFragment(QString::fromLatin1(QByteArray(QString(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);
+}
+
 QImage QWebIconImageProvider::requestImage(const QString& id, QSize* size, const QSize& requestedSize)
 {
-    QString decodedIconUrl = id;
-    decodedIconUrl.remove(0, decodedIconUrl.indexOf('#') + 1);
-    String pageURL = QString::fromUtf8(QUrl(decodedIconUrl).toEncoded());
-
     // The string identifier has the leading image://webicon/ already stripped, so we just
     // need to truncate from the first slash to get the context id.
-    QString contextIDAsString = id;
-    contextIDAsString.truncate(contextIDAsString.indexOf(QLatin1Char('/')));
+    QString contextIDString = id.left(id.indexOf(QLatin1Char('/')));
     bool ok = false;
-    uint64_t contextId = contextIDAsString.toUInt(&ok);
+    uint64_t contextId = contextIDString.toUInt(&ok);
     if (!ok)
         return QImage();
+
     QtWebContext* context = QtWebContext::contextByID(contextId);
     if (!context)
         return QImage();
 
+    QString pageURL = QString::fromUtf8(QByteArray::fromBase64(id.midRef(id.indexOf('#') + 1).toLatin1()));
+
     QtWebIconDatabaseClient* iconDatabase = context->iconDatabase();
     QImage icon = requestedSize.isValid() ? iconDatabase->iconImageForPageURL(pageURL, requestedSize) : iconDatabase->iconImageForPageURL(pageURL);
     ASSERT(!icon.isNull());

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider_p.h (118761 => 118762)


--- trunk/Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider_p.h	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider_p.h	2012-05-29 13:17:23 UTC (rev 118762)
@@ -21,13 +21,23 @@
 #define qwebiconimageprovider_p_h
 
 #include "qwebkitglobal.h"
+#include <QString>
 #include <QtQuick/QQuickImageProvider>
+#include <wtf/text/WTFString.h>
 
+namespace WebKit {
+    class QtWebContext;
+}
+
 class QWEBKIT_EXPORT QWebIconImageProvider : public QQuickImageProvider {
 public:
     QWebIconImageProvider();
     ~QWebIconImageProvider();
-    QImage requestImage(const QString& id, QSize* size, const QSize& requestedSize);
+
+    static QString identifier() { return QStringLiteral("webicon"); }
+
+    WTF::String iconURLForPageURLInContext(const WTF::String& pageURL, WebKit::QtWebContext* context);
+    virtual QImage requestImage(const QString& id, QSize* size, const QSize& requestedSize);
 };
 
 #endif

Modified: trunk/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_favIconLoad.qml (118761 => 118762)


--- trunk/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_favIconLoad.qml	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_favIconLoad.qml	2012-05-29 13:17:23 UTC (rev 118762)
@@ -20,6 +20,7 @@
     TestCase {
         id: test
         name: "WebViewLoadFavIcon"
+        when: windowShown
 
         function init() {
             if (webView.icon != '') {
@@ -36,7 +37,6 @@
             var url = ""
             webView.url = ""
             verify(webView.waitForLoadSucceeded())
-            expectFail("", "https://bugs.webkit.org/show_bug.cgi?id=87133")
             compare(spy.count, 1)
             compare(favicon.width, 48)
             compare(favicon.height, 48)
@@ -47,7 +47,6 @@
             var url = "" should work with#whitespace!")
             webView.url = ""
             verify(webView.waitForLoadSucceeded())
-            expectFail("", "https://bugs.webkit.org/show_bug.cgi?id=87133")
             compare(spy.count, 1)
             compare(favicon.width, 16)
             compare(favicon.height, 16)

Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp (118761 => 118762)


--- trunk/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp	2012-05-29 13:17:23 UTC (rev 118762)
@@ -62,14 +62,30 @@
     WKIconDatabaseSetIconDatabaseClient(toAPI(m_iconDatabase.get()), 0);
 }
 
-void QtWebIconDatabaseClient::didChangeIconForPageURL(WKIconDatabaseRef iconDatabase, WKURLRef pageURL, const void* clientInfo)
+void QtWebIconDatabaseClient::didChangeIconForPageURL(WKIconDatabaseRef, WKURLRef pageURL, const void* clientInfo)
 {
-    QUrl qUrl = WKURLCopyQUrl(pageURL);
-    toQtWebIconDatabaseClient(clientInfo)->requestIconForPageURL(qUrl);
+    emit toQtWebIconDatabaseClient(clientInfo)->iconChangedForPageURL(toImpl(pageURL)->string());
 }
 
-QImage QtWebIconDatabaseClient::iconImageForPageURL(const String& pageURL, const QSize& iconSize)
+WTF::String QtWebIconDatabaseClient::iconForPageURL(const WTF::String& pageURL)
 {
+    String iconURL;
+    m_iconDatabase->synchronousIconURLForPageURL(pageURL, iconURL);
+
+    if (iconURL.isEmpty())
+        return String();
+
+    // 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 iconURL;
+}
+
+QImage QtWebIconDatabaseClient::iconImageForPageURL(const WTF::String& pageURL, const QSize& iconSize)
+{
     MutexLocker locker(m_imageLock);
 
     WebCore::IntSize size(iconSize.width(), iconSize.height());
@@ -84,33 +100,6 @@
     return nativeImage->toImage();
 }
 
-unsigned QtWebIconDatabaseClient::iconURLHashForPageURL(const String& pageURL)
-{
-    String iconURL;
-    m_iconDatabase->synchronousIconURLForPageURL(pageURL, iconURL);
-    return StringHash::hash(iconURL);
-}
-
-void QtWebIconDatabaseClient::requestIconForPageURL(const QUrl& pageURL)
-{
-    String pageURLString = WebCore::KURL(pageURL).string();
-    if (iconImageForPageURL(pageURLString).isNull())
-        return;
-
-    unsigned iconID = iconURLHashForPageURL(pageURLString);
-    QUrl url;
-    url.setScheme(QStringLiteral("image"));
-    url.setHost(QStringLiteral("webicon"));
-    QString path;
-    path.append(QLatin1Char('/'));
-    path.append(QString::number(m_contextId));
-    path.append(QLatin1Char('/'));
-    path.append(QString::number(iconID));
-    url.setPath(path);
-    url.setEncodedFragment(pageURL.toEncoded());
-    emit iconChangedForPageURL(pageURL, url);
-}
-
 void QtWebIconDatabaseClient::retainIconForPageURL(const String& pageURL)
 {
     m_iconDatabase->retainIconForPageURL(pageURL);

Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.h (118761 => 118762)


--- trunk/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.h	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.h	2012-05-29 13:17:23 UTC (rev 118762)
@@ -49,18 +49,16 @@
     QtWebIconDatabaseClient(QtWebContext*);
     ~QtWebIconDatabaseClient();
 
+    WTF::String iconForPageURL(const WTF::String& pageURL);
     QImage iconImageForPageURL(const WTF::String& pageURL, const QSize& iconSize = QSize(32, 32));
+
     void retainIconForPageURL(const WTF::String&);
     void releaseIconForPageURL(const WTF::String&);
 
-public Q_SLOTS:
-    void requestIconForPageURL(const QUrl&);
-
 public:
-    Q_SIGNAL void iconChangedForPageURL(const QUrl& pageURL, const QUrl& iconURL);
+    Q_SIGNAL void iconChangedForPageURL(const QString& pageURL);
 
 private:
-    unsigned iconURLHashForPageURL(const WTF::String&);
     static void didChangeIconForPageURL(WKIconDatabaseRef, WKURLRef pageURL, const void* clientInfo);
     uint64_t m_contextId;
     RefPtr<WebKit::WebIconDatabase> m_iconDatabase;

Modified: trunk/Tools/ChangeLog (118761 => 118762)


--- trunk/Tools/ChangeLog	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Tools/ChangeLog	2012-05-29 13:17:23 UTC (rev 118762)
@@ -1,3 +1,22 @@
+2012-05-29  Tor Arne Vestbø  <[email protected]>
+
+        [Qt] Sync up favicon-implementation with WebView url changes in r118158
+
+        https://bugs.webkit.org/show_bug.cgi?id=87133
+
+        We now base64-encode the page url in the image-provider url, so that any
+        normalization done by QUrl will not mess up the page-url. The logic of
+        creating and parsing the provider-url has been moved into the image
+        provider, to keep it in one place.
+
+        We were also releasing icons (even ones we hadn't retained), which we can't
+        do since we don't know when the icon url is no longer in use.
+
+        Reviewed-by Simon Hausmann.
+
+        * MiniBrowser/qt/icons/favicon.png:
+        * MiniBrowser/qt/qml/BrowserWindow.qml:
+
 2012-05-29  Mikhail Pozdnyakov  <[email protected]>
 
         [EFL] Refactoring. Get rid of unnecessary singleCharacterString() function

Modified: trunk/Tools/MiniBrowser/qt/icons/favicon.png (118761 => 118762)


--- trunk/Tools/MiniBrowser/qt/icons/favicon.png	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Tools/MiniBrowser/qt/icons/favicon.png	2012-05-29 13:17:23 UTC (rev 118762)
@@ -1,10 +1,11 @@
 \x89PNG
 
 
-IHDR\xF3\xFFasRGB\xAE\xCE\xE95IDAT8O\xC1\xCDOg\xC0\xE1\xDF\xFB\xCE;3;\xB0\xBB\x8B\x82a-,آЀ\x9A4M\x8C1\xFC
-\xBD\xD3\xF4\xE6\xC54=\xF4(\xA7\x9E{\xD5CϽ\x9B\xDA\xDA\xC6xkRS\x91Va\x81\x85\x95ewYvw\xBE\xE7\x9D>\x8F\xF8b}\xFD\xB1;\xEB>4\x93,	Fv\xCE$\xA5\xEA%\xC6.\xAD\xD3c\xB4R\x98\xA6\xCDI\xA3y\xD2m\x9D=}\xFE\xE2\xC5c\xE3\xD17_o;\xADo\xF33\xD3$Ba\x8D9F\xA5j\x99\xF2T\x99\x8F?Y\xE1\xFA\x8De&+\x94e\x81eP\xAEVG\x8Dƭg\xBF\xFD"\x94!\xE4w\xF9\xE9"Q\xEAS\x9E\xA9\x91zC\xF2n\x81\x99\xDA<\x8B\xF5:\x96\xB2(
-X\xB6\x8DE\x84i\x82\x9F\xC5\x8B.Q\xEA?4\xA6\xA4ܨ.-1^,!\x85\x8DmY\xDD
-ss\xCCL\xCD \xA5B\x92\x9Cm#\xD0\xD8}\x83N%\xA14\x91"\x97G\xAA1\xC6\xDD
-\x86Д\x8AE\xE2T\x93\x861\xCDmZ\xDDs,g\x9CB~\x82re\x8A\xF9\x8F\xAE\x8DR"\xAFO\xBE\xBC\x802\xC3Q\x80A՝\xA2\xD7\xEE\xF0\xEE`\x9F\x9D\xC6Zgi\xC6\xCD\xD5O\xB9w\xE7ǭO\xFF?Έ\xB4C\xDC\xDCFIS\x90\x86)\xAFv6I\xFB\xB3\xF5k\xB8\xE5+LLH\x8EN\x80\x84\xBD\xBD]\xFE\xFA\xF3.<\x8FJ)\x8762B\x82,\xA1\x8C\x9CC(4\x93\x93\xD7\xEA\xAC.\xDF`\xFB\xED.\xAF\xFF}\xC9x\xC1!\xF1\xCF\xE3\xF3\xDB\xCBt:]Z\xDDRj~L\x90j\xA4mf䢄|\xCE\x9D>\x8Bs5\x946PA\x8A$Òs\xB35\xD6\xEF\xDE%\xF2\xFA\x888Ò \xFDă\xFB\xF7\xB3_}If\xFC\xBD\xB9\xC9\xCA\xF2uʓl\xDB&M\x92$BA\xC6\xF4r\xB6I\xE0y\xFC\xFC\xEB3\xDEno\xA3z\xBDq\x9AQ\xCA\xE7z#\x82  \xCB2\x94\x92ĉf\xE7\xFD;\xBA\xDDs\x82  \x9A4\x8C\xB8\xB9\xBAJGd\xA9\x811[\x9B\xDFh~8\xA6Xȳ\xDF<\xC0Tn\xD9%\xE7\xD8l\xBD\xDEb8\x91y;1He\xD2\xEEwh\x9E\x9C1\xE8\xF5P\x91>\xA7wf\xF1\xF2\xBFW$I\xC6i\xB7\x87\xDBja\xDB\xA9\x86K\x97\xA7\xB1\x95I0\x8CH\xA4\xC62\xE0\xF4\xAC\xCD\xC0\xBF@\xEB\xA5\xCC
-\xB9BӴ\xB7\xC7hv:ę\xA6\xDFp\xD4j"\x842S\x91D\x9A\xAE7\xA0\xDF\xEB\xF7\x94\xED2\xC6Օ\xDB"\xD0޽\xAB\x97\xA7A\xA7\xBC?\xD8'\xC9\xE0\xB4\xDDa\xE8\x87\\x87$:\xA3X,\xE2NN\xB0wx\x88?
-\xB9"K\x93O\x8Cƛ\xAD\xE7kk\x9F\xCD,\xD5k\xB7\xEAu:\x9D6\x83\xFE\x91\xC3$\xD6	i\x83a\xC8I\xE7\x9C8\xE5\xF9TQO\xBE\xFF\xE9\xC7\xFE.\x85Z^\xE9-IEND\xAEB`\x82
\ No newline at end of file
+IHDR\xF3\xFFa	pHYs\x9A\x9C\xE0IDAT8\x8D\xA5\x93\xCBk\\xC6\xF7\xCE}\xCCͽ3\xF753\xA9tJ^\x85D\x82A\xACA\xA2\xC5EBK\xFDܸ\xAFB6\x91\x82\xE0? \xB8Q
+\xBAjQ\x83\x94\xD42\xA6\xA1\xB1M\xE2\x90Hfl2\x9Df\x9CW2\x99;\xF7\xE5B\xADK\xFD\xE0l\x87\x8F\xEFw8G\x88\xE3\x98\xFF#\xE9ߍW^{gFQ\xDF\xEC\xF9'\xF3ZR\x9B\xF0<o\xD3H\xEA7\x85\xFE\xE0\xF3k\xD7>\xB8\xFB\xCFy\xE1\xAFsss\xF2\x83֩KųS\x97\x9F\x9B\x9F\x9B{f\x9C'\xA3$\x91\xD2O{lm\xEF\xB2\xFE\xC3\xDD\xF2\xEE\xBD\xFBK\xAB\xB2\*\x95\xFC\xC7췋G\xC7g\xAF̾\xFEj\xFE\xED\xF3g\xB1\xE1O:-\xA9\xF2\xC0O1i\x9Ck
+\xB4+\xD5m)>\xE7\xA5\xE9\xE3\xF8\xA9ţ\xFCL\xDE\xCDXZ\x82(\x8A	\xE3?\xEA\xE6V\x8B\xED\x83>wƴݙ|W/.
+\xCE\xF9\xE9aO9s!Ȏ\xBB-\x81Fק\xE7E|q\xBB\xCE\xFC\x84\xC5\xC7+\xFB\_o\x841݁O/T\x9D\xD3E\xA9ݸlH\xB1\x9B;'\xE6\xF3\xE8\xB6ƭ\x9D.\x95FC\x93\xF8h\xE5\x80TR\xC6L˄!\xA8^\x82#9A;%l\xBA\xE7\x86	ӜJ9yS#\xBC\xFBe\x85j3\xE4\xD9\xD3;\x8D\x80ɂE\xC1\xD5\xB55r\xA6\x86\xEB:\xA8\xB9\xEC\xD4A6촄c*X)
+E\x96\xD9j\xC4\xEC\xB4|\xDEz!\xCF„\xC1\xA7\xB7|s\xFF7EDC\xFE\xFB\xF4$\x9B\x96\xCANz\xCB\xD4I%5$EAEޘ\xD6\xB8\xF4|\x86\x97'Ӽ\xFF\xF5\xAFD\x83:\xB2\xBF9DPEuD\xF40\xD3:\x8Ee\xE2\xB86ٌA6cPn	\x88\xA2\x80\xA1&\xCB%\xB1S\x96\xE4\x93քաA|\\xBF*\xF6wuUŶ\xECL7'\xE2\xE4\xA0Ԇ(\x89㐯\xCA1)ME<i\xEE\xAA\xFD\xE3\xABC\x83\xEA\xF57\xFA\x87\x95\xC5~\xBDZ\x93!\xA6	\x96
+\x8EO\xBBqr\xAF\x95\xA3\x90\xFE\xA3\x83Z|\xBC\xBFX\xFA콍\xA1Afa\xA9P\xAD\xFA\xE5\xF2\x9D\x95彵k\x87\xFB5^Y\x8E\x98\x90zT\x9A\xBE-ש\xAC\xADն׾[\xBE\xBD\xDE(g\x96
+\xC3%
+\x9E\xDC	\xE5\x93\xE0\x97\xEAэN\xE7\xC6am/\xF3b6g\x8F\xA7l=\xB7\x8BAT߫\xFC\xBC\xBB\xF3\xE8\xFB\x87\xCD`=\xE2@\xF0\xB4\xCEc\xCF\xF4_\xF5;J\xCD-\xF2J\xBAIEND\xAEB`\x82
\ No newline at end of file

Modified: trunk/Tools/MiniBrowser/qt/qml/BrowserWindow.qml (118761 => 118762)


--- trunk/Tools/MiniBrowser/qt/qml/BrowserWindow.qml	2012-05-29 12:25:07 UTC (rev 118761)
+++ trunk/Tools/MiniBrowser/qt/qml/BrowserWindow.qml	2012-05-29 13:17:23 UTC (rev 118762)
@@ -269,7 +269,7 @@
                 height: 16
                 anchors {
                     left: parent.left
-                    leftMargin: 4
+                    leftMargin: 6
                     verticalCenter: parent.verticalCenter
                 }
             }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to