WebSecurityOrigin.cpp [plain text]
#include "WebSecurityOrigin.h"
#include "WebKitDLL.h"
#include "MarshallingHelpers.h"
#include <WebCore/BString.h>
#include <WebCore/DatabaseManager.h>
#include <WebCore/URL.h>
using namespace WebCore;
WebSecurityOrigin* WebSecurityOrigin::createInstance(SecurityOrigin* securityOrigin)
{
WebSecurityOrigin* origin = new WebSecurityOrigin(securityOrigin);
origin->AddRef();
return origin;
}
WebSecurityOrigin::WebSecurityOrigin(SecurityOrigin* securityOrigin)
: m_securityOrigin(securityOrigin)
{
gClassCount++;
gClassNameCount().add("WebSecurityOrigin");
}
WebSecurityOrigin::~WebSecurityOrigin()
{
gClassCount--;
gClassNameCount().remove("WebSecurityOrigin");
}
HRESULT WebSecurityOrigin::QueryInterface(_In_ REFIID riid, _COM_Outptr_ void** ppvObject)
{
if (!ppvObject)
return E_POINTER;
*ppvObject = nullptr;
if (IsEqualGUID(riid, IID_IUnknown))
*ppvObject = static_cast<IWebSecurityOrigin2*>(this);
else if (IsEqualGUID(riid, IID_IWebSecurityOrigin))
*ppvObject = static_cast<IWebSecurityOrigin*>(this);
else if (IsEqualGUID(riid, IID_IWebSecurityOrigin2))
*ppvObject = static_cast<IWebSecurityOrigin2*>(this);
else if (IsEqualGUID(riid, __uuidof(this)))
*ppvObject = this;
else
return E_NOINTERFACE;
AddRef();
return S_OK;
}
ULONG WebSecurityOrigin::AddRef()
{
return ++m_refCount;
}
ULONG WebSecurityOrigin::Release()
{
ULONG newRef = --m_refCount;
if (!newRef)
delete this;
return newRef;
}
HRESULT WebSecurityOrigin::protocol(__deref_opt_out BSTR* result)
{
if (!result)
return E_POINTER;
*result = BString(m_securityOrigin->protocol()).release();
return S_OK;
}
HRESULT WebSecurityOrigin::host(__deref_opt_out BSTR* result)
{
if (!result)
return E_POINTER;
*result = BString(m_securityOrigin->host()).release();
return S_OK;
}
HRESULT WebSecurityOrigin::port(_Out_ unsigned short* result)
{
if (!result)
return E_POINTER;
*result = m_securityOrigin->port();
return S_OK;
}
HRESULT WebSecurityOrigin::usage(_Out_ unsigned long long* result)
{
if (!result)
return E_POINTER;
*result = DatabaseManager::singleton().usageForOrigin(m_securityOrigin.get());
return S_OK;
}
HRESULT WebSecurityOrigin::quota(_Out_ unsigned long long* result)
{
if (!result)
return E_POINTER;
*result = DatabaseManager::singleton().quotaForOrigin(m_securityOrigin.get());
return S_OK;
}
HRESULT WebSecurityOrigin::setQuota(unsigned long long quota)
{
DatabaseManager::singleton().setQuota(m_securityOrigin.get(), quota);
return S_OK;
}
HRESULT WebSecurityOrigin::initWithURL(_In_ BSTR urlBstr)
{
m_securityOrigin = WebCore::SecurityOrigin::create(MarshallingHelpers::BSTRToKURL(urlBstr));
return S_OK;
}