Bug 839033 - HTMLProgressElement cleanup. r=mounir

This commit is contained in:
Ms2ger 2013-02-09 17:21:15 -05:00
Родитель 71bb4d183e
Коммит 31b6ebad7c
2 изменённых файлов: 37 добавлений и 50 удалений

Просмотреть файл

@ -72,66 +72,72 @@ HTMLProgressElement::ParseAttribute(int32_t aNamespaceID, nsIAtom* aAttribute,
NS_IMETHODIMP
HTMLProgressElement::GetValue(double* aValue)
{
*aValue = Value();
return NS_OK;
}
double
HTMLProgressElement::Value() const
{
const nsAttrValue* attrValue = mAttrsAndChildren.GetAttr(nsGkAtoms::value);
if (!attrValue || attrValue->Type() != nsAttrValue::eDoubleValue ||
attrValue->GetDoubleValue() < 0.0) {
*aValue = kDefaultValue;
return NS_OK;
return kDefaultValue;
}
*aValue = attrValue->GetDoubleValue();
double max;
GetMax(&max);
*aValue = std::min(*aValue, max);
return NS_OK;
return std::min(attrValue->GetDoubleValue(), Max());
}
NS_IMETHODIMP
HTMLProgressElement::SetValue(double aValue)
{
return SetDoubleAttr(nsGkAtoms::value, aValue);
ErrorResult rv;
SetValue(aValue, rv);
return rv.ErrorCode();
}
NS_IMETHODIMP
HTMLProgressElement::GetMax(double* aValue)
{
*aValue = Max();
return NS_OK;
}
double
HTMLProgressElement::Max() const
{
const nsAttrValue* attrMax = mAttrsAndChildren.GetAttr(nsGkAtoms::max);
if (attrMax && attrMax->Type() == nsAttrValue::eDoubleValue &&
attrMax->GetDoubleValue() > 0.0) {
*aValue = attrMax->GetDoubleValue();
} else {
*aValue = kDefaultMax;
if (!attrMax || attrMax->Type() != nsAttrValue::eDoubleValue ||
attrMax->GetDoubleValue() <= 0.0) {
return kDefaultMax;
}
return NS_OK;
return attrMax->GetDoubleValue();
}
NS_IMETHODIMP
HTMLProgressElement::SetMax(double aValue)
{
return SetDoubleAttr(nsGkAtoms::max, aValue);
ErrorResult rv;
SetMax(aValue, rv);
return rv.ErrorCode();
}
NS_IMETHODIMP
HTMLProgressElement::GetPosition(double* aPosition)
{
*aPosition = Position();
}
double
HTMLProgressElement::Position() const
{
if (IsIndeterminate()) {
*aPosition = kIndeterminatePosition;
return NS_OK;
return kIndeterminatePosition;
}
double value;
double max;
GetValue(&value);
GetMax(&max);
*aPosition = value / max;
return NS_OK;
return Value() / Max();
}
bool

Просмотреть файл

@ -50,36 +50,17 @@ public:
virtual nsIDOMNode* AsDOMNode() { return this; }
// WebIDL
double Value()
{
double ret;
GetValue(&ret);
return ret;
}
double Value() const;
void SetValue(double aValue, ErrorResult& aRv)
{
aRv = SetDoubleAttr(nsGkAtoms::value, aValue);
}
double Max()
{
double ret;
GetMax(&ret);
return ret;
}
double Max() const;
void SetMax(double aValue, ErrorResult& aRv)
{
aRv = SetDoubleAttr(nsGkAtoms::max, aValue);
}
double Position()
{
double ret;
GetPosition(&ret);
return ret;
}
double Position() const;
protected:
virtual JSObject* WrapNode(JSContext* aCx, JSObject* aScope,