'ratechange' event always fired when playback starts

RESOLVED INVALID

Status

()

defect
RESOLVED INVALID
6 years ago
4 years ago

People

(Reporter: niklas, Assigned: padenot)

Tracking

20 Branch
x86
All
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

Reporter

Description

6 years ago
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31

Steps to reproduce:

Starting from Firefox 20.0 (beta) html5 video tag always emits the 'ratechange' event when playback starts.

Reproduce:

open http://www.w3.org/2010/05/video/mediaevents.html in Firefox, click play button in the video container.


Actual results:

ratechange event-counter in the table beneath the video gets increased by one


Expected results:

On other browsers and Firefox 19 and below starting playback doesn't trigger ratechange event. Is this an intentional feature change or a bug?

Updated

6 years ago
Component: Untriaged → Video/Audio
Product: Firefox → Core
Confirmed with Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0 ID:20130806104538 CSet: 1e381c91885d

Chrome 30/MSIE 11 do not fire the Event.
Blocks: 495040
Status: UNCONFIRMED → NEW
Ever confirmed: true
OS: Mac OS X → All
Assignee

Updated

6 years ago
Assignee: nobody → paul
Assignee

Comment 2

6 years ago
Firefox's behavior is correct per spec: [1]

> When the defaultPlaybackRate or playbackRate attributes change value (either by being set 
> by script or by being changed directly by the user agent, e.g. in response to user control) 
> the user agent must queue a task to fire a simple event named ratechange at the media 
> element.

> The "play" function *in the user agent's interface* must set the playbackRate attribute to 
> the value of the defaultPlaybackRate attribute before invoking the play() method. When a 
> media element has a current media controller, the attributes and method with those names on 
> that MediaController object must be used. Otherwise, the attributes and method with those 
> names on the media element itself must be used. 

(emphasis mine)

That is, when starting the playback using the built-in controls (in other terms, clicking on the "play" icon), 'ratechange' should be fired. When using the |play()| method in script, 'ratechange' should not be fired.

[1]: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#media-elements
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → INVALID
Reporter

Comment 3

6 years ago
OK, but how about the fact that also by calling video.play() in script also fires this event on Firefox? It can be observed on the same page ( http://www.w3.org/2010/05/video/mediaevents.html ). Just hit the button beneath the actual media container, which just calls the play() -method. I can produce a minimal sample for this if needed.
Status: RESOLVED → REOPENED
Resolution: INVALID → ---
Assignee

Comment 4

6 years ago
In the current trunk, using the |play()| method in script does not fire the "ratechange" event (clicking on the button that has the |play()|, label, as you say).

Can you try on a Nightly build [1] if you can reproduce? It is very likely this has been fixed recently.

[1]: https://nightly.mozilla.org/
Status: REOPENED → RESOLVED
Closed: 6 years ago6 years ago
Flags: needinfo?(niklas)
Resolution: --- → INVALID
Reporter

Comment 5

6 years ago
Yes you are correct, it's fixed in the nightly build. Thank you for looking into this!
Flags: needinfo?(niklas)
You need to log in before you can comment on or make changes to this bug.