QtWebIconDatabaseClient.cpp [plain text]
#include "config.h"
#include "QtWebIconDatabaseClient.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(WKContextRef context)
{
m_iconDatabase = WKContextGetIconDatabase(context);
WKIconDatabaseClient iconDatabaseClient;
memset(&iconDatabaseClient, 0, sizeof(WKIconDatabaseClient));
iconDatabaseClient.version = kWKIconDatabaseClientCurrentVersion;
iconDatabaseClient.clientInfo = this;
iconDatabaseClient.didChangeIconForPageURL = didChangeIconForPageURL;
WKIconDatabaseSetIconDatabaseClient(m_iconDatabase, &iconDatabaseClient);
WKRetainPtr<WKStringRef> path = adoptWK(WKStringCreateWithQString(QtWebContext::preparedStoragePath(QtWebContext::IconDatabaseStorage)));
WKContextSetIconDatabasePath(context, path.get());
}
QtWebIconDatabaseClient::~QtWebIconDatabaseClient()
{
WKIconDatabaseClose(m_iconDatabase);
WKIconDatabaseSetIconDatabaseClient(m_iconDatabase, 0);
}
unsigned QtWebIconDatabaseClient::updateID()
{
return s_updateId;
}
void QtWebIconDatabaseClient::didChangeIconForPageURL(WKIconDatabaseRef, WKURLRef pageURL, const void* clientInfo)
{
++s_updateId;
emit toQtWebIconDatabaseClient(clientInfo)->iconChangedForPageURL(WKURLCopyQString(pageURL));
}
QImage QtWebIconDatabaseClient::iconImageForPageURL(const QString& pageURL)
{
return WKIconDatabaseTryGetQImageForURL(m_iconDatabase, adoptWK(WKURLCreateWithQString(pageURL)).get());
}
void QtWebIconDatabaseClient::retainIconForPageURL(const QString& pageURL)
{
WKIconDatabaseRetainIconForURL(m_iconDatabase, adoptWK(WKURLCreateWithQString(pageURL)).get());
}
void QtWebIconDatabaseClient::releaseIconForPageURL(const QString& pageURL)
{
WKIconDatabaseReleaseIconForURL(m_iconDatabase, adoptWK(WKURLCreateWithQString(pageURL)).get());
}
}
#include "moc_QtWebIconDatabaseClient.cpp"