WebIconDatabaseProxy.cpp [plain text]
#include "config.h"
#include "WebIconDatabaseProxy.h"
#include "DataReference.h"
#include "WebIconDatabaseMessages.h"
#include "WebIconDatabaseProxyMessages.h"
#include "WebProcess.h"
#include "WebProcessProxyMessages.h"
#include <WebCore/SharedBuffer.h>
#include <wtf/text/WTFString.h>
using namespace WebCore;
namespace WebKit {
WebIconDatabaseProxy::~WebIconDatabaseProxy()
{
}
WebIconDatabaseProxy::WebIconDatabaseProxy(WebProcess* process)
: m_isEnabled(false)
, m_process(process)
{
m_process->addMessageReceiver(Messages::WebIconDatabaseProxy::messageReceiverName(), *this);
}
bool WebIconDatabaseProxy::isEnabled() const
{
return m_isEnabled;
}
void WebIconDatabaseProxy::setEnabled(bool enabled)
{
if (enabled == m_isEnabled)
return;
m_isEnabled = enabled;
setGlobalIconDatabase(enabled ? this : 0);
}
void WebIconDatabaseProxy::retainIconForPageURL(const String& pageURL)
{
m_process->parentProcessConnection()->send(Messages::WebProcessProxy::RetainIconForPageURL(pageURL), 0);
}
void WebIconDatabaseProxy::releaseIconForPageURL(const String& pageURL)
{
m_process->parentProcessConnection()->send(Messages::WebProcessProxy::ReleaseIconForPageURL(pageURL), 0);
}
Image* WebIconDatabaseProxy::synchronousIconForPageURL(const String& pageURL, const IntSize& )
{
IPC::DataReference result;
if (!m_process->parentProcessConnection()->sendSync(Messages::WebIconDatabase::SynchronousIconDataForPageURL(pageURL), Messages::WebIconDatabase::SynchronousIconDataForPageURL::Reply(result), 0))
return 0;
return 0;
}
String WebIconDatabaseProxy::synchronousIconURLForPageURL(const String& )
{
return String();
}
bool WebIconDatabaseProxy::synchronousIconDataKnownForIconURL(const String& )
{
return false;
}
IconLoadDecision WebIconDatabaseProxy::synchronousLoadDecisionForIconURL(const String& , DocumentLoader*)
{
return IconLoadNo;
}
bool WebIconDatabaseProxy::supportsAsynchronousMode()
{
return true;
}
void WebIconDatabaseProxy::loadDecisionForIconURL(const String& iconURL, PassRefPtr<WebCore::IconLoadDecisionCallback> callback)
{
uint64_t id = callback->callbackID();
m_iconLoadDecisionCallbacks.add(id, callback);
m_process->parentProcessConnection()->send(Messages::WebIconDatabase::GetLoadDecisionForIconURL(iconURL, id), 0);
}
void WebIconDatabaseProxy::receivedIconLoadDecision(int decision, uint64_t callbackID)
{
RefPtr<WebCore::IconLoadDecisionCallback> callback = m_iconLoadDecisionCallbacks.take(callbackID);
if (callback)
callback->performCallback(static_cast<WebCore::IconLoadDecision>(decision));
}
void WebIconDatabaseProxy::iconDataForIconURL(const String& , PassRefPtr<WebCore::IconDataCallback>)
{
}
void WebIconDatabaseProxy::setIconURLForPageURL(const String& iconURL, const String& pageURL)
{
m_process->parentProcessConnection()->send(Messages::WebIconDatabase::SetIconURLForPageURL(iconURL, pageURL), 0);
}
void WebIconDatabaseProxy::setIconDataForIconURL(PassRefPtr<SharedBuffer> iconData, const String& iconURL)
{
IPC::DataReference data(reinterpret_cast<const uint8_t*>(iconData ? iconData->data() : 0), iconData ? iconData->size() : 0);
m_process->parentProcessConnection()->send(Messages::WebIconDatabase::SetIconDataForIconURL(data, iconURL), 0);
}
void WebIconDatabaseProxy::urlImportFinished()
{
}
}