ProgressShadowElement.cpp [plain text]
#include "config.h"
#if ENABLE(PROGRESS_ELEMENT)
#include "ProgressShadowElement.h"
#include "HTMLNames.h"
#include "HTMLProgressElement.h"
#include "RenderProgress.h"
namespace WebCore {
using namespace HTMLNames;
ProgressShadowElement::ProgressShadowElement(Document* document)
: HTMLDivElement(HTMLNames::divTag, document)
{
}
HTMLProgressElement* ProgressShadowElement::progressElement() const
{
return toHTMLProgressElement(shadowHost());
}
bool ProgressShadowElement::rendererIsNeeded(const NodeRenderingContext& context)
{
RenderObject* progressRenderer = progressElement()->renderer();
return progressRenderer && !progressRenderer->style()->hasAppearance() && HTMLDivElement::rendererIsNeeded(context);
}
ProgressInnerElement::ProgressInnerElement(Document* document)
: ProgressShadowElement(document)
{
DEFINE_STATIC_LOCAL(AtomicString, pseudoId, ("-webkit-progress-inner-element", AtomicString::ConstructFromLiteral));
setPseudo(pseudoId);
}
PassRefPtr<ProgressInnerElement> ProgressInnerElement::create(Document* document)
{
return adoptRef(new ProgressInnerElement(document));
}
RenderObject* ProgressInnerElement::createRenderer(RenderArena* arena, RenderStyle*)
{
return new (arena) RenderProgress(this);
}
bool ProgressInnerElement::rendererIsNeeded(const NodeRenderingContext& context)
{
if (progressElement()->hasAuthorShadowRoot())
return HTMLDivElement::rendererIsNeeded(context);
RenderObject* progressRenderer = progressElement()->renderer();
return progressRenderer && !progressRenderer->style()->hasAppearance() && HTMLDivElement::rendererIsNeeded(context);
}
void ProgressValueElement::setWidthPercentage(double width)
{
setInlineStyleProperty(CSSPropertyWidth, width, CSSPrimitiveValue::CSS_PERCENTAGE);
}
}
#endif