Closed Bug 1145758 Opened 9 years ago Closed 9 years ago

[Music] Dragging the timeline selector / scrubber to the end of a paused track will load the next track and automatically unpause it.

Categories

(Firefox OS Graveyard :: Gaia::Music, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

(b2g-v2.0 wontfix, b2g-v2.1 wontfix, b2g-v2.2 wontfix, b2g-master verified)

VERIFIED FIXED
2.2 S10 (17apr)
Tracking Status
b2g-v2.0 --- wontfix
b2g-v2.1 --- wontfix
b2g-v2.2 --- wontfix
b2g-master --- verified

People

(Reporter: jmitchell, Assigned: djf)

References

()

Details

(Whiteboard: [3.0-Daily-Testing] [priority])

Attachments

(6 files)

Description:
Pausing a music track and dragging the selector to the end of the track not only advances the track but it also over-rides the user input / intent and unpauses the music app as well. Only tapping the unpause and perhaps the track forward button should remove the current pause state.

Repro Steps:
1) Update a Flame to 20150320010204
2) Launch Music App
3) Select and begin playing a song
4) Pause the song and drag the timeline selector to the end of the track


Actual:
next track is loaded and the app unpauses

Expected:
app should remain in the pause state

Environmental Variables:
Device: Flame Master
Build ID: 20150320010204
Gaia: 8837f94418d69a0b06c1f4843b0779e2bb72165a
Gecko: 4d2d97b3ba34
Gonk: b83fc73de7b64594cd74b33e498bf08332b5d87b
Version: 39.0a1 (Master)
Firmware Version: v188-1
User Agent: Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.0


Repro frequency: 7/7
See attached: logcat
This issue also occurs on Flame 2.2, 2.1 and 2.0

Device: Flame 2.2 (KK - Nightly - Full Flash - 319mem)
Build ID: 20150318055750
Gaia: b8051d370ddf4e5bd8e7d8a19fb9eeb5fd6ffb39
Gecko: 41a61514461e
Gonk: b83fc73de7b64594cd74b33e498bf08332b5d87b
Version: 39.0a1 (Master)
Firmware Version: v188-1
User Agent: Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.0

Device: Flame 2.1 (KK - Nightly - Full Flash - 319mem)
Build ID: 20150318001207
Gaia: 13c85d57f49b4bfd657ff674f2b530c141c94803
Gecko: 2fbd284621e2
Gonk: b83fc73de7b64594cd74b33e498bf08332b5d87b
Version: 34.0 (2.1)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0

Device: Flame 2.0 (KK - Nightly - Full Flash - 319mem)
Build ID: 20150316000201
Gaia: 896803174633fc6acd3fd105f81c349b8e9b9633
Gecko: 2fc0c40fd074
Gonk: b83fc73de7b64594cd74b33e498bf08332b5d87b
Version: 32.0 (2.0)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:32.0) Gecko/32.0 Firefox/32.0
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
Android, iOS and Windows phones do not jump to the next song when scrubbing to the end of a song while in a paused state.

Not nominating to block on this since this appears to be a legacy issue.
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(ktucker)
ni?ing tif again to confirm whether it matches our current ux guideline
Flags: needinfo?(tshakespeare)
I'll answer for Tif here as I am covering music UX.
The expected behaviour is correct, if the song is paused it should not skip to the next song even when the user drags the scrubber to the end.
Flags: needinfo?(tshakespeare)
In light of Comment 4, although it's not a regression, since it is something that can be hit rather easily, (and when it happens, the user might be frustrated to know that the song has changed) nominating for 2.2 to gauge consensus.
blocking-b2g: --- → 2.2?
I am wondering if this deliberate act of pushing the slider to end of a paused song is a common user scenario. I don't think we should block a release on this. But lets discuss this in the triage and decide. 

Thanks
Hema
Not blocking for 2.2, but setting as priority bug to fix in the next release. Hub, please take this on. 

Thanks
Hema
Assignee: nobody → hub
blocking-b2g: 2.2? → ---
Whiteboard: [3.0-Daily-Testing] → [3.0-Daily-Testing] [priority]
Attachment #8590059 - Flags: review?(squibblyflabbetydoo)
Status: NEW → ASSIGNED
I propose we look at removing the workaround in bug 1154048. (see gh comments)
Comment on attachment 8590059 [details] [review]
[gaia] hfiguiere:bug1145758-scrubber-paused > mozilla-b2g:master

