ewk_favicon_database_private.h [plain text]
#ifndef ewk_favicon_database_private_h
#define ewk_favicon_database_private_h
#include "WKRetainPtr.h"
#include "ewk_favicon_database.h"
#include <WebKit2/WKBase.h>
#include <wtf/HashMap.h>
struct IconChangeCallbackData {
Ewk_Favicon_Database_Icon_Change_Cb callback;
void* userData;
IconChangeCallbackData()
: callback(0)
, userData(0)
{ }
IconChangeCallbackData(Ewk_Favicon_Database_Icon_Change_Cb _callback, void* _userData)
: callback(_callback)
, userData(_userData)
{ }
};
typedef HashMap<Ewk_Favicon_Database_Icon_Change_Cb, IconChangeCallbackData> ChangeListenerMap;
class EwkFaviconDatabase {
public:
static PassOwnPtr<EwkFaviconDatabase> create(WKIconDatabaseRef iconDatabase)
{
return adoptPtr(new EwkFaviconDatabase(iconDatabase));
}
~EwkFaviconDatabase();
PassRefPtr<cairo_surface_t> getIconSurfaceSynchronously(const char* pageURL) const;
void watchChanges(const IconChangeCallbackData& callbackData);
void unwatchChanges(Ewk_Favicon_Database_Icon_Change_Cb callback);
private:
explicit EwkFaviconDatabase(WKIconDatabaseRef iconDatabase);
static void didChangeIconForPageURL(WKIconDatabaseRef iconDatabase, WKURLRef pageURL, const void* clientInfo);
static void iconDataReadyForPageURL(WKIconDatabaseRef iconDatabase, WKURLRef pageURL, const void* clientInfo);
WKRetainPtr<WKIconDatabaseRef> m_iconDatabase;
ChangeListenerMap m_changeListeners;
};
#endif // ewk_favicon_database_private_h