UniqueIDBDatabaseIdentifier.cpp [plain text]
#include "config.h"
#include "UniqueIDBDatabaseIdentifier.h"
#if ENABLE(INDEXED_DATABASE) && ENABLE(DATABASE_PROCESS)
#include <wtf/text/StringBuilder.h>
namespace WebKit {
UniqueIDBDatabaseIdentifier::UniqueIDBDatabaseIdentifier()
{
}
UniqueIDBDatabaseIdentifier::UniqueIDBDatabaseIdentifier(const String& databaseName, const SecurityOriginData& openingOrigin, const SecurityOriginData& mainFrameOrigin)
: m_databaseName(databaseName)
, m_openingOrigin(openingOrigin)
, m_mainFrameOrigin(mainFrameOrigin)
{
ASSERT(!m_databaseName.isNull());
}
UniqueIDBDatabaseIdentifier::UniqueIDBDatabaseIdentifier(WTF::HashTableDeletedValueType)
: m_databaseName(WTF::HashTableDeletedValue)
{
}
bool UniqueIDBDatabaseIdentifier::isHashTableDeletedValue() const
{
return m_databaseName.isHashTableDeletedValue();
}
unsigned UniqueIDBDatabaseIdentifier::hash() const
{
unsigned hashCodes[7] = {
m_databaseName.impl() ? m_databaseName.impl()->hash() : 0,
m_openingOrigin.protocol.impl() ? m_openingOrigin.protocol.impl()->hash() : 0,
m_openingOrigin.host.impl() ? m_openingOrigin.host.impl()->hash() : 0,
static_cast<unsigned>(m_openingOrigin.port),
m_mainFrameOrigin.protocol.impl() ? m_mainFrameOrigin.protocol.impl()->hash() : 0,
m_mainFrameOrigin.host.impl() ? m_mainFrameOrigin.host.impl()->hash() : 0,
static_cast<unsigned>(m_mainFrameOrigin.port)
};
return StringHasher::hashMemory<sizeof(hashCodes)>(hashCodes);
}
bool UniqueIDBDatabaseIdentifier::isNull() const
{
return m_databaseName.isNull();
}
UniqueIDBDatabaseIdentifier UniqueIDBDatabaseIdentifier::isolatedCopy() const
{
UniqueIDBDatabaseIdentifier result;
result.m_databaseName = m_databaseName.isolatedCopy();
result.m_openingOrigin = m_openingOrigin.isolatedCopy();
result.m_mainFrameOrigin = m_mainFrameOrigin.isolatedCopy();
return result;
}
bool operator==(const UniqueIDBDatabaseIdentifier& a, const UniqueIDBDatabaseIdentifier& b)
{
if (&a == &b)
return true;
return a.databaseName() == b.databaseName()
&& a.openingOrigin() == b.openingOrigin()
&& a.mainFrameOrigin() == b.mainFrameOrigin();
}
}
#endif // ENABLE(INDEXED_DATABASE) && ENABLE(DATABASE_PROCESS)