diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-09-13 12:51:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-19 20:50:05 +0200 |
commit | d441d6f39bb846989d95bcf5caf387b42414718d (patch) | |
tree | e367e64a75991c554930278175d403c072de6bb8 /Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp | |
parent | 0060b2994c07842f4c59de64b5e3e430525c4b90 (diff) | |
download | qtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz |
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit.
Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp')
-rw-r--r-- | Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp | 72 |
1 files changed, 28 insertions, 44 deletions
diff --git a/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp b/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp index 7dbb273fd..86ac710bf 100644 --- a/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp +++ b/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp @@ -20,89 +20,73 @@ #include "config.h" #include "QtWebIconDatabaseClient.h" -#include "Image.h" -#include "KURL.h" -#include "SharedBuffer.h" -#include "WKURLQt.h" -#include "WebContext.h" -#include "WebIconDatabase.h" +#include "QtWebContext.h" #include <QtCore/QHash> #include <QtCore/QObject> #include <QtCore/QUrl> #include <QtGui/QImage> +#include <WKContext.h> +#include <WKContextPrivate.h> +#include <WKIconDatabaseQt.h> +#include <WKRetainPtr.h> +#include <WKStringQt.h> +#include <WKURLQt.h> namespace WebKit { +static unsigned s_updateId = 0; + static inline QtWebIconDatabaseClient* toQtWebIconDatabaseClient(const void* clientInfo) { ASSERT(clientInfo); return reinterpret_cast<QtWebIconDatabaseClient*>(const_cast<void*>(clientInfo)); } -QtWebIconDatabaseClient::QtWebIconDatabaseClient(WebContext *context) +QtWebIconDatabaseClient::QtWebIconDatabaseClient(WKContextRef context) { - // The setter calls the getter here as it triggers the startup of the icon database. - if (!context->iconDatabase()->isOpen()) - context->setIconDatabasePath(context->iconDatabasePath()); - m_iconDatabase = context->iconDatabase(); + m_iconDatabase = WKContextGetIconDatabase(context); WKIconDatabaseClient iconDatabaseClient; memset(&iconDatabaseClient, 0, sizeof(WKIconDatabaseClient)); iconDatabaseClient.version = kWKIconDatabaseClientCurrentVersion; iconDatabaseClient.clientInfo = this; iconDatabaseClient.didChangeIconForPageURL = didChangeIconForPageURL; - WKIconDatabaseSetIconDatabaseClient(toAPI(m_iconDatabase.get()), &iconDatabaseClient); + WKIconDatabaseSetIconDatabaseClient(m_iconDatabase, &iconDatabaseClient); + // Triggers the startup of the icon database. + WKRetainPtr<WKStringRef> path = adoptWK(WKStringCreateWithQString(QtWebContext::preparedStoragePath(QtWebContext::IconDatabaseStorage))); + WKContextSetIconDatabasePath(context, path.get()); } QtWebIconDatabaseClient::~QtWebIconDatabaseClient() { - m_iconDatabase->close(); - WKIconDatabaseSetIconDatabaseClient(toAPI(m_iconDatabase.get()), 0); + WKIconDatabaseClose(m_iconDatabase); + WKIconDatabaseSetIconDatabaseClient(m_iconDatabase, 0); } -void QtWebIconDatabaseClient::didChangeIconForPageURL(WKIconDatabaseRef, WKURLRef pageURL, const void* clientInfo) +unsigned QtWebIconDatabaseClient::updateID() { - emit toQtWebIconDatabaseClient(clientInfo)->iconChangedForPageURL(toImpl(pageURL)->string()); + return s_updateId; } -WTF::String QtWebIconDatabaseClient::iconForPageURL(const WTF::String& pageURL) +void QtWebIconDatabaseClient::didChangeIconForPageURL(WKIconDatabaseRef, WKURLRef pageURL, const void* clientInfo) { - 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; + ++s_updateId; + emit toQtWebIconDatabaseClient(clientInfo)->iconChangedForPageURL(WKURLCopyQString(pageURL)); } -QImage QtWebIconDatabaseClient::iconImageForPageURL(const WTF::String& pageURL, const QSize& iconSize) +QImage QtWebIconDatabaseClient::iconImageForPageURL(const QString& pageURL) { - MutexLocker locker(m_imageLock); - - WebCore::IntSize size(iconSize.width(), iconSize.height()); - - QPixmap* nativeImage = m_iconDatabase->nativeImageForPageURL(pageURL, size); - if (!nativeImage) - return QImage(); - - return nativeImage->toImage(); + return WKIconDatabaseTryGetQImageForURL(m_iconDatabase, adoptWK(WKURLCreateWithQString(pageURL)).get()); } -void QtWebIconDatabaseClient::retainIconForPageURL(const String& pageURL) +void QtWebIconDatabaseClient::retainIconForPageURL(const QString& pageURL) { - m_iconDatabase->retainIconForPageURL(pageURL); + WKIconDatabaseRetainIconForURL(m_iconDatabase, adoptWK(WKURLCreateWithQString(pageURL)).get()); } -void QtWebIconDatabaseClient::releaseIconForPageURL(const String& pageURL) +void QtWebIconDatabaseClient::releaseIconForPageURL(const QString& pageURL) { - m_iconDatabase->releaseIconForPageURL(pageURL); + WKIconDatabaseReleaseIconForURL(m_iconDatabase, adoptWK(WKURLCreateWithQString(pageURL)).get()); } } // namespace WebKit |