Sure. With that in mind, let's land this as a minimal fix for the bug here.
Attachment #8590059 - Flags: review?(squibblyflabbetydoo) → review+
Blocks: 1154048
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → 2.2 S10 (17apr)
Comment on attachment 8590059 [details] [review]
[gaia] hfiguiere:bug1145758-scrubber-paused > mozilla-b2g:master

[Approval Request Comment]
[Bug caused by] (feature/regressing bug #): Broken feature.
[User impact] if declined: Feature will stay broken. Not a regression.
[Testing completed]: Manually tested.
[Risk to taking this patch] (and alternatives if risky): none I can see
[String changes made]: none
Attachment #8590059 - Flags: approval-gaia-v2.2?(bbajaj)
Attachment #8590059 - Flags: approval-gaia-v2.2?(bbajaj) → approval-gaia-v2.2+
Keywords: verifyme
According to the STR of Comment 0,this bug has been successfully verified on latest Nightly Flame v3.0.
See attachment: verified_v3.0.mp4.
Reproduce rate: 0/5

Device: Flame 3.0 build(Pass)
Build ID               20150414160204
Gaia Revision          8e28588496f82f8f069c171c65842d622b9d8d7d
Gaia Date              2015-04-14 18:43:50
Gecko Revision         https://hg.mozilla.org/mozilla-central/rev/de27ac2ab94f
Gecko Version          40.0a1
Device Name            flame
Firmware(Release)      4.4.2
Firmware(Incremental)  eng.cltbld.20150414.194002
Firmware Date          Tue Apr 14 19:40:12 EDT 2015
Bootloader             L1TC000118D0
According to the STR of Comment 0,this bug has been successfully verified on latest Nightly Flame v2.2.

Actual results:Pause the song and drag the timeline selector to the end of the track,music remains in the pause state.
Reproduce rate: 0/5


Leaving "verifyme" for Flame v2.1/2.0 uplift.
Device: Flame 2.2 build(Pass)
Build ID               20150415162504
Gaia Revision          89a94a8b9c9087da916751697a61ba15bc0688c3
Gaia Date              2015-04-15 20:05:38
Gecko Revision         https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/20e92b626530
Gecko Version          37.0
Device Name            flame
Firmware(Release)      4.4.2
Firmware(Incremental)  eng.cltbld.20150415.201243
Firmware Date          Wed Apr 15 20:12:52 EDT 2015
Bootloader             L1TC000118D0
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage+][MGSEI-Triage+]
This bug caused a serious regression. See duplicate bugs 1155118 and 1156519. Reopening it so we can back it out of master and out of 2.2

In Jim's review of the patch he suggested that maybe we could just remove the really old endedTimer workaround. We didn't have solid evidence that the workaround was no longer needed though.  While investigating bug 1156519, however, I discovered that the workaround was no longer being used any time the app was in the background. And since we haven't had trouble with the app working in the background, I think that is evidence that we don't need the workaround anymore.

So once we back this patch out, I'd guess we can resolve this bug by just removing all the endedTimer code.

Hub is busy with bug 1150322, so I'm going to take this one.
Assignee: hub → dflanagan
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Attachment #8595446 - Flags: review?(squibblyflabbetydoo)
I'm not entirely convinced that the workaround can just be removed. I think we might need it for when we fast forward (by holding the >> button) through the end of a track and into the next. It's possible we could do something else for that, though.
Attachment #8595446 - Flags: review?(squibblyflabbetydoo) → review+
Comment on attachment 8595446 [details] [review]
back out the previous patch

