mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 15:25:52 +00:00
Bug 1276831 - part1 : VTTCue's position should be double or auto keyword. r=rillian,smaug
MozReview-Commit-ID: 459CjJUPpW9 --HG-- extra : rebase_source : 872fef1d221f64e1411bc2a41d7e808ba1b38d63
This commit is contained in:
parent
4e7e9eb905
commit
0ab2d5dc25
@ -33,7 +33,7 @@ StaticRefPtr<nsIWebVTTParserWrapper> TextTrackCue::sParserWrapper;
|
||||
void
|
||||
TextTrackCue::SetDefaultCueSettings()
|
||||
{
|
||||
mPosition = 50;
|
||||
mPositionIsAutoKeyword = true;
|
||||
mPositionAlign = PositionAlignSetting::Center;
|
||||
mSize = 100.0;
|
||||
mPauseOnExit = false;
|
||||
@ -204,6 +204,20 @@ TextTrackCue::ComputedLine()
|
||||
return (-1.0) * showingTracksNum;
|
||||
}
|
||||
|
||||
double
|
||||
TextTrackCue::ComputedPosition()
|
||||
{
|
||||
// See spec https://w3c.github.io/webvtt/#cue-computed-position
|
||||
if (!mPositionIsAutoKeyword) {
|
||||
return mPosition;
|
||||
} else if (mAlign == AlignSetting::Left) {
|
||||
return 0.0;
|
||||
} else if (mAlign == AlignSetting::Right) {
|
||||
return 100.0;
|
||||
}
|
||||
return 50.0;
|
||||
}
|
||||
|
||||
PositionAlignSetting
|
||||
TextTrackCue::ComputedPositionAlign()
|
||||
{
|
||||
|
@ -190,24 +190,35 @@ public:
|
||||
mLineAlign = aLineAlign;
|
||||
}
|
||||
|
||||
int32_t Position() const
|
||||
void GetPosition(OwningDoubleOrAutoKeyword& aPosition) const
|
||||
{
|
||||
return mPosition;
|
||||
}
|
||||
|
||||
void SetPosition(int32_t aPosition, ErrorResult& aRv)
|
||||
{
|
||||
if (mPosition == aPosition) {
|
||||
if (mPositionIsAutoKeyword) {
|
||||
aPosition.SetAsAutoKeyword() = AutoKeyword::Auto;
|
||||
return;
|
||||
}
|
||||
aPosition.SetAsDouble() = mPosition;
|
||||
}
|
||||
|
||||
if (aPosition > 100 || aPosition < 0){
|
||||
void SetPosition(const DoubleOrAutoKeyword& aPosition, ErrorResult& aRv)
|
||||
{
|
||||
if (!aPosition.IsAutoKeyword() &&
|
||||
(aPosition.GetAsDouble() > 100.0 || aPosition.GetAsDouble() < 0.0)){
|
||||
aRv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR);
|
||||
return;
|
||||
}
|
||||
|
||||
mReset = true;
|
||||
mPosition = aPosition;
|
||||
if (aPosition.IsDouble() &&
|
||||
(mPositionIsAutoKeyword || (aPosition.GetAsDouble() != mPosition))) {
|
||||
mPositionIsAutoKeyword = false;
|
||||
mPosition = aPosition.GetAsDouble();
|
||||
mReset = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (aPosition.IsAutoKeyword() && !mPositionIsAutoKeyword) {
|
||||
mPositionIsAutoKeyword = true;
|
||||
mReset = true;
|
||||
}
|
||||
}
|
||||
|
||||
PositionAlignSetting PositionAlign() const
|
||||
@ -300,6 +311,7 @@ public:
|
||||
}
|
||||
|
||||
double ComputedLine();
|
||||
double ComputedPosition();
|
||||
PositionAlignSetting ComputedPositionAlign();
|
||||
|
||||
// Helper functions for implementation.
|
||||
@ -360,7 +372,8 @@ private:
|
||||
RefPtr<TextTrack> mTrack;
|
||||
RefPtr<HTMLTrackElement> mTrackElement;
|
||||
nsString mId;
|
||||
int32_t mPosition;
|
||||
double mPosition;
|
||||
bool mPositionIsAutoKeyword;
|
||||
PositionAlignSetting mPositionAlign;
|
||||
double mSize;
|
||||
bool mPauseOnExit;
|
||||
|
@ -47,7 +47,7 @@ interface VTTCue : TextTrackCue {
|
||||
[SetterThrows]
|
||||
attribute LineAlignSetting lineAlign;
|
||||
[SetterThrows]
|
||||
attribute long position;
|
||||
attribute (double or AutoKeyword) position;
|
||||
[SetterThrows]
|
||||
attribute PositionAlignSetting positionAlign;
|
||||
[SetterThrows]
|
||||
@ -66,5 +66,7 @@ partial interface VTTCue {
|
||||
[ChromeOnly]
|
||||
readonly attribute double computedLine;
|
||||
[ChromeOnly]
|
||||
readonly attribute double computedPosition;
|
||||
[ChromeOnly]
|
||||
readonly attribute PositionAlignSetting computedPositionAlign;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user