WebSecurityOrigin.cpp [plain text]
#include "config.h"
#include "WebSecurityOrigin.h"
#include "WebKitDLL.h"
#include <WebCore/BString.h>
#include <WebCore/DatabaseManager.h>
using namespace WebCore;
WebSecurityOrigin* WebSecurityOrigin::createInstance(SecurityOrigin* securityOrigin)
{
WebSecurityOrigin* origin = new WebSecurityOrigin(securityOrigin);
origin->AddRef();
return origin;
}
WebSecurityOrigin::WebSecurityOrigin(SecurityOrigin* securityOrigin)
: m_refCount(0)
, m_securityOrigin(securityOrigin)
{
gClassCount++;
gClassNameCount.add("WebSecurityOrigin");
}
WebSecurityOrigin::~WebSecurityOrigin()
{
gClassCount--;
gClassNameCount.remove("WebSecurityOrigin");
}
HRESULT STDMETHODCALLTYPE WebSecurityOrigin::QueryInterface(REFIID riid, void** ppvObject)
{
*ppvObject = 0;
if (IsEqualGUID(riid, IID_IUnknown))
*ppvObject = static_cast<IWebSecurityOrigin*>(this);
else if (IsEqualGUID(riid, IID_IWebSecurityOrigin))
*ppvObject = static_cast<IWebSecurityOrigin*>(this);
else if (IsEqualGUID(riid, __uuidof(this)))
*ppvObject = this;
else
return E_NOINTERFACE;
AddRef();
return S_OK;
}
ULONG STDMETHODCALLTYPE WebSecurityOrigin::AddRef()
{
return ++m_refCount;
}
ULONG STDMETHODCALLTYPE WebSecurityOrigin::Release()
{
ULONG newRef = --m_refCount;
if (!newRef)
delete this;
return newRef;
}
HRESULT STDMETHODCALLTYPE WebSecurityOrigin::protocol(
BSTR* result)
{
if (!result)
return E_POINTER;
*result = BString(m_securityOrigin->protocol()).release();
return S_OK;
}
HRESULT STDMETHODCALLTYPE WebSecurityOrigin::host(
BSTR* result)
{
if (!result)
return E_POINTER;
*result = BString(m_securityOrigin->host()).release();
return S_OK;
}
HRESULT STDMETHODCALLTYPE WebSecurityOrigin::port(
unsigned short* result)
{
if (!result)
return E_POINTER;
*result = m_securityOrigin->port();
return S_OK;
}
HRESULT STDMETHODCALLTYPE WebSecurityOrigin::usage(
unsigned long long* result)
{
#if ENABLE(SQL_DATABASE)
if (!result)
return E_POINTER;
*result = DatabaseManager::manager().usageForOrigin(m_securityOrigin.get());
return S_OK;
#else
UNUSED_PARAM(result);
return E_NOTIMPL;
#endif
}
HRESULT STDMETHODCALLTYPE WebSecurityOrigin::quota(
unsigned long long* result)
{
#if ENABLE(SQL_DATABASE)
if (!result)
return E_POINTER;
*result = DatabaseManager::manager().quotaForOrigin(m_securityOrigin.get());
return S_OK;
#else
UNUSED_PARAM(result);
return E_NOTIMPL;
#endif
}
HRESULT STDMETHODCALLTYPE WebSecurityOrigin::setQuota(
unsigned long long quota)
{
#if ENABLE(SQL_DATABASE)
DatabaseManager::manager().setQuota(m_securityOrigin.get(), quota);
return S_OK;
#else
UNUSED_PARAM(quota);
return E_NOTIMPL;
#endif
}