[Approval Request Comment]
[Bug caused by] (feature/regressing bug #): the previous patch in this bug
[User impact] if declined: music app won't work
[Testing completed]: yes
[Risk to taking this patch] (and alternatives if risky): not risky
[String changes made]: none
Attachment #8595446 - Flags: approval-gaia-v2.2?(bbajaj)
Attachment #8595446 - Flags: approval-gaia-v2.2?(bbajaj) → approval-gaia-v2.2+
Flags: needinfo?(ktucker)
Next step is to create a patch that just removes the really old endedTimer workaround and see whether that is enough to fix this bug. I should be able to do that later today.
Bug 1154048? There is already a PR.
(In reply to Hubert Figuiere [:hub] from comment #26)
> Bug 1154048? There is already a PR.

That PR probably won't apply now that we've backed this out.  And that PR removes the code that sets endedTimer, but doesn't remove the other code that uses it or initializes it.
If I just remove the endedTimer workaround, then dragging the scrubber to the end of a song while paused does not unpause it.  So that resolves this bug.

But now we've got another problem: when we're in this state pressing the play button does not start the next song for something like 10 seconds!  And that seems like an equally bad bug, so I think I need to investigate that as well.
(In reply to David Flanagan [:djf] from comment #27)
> (In reply to Hubert Figuiere [:hub] from comment #26)
> > Bug 1154048? There is already a PR.
> 
> That PR probably won't apply now that we've backed this out.  And that PR
> removes the code that sets endedTimer, but doesn't remove the other code
> that uses it or initializes it.

Will close PR and dupe bug then.
No longer blocks: 1154048
I've tested my patch that removes endedTimer with this MP3 file https://bug783512.bugzilla.mozilla.org/attachment.cgi?id=659976 which was the one that was originaly used to reproduce bug 738512 which is what the endedTimer was working around. Bug 738512 seems to have gone away, no one is sure why, but I can confirm that that mp3 plays correctly to the end and we get an ended event and move on to the next song just as we are supposed to even without the workaround code.
More observations:

If I pause, seek to the end, and then press play, it takes quite a while before the next song starts. The app is seeking to within a fraction of a second of the end of the song (because of the Math.floor() call in seekAudio()). Then, when I press play, I get a playing event right away, but there is a long pause before I get the ended event. This only happens when I'm near the end of the song.  If I seek to the middle then press play, playback is fast. And, the length of the delay before I get the seek event seems to be proportional to the length of the song. For a 5 minute song, it is around 12 seconds. For a 2 minute song, it is more like 6 seconds.  For the 7second MP3 mentioned above, there is not a noticeable delay. (I assume because of the length, but maybe because of the audio type.  My other songs are all .m4a files.)

So my hypothesis here is that when we get really close to the end of the song like that, gecko discards its decoded audio buffer, and when we restart it, gecko has to decode and seek to the end again. 

The solution is going to be to notice that we are at or very near the end of the song when the user pressses play and instead of playing the same song, to skip to the next one instead.

This would be easier if there wasn't that weird Math.floor() call in seekAudio(). But if I comment that out, I find that I'm back to the original bug here, but for mp3s only. Without the floor() call, seeking to the end while paused generates an ended event and we skip to the next song.  I think this is mp3 only, though.
I've tried again with some longer mp3 files and .ogg files. The long pause between songs does not happen for those files types; it only occurs for my .m4a files.  Also, without the floor() call, seeking all the way to the end of an ogg file while paused just starts the next song instead of staying paused. And this seems to happen for some MP3s but not for others.
Comment on attachment 8595535 [details] [review]
[gaia] davidflanagan:bug1145758 > mozilla-b2g:master

Jim,

I thought I could fix this bug by just backing out the old workaround.  But when I did that, I found that this bug was masking another issue where resuming a .m4a audio file from the very end would take ~10s to get and ended event and skip to the next song. 

So this PR has two commits currently. The first just backs out the endedTimer thing. And the second commit handles the case where we press the play button when we are less than one second from the end of a song.

This second commit means that during a pick activity, if the user pauses and then seeks to the end and then presses play, we will just skip to the start of the song and pause again. So the user has to tap play twice to restart the song. But if I'm understanding that code correctly that is what would have happened before this patch, too. The user just doesn't have to wait as long now.

Actually now that I'm writing this out, I realize that I should only apply the "near the end" test for songs that are > 10s or something. So I'm going to push one more update to the PR.
Attachment #8595535 - Flags: review?(squibblyflabbetydoo)
Comment on attachment 8595535 [details] [review]
[gaia] davidflanagan:bug1145758 > mozilla-b2g:master

This looks mostly good, but there's at least one actual bug (and another bit I'm not sure about); see GitHub for comments.
Attachment #8595535 - Flags: review?(squibblyflabbetydoo) → review-
Comment on attachment 8595535 [details] [review]
[gaia] davidflanagan:bug1145758 > mozilla-b2g:master

Thanks for catching the this.next(true) issue, Jim. I've updated the patch based on your comments and am ready for re-review.
Attachment #8595535 - Flags: review- → review?(squibblyflabbetydoo)
Comment on attachment 8595535 [details] [review]
[gaia] davidflanagan:bug1145758 > mozilla-b2g:master

r=me if you're sure about the 20s length in the patch (although a comment about it would be nice). Bonus if you file a bug about the Gecko issue.
Attachment #8595535 - Flags: review?(squibblyflabbetydoo) → review+
Landed on master: https://github.com/mozilla-b2g/gaia/commit/a7dcc5fb595030dab140d5ff0e7eb5ef04017d51

(I forgot to use autolander)
Status: REOPENED → RESOLVED
Closed: 9 years ago9 years ago
Resolution: --- → FIXED
Comment on attachment 8595535 [details] [review]
[gaia] davidflanagan:bug1145758 > mozilla-b2g:master

This bug was never made a 2.2 blocker, but the previous fix that I backed out had been uplifted, so I'm nominating this for uplift as well.

[Approval Request Comment]
[Bug caused by] (feature/regressing bug #): not a regression
[User impact] if declined: seeking to the end while paused will start playing the next song, which is kind of strange, but not completely terrible. I noticed that my Android phone does that, too.
[Testing completed]: yes
[Risk to taking this patch] (and alternatives if risky): it removes a very old workaround that we're pretty certain is no longer needed, and in fixing this I had to workaround a new gecko issue, so this is not a no-risk patch, but it is not high risk.
[String changes made]: none.

I could really go either way here. It would be nice to uplift but not necessary.  What do you think, Jim? Would you recommend uplifting this?
Flags: needinfo?(squibblyflabbetydoo)
Attachment #8595535 - Flags: approval-gaia-v2.2?(bbajaj)
I filed bug 1157118 for the underlying gecko issue described in comment #32.
Flags: needinfo?(ktucker) → needinfo?(jmitchell)
Personally, I'd rather not uplift (but then, I'll almost invariably say this about anything that's not a regression or dataloss bug). Especially in this case, I don't know if we can be 100% sure that removing the track-end workaround will work in all cases. I think it's safe to do this on 3.0, but only because we'll have plenty of time to catch any problems.
Flags: needinfo?(squibblyflabbetydoo)
Issue has been verified fixed on the latest Nightly build

Actual Results: Pausing the track and dragging the selector to the end of the timeline does not advance the track to the next one. 

Device: Flame 3.0 (KK - Nightly - Full Flash - 319mem)
Build ID: 20150423010203
Gaia: 9d4f756aa35cb7f030a92f3c1f65fb55254ddd1d
Gecko: 0b202671c9e2
Gonk: b83fc73de7b64594cd74b33e498bf08332b5d87b
Version: 40.0a1 (3.0)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:40.0) Gecko/40.0 Firefox/40.0
Status: RESOLVED → VERIFIED
QA Whiteboard: [QAnalyst-Triage+][MGSEI-Triage+] → [QAnalyst-Triage?][MGSEI-Triage+]
Flags: needinfo?(jmitchell) → needinfo?(ktucker)
(In reply to David Flanagan [:djf] from comment #40)
> Comment on attachment 8595535 [details] [review]
> [gaia] davidflanagan:bug1145758 > mozilla-b2g:master
> 
> This bug was never made a 2.2 blocker, but the previous fix that I backed
> out had been uplifted, so I'm nominating this for uplift as well.
> 
> [Approval Request Comment]
> [Bug caused by] (feature/regressing bug #): not a regression
> [User impact] if declined: seeking to the end while paused will start
> playing the next song, which is kind of strange, but not completely
> terrible. I noticed that my Android phone does that, too.
> [Testing completed]: yes
> [Risk to taking this patch] (and alternatives if risky): it removes a very
> old workaround that we're pretty certain is no longer needed, and in fixing
> this I had to workaround a new gecko issue, so this is not a no-risk patch,
> but it is not high risk.
> [String changes made]: none.
> 
> I could really go either way here. It would be nice to uplift but not
> necessary.  What do you think, Jim? Would you recommend uplifting this?

I think we should be fine to live without this in 2.2 given where we are in the release cycle. So unless its helping any existing blockers or a blocker in itself and this has been already backed out once, I am hesitant. Also note this isn't a regression.
Attachment #8595535 - Flags: approval-gaia-v2.2?(bbajaj) → approval-gaia-v2.2-
QA Whiteboard: [QAnalyst-Triage?][MGSEI-Triage+] → [QAnalyst-Triage+][MGSEI-Triage+]
Flags: needinfo?(ktucker)
Keywords: verifyme
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: