#include "WebKitDLL.h"
#include "DOMCSSClasses.h"
#include <WebCore/BString.h>
#include <wtf/text/WTFString.h>
DOMCSSStyleDeclaration::DOMCSSStyleDeclaration(WebCore::CSSStyleDeclaration* s)
: m_style(0)
{
if (s)
s->ref();
m_style = s;
}
DOMCSSStyleDeclaration::~DOMCSSStyleDeclaration()
{
if (m_style)
m_style->deref();
}
IDOMCSSStyleDeclaration* DOMCSSStyleDeclaration::createInstance(WebCore::CSSStyleDeclaration* s)
{
if (!s)
return 0;
HRESULT hr;
IDOMCSSStyleDeclaration* domStyle = 0;
DOMCSSStyleDeclaration* newStyle = new DOMCSSStyleDeclaration(s);
hr = newStyle->QueryInterface(IID_IDOMCSSStyleDeclaration, (void**)&domStyle);
if (FAILED(hr))
return 0;
return domStyle;
}
HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::QueryInterface(REFIID riid, void** ppvObject)
{
*ppvObject = 0;
if (IsEqualGUID(riid, IID_IDOMCSSStyleDeclaration))
*ppvObject = static_cast<IDOMCSSStyleDeclaration*>(this);
else
return DOMObject::QueryInterface(riid, ppvObject);
AddRef();
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::cssText(
BSTR* )
{
ASSERT_NOT_REACHED();
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::setCssText(
BSTR cssText)
{
WTF::String cssTextString(cssText);
WebCore::ExceptionCode ec;
m_style->setCssText(cssTextString, ec);
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::getPropertyValue(
BSTR propertyName,
BSTR* result)
{
WTF::String propertyNameString(propertyName);
WTF::String value = m_style->getPropertyValue(propertyNameString);
*result = WebCore::BString(value).release();
if (value.length() && !*result)
return E_OUTOFMEMORY;
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::getPropertyCSSValue(
BSTR ,
IDOMCSSValue** )
{
ASSERT_NOT_REACHED();
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::removeProperty(
BSTR ,
BSTR* )
{
ASSERT_NOT_REACHED();
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::getPropertyPriority(
BSTR ,
BSTR* )
{
ASSERT_NOT_REACHED();
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::setProperty(
BSTR propertyName,
BSTR value,
BSTR priority)
{
WTF::String propertyNameString(propertyName);
WTF::String valueString(value);
WTF::String priorityString(priority);
WebCore::ExceptionCode code;
m_style->setProperty(propertyNameString, valueString, priorityString, code);
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::length(
UINT* )
{
ASSERT_NOT_REACHED();
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::item(
UINT ,
BSTR* )
{
ASSERT_NOT_REACHED();
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::parentRule(
IDOMCSSRule** )
{
ASSERT_NOT_REACHED();
return E_NOTIMPL;
}