зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1458458: Move setting SMIL override values into nsDOMCSSAttrDeclaration. r=hiro
MozReview-Commit-ID: KkXGtl6vz2L
This commit is contained in:
Родитель
45a1c9c1db
Коммит
e7d5158b29
|
@ -16,6 +16,7 @@ EXPORTS += [
|
|||
'nsSMILAnimationFunction.h',
|
||||
'nsSMILCompositorTable.h',
|
||||
'nsSMILCSSProperty.h',
|
||||
'nsSMILCSSValueType.h',
|
||||
'nsSMILInstanceTime.h',
|
||||
'nsSMILInterval.h',
|
||||
'nsSMILKeySpline.h',
|
||||
|
|
|
@ -107,22 +107,7 @@ nsresult
|
|||
nsSMILCSSProperty::SetAnimValue(const nsSMILValue& aValue)
|
||||
{
|
||||
NS_ENSURE_TRUE(IsPropertyAnimatable(mPropID), NS_ERROR_FAILURE);
|
||||
|
||||
// Convert nsSMILValue to string
|
||||
nsAutoString valStr;
|
||||
nsSMILCSSValueType::ValueToString(aValue, valStr);
|
||||
|
||||
// Use string value to style the target element
|
||||
nsDOMCSSAttributeDeclaration* overrideDecl = mElement->GetSMILOverrideStyle();
|
||||
if (overrideDecl) {
|
||||
nsAutoString oldValStr;
|
||||
overrideDecl->GetPropertyValue(mPropID, oldValStr);
|
||||
if (valStr.Equals(oldValStr)) {
|
||||
return NS_OK;
|
||||
}
|
||||
overrideDecl->SetPropertyValue(mPropID, valStr, nullptr);
|
||||
}
|
||||
return NS_OK;
|
||||
return mElement->GetSMILOverrideStyle()->SetSMILValue(mPropID, aValue);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "nsIDocument.h"
|
||||
#include "nsIURI.h"
|
||||
#include "nsNodeUtils.h"
|
||||
#include "nsSMILCSSValueType.h"
|
||||
#include "nsWrapperCacheInlines.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "ActiveLayerTracker.h"
|
||||
|
@ -180,6 +181,26 @@ nsDOMCSSAttributeDeclaration::GetServoCSSParsingEnvironment(
|
|||
};
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsDOMCSSAttributeDeclaration::SetSMILValue(const nsCSSPropertyID aPropID,
|
||||
const nsSMILValue& aValue)
|
||||
{
|
||||
MOZ_ASSERT(mIsSMILOverride);
|
||||
|
||||
// Convert nsSMILValue to string.
|
||||
//
|
||||
// FIXME(emilio): This roundtrip should go away.
|
||||
nsAutoString valStr;
|
||||
nsSMILCSSValueType::ValueToString(aValue, valStr);
|
||||
|
||||
nsAutoString oldValStr;
|
||||
GetPropertyValue(aPropID, oldValStr);
|
||||
if (valStr.Equals(oldValStr)) {
|
||||
return NS_OK;
|
||||
}
|
||||
return SetPropertyValue(aPropID, valStr, nullptr);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsDOMCSSAttributeDeclaration::SetPropertyValue(const nsCSSPropertyID aPropID,
|
||||
const nsAString& aValue,
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "nsDOMCSSDeclaration.h"
|
||||
|
||||
|
||||
class nsSMILValue;
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
class DomGroup;
|
||||
|
@ -48,6 +49,8 @@ public:
|
|||
return mElement;
|
||||
}
|
||||
|
||||
nsresult SetSMILValue(const nsCSSPropertyID aPropID, const nsSMILValue&);
|
||||
|
||||
nsresult SetPropertyValue(const nsCSSPropertyID aPropID,
|
||||
const nsAString& aValue,
|
||||
nsIPrincipal* aSubjectPrincipal) override;
|
||||
|
|
Загрузка…
Ссылка в новой задаче