Closed Bug 1089526 Opened 10 years ago Closed 9 years ago

[FFOS2.0][Woodduck][FM]The speaker close when playing Radio make a active call then hang out.

Categories

(Firefox OS Graveyard :: AudioChannel, defect, P2)

defect

Tracking

(blocking-b2g:2.0M+, firefox37 wontfix, firefox38 wontfix, firefox39 fixed, b2g-v2.0 wontfix, b2g-v2.0M fixed, b2g-v2.1 fixed, b2g-v2.1S fixed, b2g-v2.2 fixed, b2g-master wontfix)

RESOLVED FIXED
2.2 S8 (20mar)
blocking-b2g 2.0M+
Tracking Status
firefox37 --- wontfix
firefox38 --- wontfix
firefox39 --- fixed
b2g-v2.0 --- wontfix
b2g-v2.0M --- fixed
b2g-v2.1 --- fixed
b2g-v2.1S --- fixed
b2g-v2.2 --- fixed
b2g-master --- wontfix

People

(Reporter: sync-1, Assigned: alwu)

References

Details

Attachments

(3 files, 12 obsolete files)

3.66 KB, patch
Details | Diff | Splinter Review
3.60 KB, patch
alwu
: review+
Details | Diff | Splinter Review
2.82 KB, patch
alwu
: review+
Details | Diff | Splinter Review
DEFECT DESCRIPTION:
 Speakers close.
 
  REPRODUCING PROCEDURES:
 1.Access FM Radio and select a channel -> Select speakers
 2.Make a incoming call or out going call then hang out
 
  EXPECTED BEHAVIOUR:
 Should be speakers on.
 
  ASSOCIATE SPECIFICATION:
 
  TEST PLAN REFERENCE:
 
  TOOLS AND PLATFORMS USED:
 
  USER IMPACT:
 
  REPRODUCING RATE:100%
 
  For FT PR, Please list reference mobile's behavior:
Hi Wayne:
 Please help check this issue first.

Shawn
Flags: needinfo?(waychen)
Blocks: Woodduck
I can't check this issue today, because the code released in this week has problem. FM doesn't have sound when I switch to speaker mode.
To continue comment 2, 'frameworks/av' git log 8c6a63a2e687d1c2c3f68c27d82a60d2175e896e is ok.
Flags: needinfo?(chien-hao.li)
Hi Randy,

as offline talk, please help check this bug.
thanks
Flags: needinfo?(waychen) → needinfo?(rlin)
I would like to let speaker can keep on when this application register the audio channel type larger than content even switch to background.
Flags: needinfo?(rlin)
blocking-b2g: --- → 2.0M?
Triage:
Minor issue. Low user impact.
Hi Howie,
Can you nominate this as 2.2? Thanks!
blocking-b2g: 2.0M? → ---
Flags: needinfo?(chien-hao.li) → needinfo?(hochang)
I
Component: Gaia::FMRadio → AudioChannel
ok, the corresponding OS functional team should go through the 2.2 feature nomination.
feature-b2g: --- → 2.2?
Flags: needinfo?(hochang)
(In reply to comment #8)
 > Comment from Mozilla:ok, the corresponding OS functional team should go through
 > the 2.2 feature nomination.
 
 Dear Mozilla,
 The feature  will be OK  on 2.2 branch?If ok ,can we merge the pitch to our Woodduck?
Yes, I think it should be ok to uplife on 2.0m.
(In reply to comment #10)
 > Comment from Mozilla:Yes, I think it should be ok to uplife on 2.0m.
 
 How can I get the update file or patch?
The patch is cooking...
Assignee: nobody → rlin
QA Contact: rlin
QA Contact: sync-1
Attached patch patch v1 (obsolete) — Splinter Review
Let audiochannel can resume speaker if previous application has turned it on.
The patch v1 would let audioChannelService to recover the speaker status even the application in the background.

Hi Germán, 
I just check and found you want to control the speaker even fm application in the background. 
Could you have a change on app side to avoid this? 

In wiki document, we has this rule that avoid application to control speaker. 
https://wiki.mozilla.org/WebAPI/SpeakerManager
==>If a background app calls forcespeaker=true that doesn't change anything. 'speakerforced' remains false everywhere. 

You try to get speakerforced first (return false) and set forcespeaker = false, so that would turn off the speaker in device.
Flags: needinfo?(gtorodelvalle)
Hi Randy,
I am sorry but I am kind of lost here :( Would you be so kind to point me to the piece of code you are referring to, please?
Thank you very much! ;)
Flags: needinfo?(gtorodelvalle)
Need-infoing Randy regarding comment 15 ;)
Flags: needinfo?(rlin)
I think it should be
fm.js:L861 
  window._previousSpeakerForcedState = speakerManager.speakerforced;
L:877
          // Re-enable the speaker if it was previously forced.
  speakerManager.forcespeaker = !!window._previousSpeakerForcedState;

speakerManager would recover the original speaker status on this case.
You could remove those control logic After this patch check-in the codebase.
Flags: needinfo?(rlin)
(In reply to comment #13)
 > Created an attachment (id=1008999) [details]
 > patch v1
 
 Dear Mozilla,
 The patch V1 refer to the 2.2 branch or 2.0 ?I cann't find the pices of code On our 2.0M.Like as follow:
 @@ -871,23 +869,16 @@ AudioChannelService::Observe(nsISupports
  
      uint64_t innerID;
      nsresult rv = wrapper->GetData(&innerID);
      if (NS_WARN_IF(NS_FAILED(rv))) {
        return rv;
      }
  
      mAgents.Enumerate(WindowDestroyedEnumerator, &innerID);
 -
 -#ifdef MOZ_WIDGET_GONK
 -    bool active = AnyAudioChannelIsActive();
 -    for (uint32_t i = 0; i < mSpeakerManager.Length(); i++) {
 -      mSpeakerManager[i]->SetAudioChannelActive(active);
 -    }
 -#endif
    }
  
    return NS_OK;
  }
 Could you give me a patch on our woodduck 2.0M?
(In reply to comment #16)
 > Comment from Mozilla:Hi Randy,
 > I am sorry but I am kind of lost here :( Would you be so kind to point me to
 > the piece of code you are referring to, please?
 > Thank you very much! ;)
 
 Hi,Mozilla
 I don't find the dom/media/MediaRecorder.cpp file in our Woodduck,can you give me a patch based on 2.0M?
ah, sorry, you don't need the MediaRecorder.cpp's patch.
HI Reporter,
Have you successfully verified the problem after the patch? Thanks!
Flags: needinfo?(sync-1)
Attached patch fm_gaia.patch (obsolete) — Splinter Review
changes on fm app.
(In reply to comment #22)
 > Comment from Mozilla:HI Reporter,
 > Have you successfully verified the problem after the patch? Thanks!
 
 Dear Mozilla,
 I merged the patch to our project ,but it compile failed.I am debuging it,please help me to verified the patch on our Woodduck too,thanks!
(In reply to comment #24)
 > (In reply to comment #22)
 > > Comment from Mozilla:HI Reporter,
 > > Have you successfully verified the problem after the patch? Thanks!
 > Dear Mozilla,
 > I merged the patch to our project ,but it compile failed.I am debuging
 > it,please help me to verified the patch on our Woodduck too,thanks!
 
 Dear Mozilla,
 I have merged the patch and successfully compiled the project ,but it doesn't work!When hang out the active call(MO/MT),the FM sound still come from headset.
HI Reporter,
Can you provide console log? Thanks!
Did you change the fm radio side?
(In reply to comment #27)
 > Comment from Mozilla:Did you change the fm radio side?
 
 ah,how to change the fm radio side?
I mean the  fm_gaia.patch. 
You can apply it on fm radio application (gaia/apps/fm).
Created an attachment (id=1027870)
 Woodduck FM file
 
 Dear Mozilla,
 The attachment is the gaia/apps/fm.js based on our woodduck.In this fm.js I remove the follow code:
 fm.js:L876 
   window._previousSpeakerForcedState = speakerManager.speakerforced;
 L:893          // Re-enable the speaker if it was previously forced.
   speakerManager.forcespeaker = !!window._previousSpeakerForcedState;
 
 But it doesn't work ,and when make a incoming call ,the FM will be crashed.
Created an attachment (id=1027870)
 Woodduck FM file
 
 Dear Mozilla,
 The attachment is the gaia/apps/fm.js based on our woodduck.In this fm.js I remove the follow code:
 fm.js:L876 
   window._previousSpeakerForcedState = speakerManager.speakerforced;
 L:893          // Re-enable the speaker if it was previously forced.
   speakerManager.forcespeaker = !!window._previousSpeakerForcedState;
 
 But it doesn't work ,and when make a incoming call ,the FM will be crashed.
Attached file Woodduck FM file (obsolete) —
Created an attachment (id=1027870)
 Woodduck FM file
 
 Dear Mozilla,
 The attachment is the gaia/apps/fm.js based on our woodduck.In this fm.js I remove the follow code:
 fm.js:L876 
   window._previousSpeakerForcedState = speakerManager.speakerforced;
 L:893          // Re-enable the speaker if it was previously forced.
   speakerManager.forcespeaker = !!window._previousSpeakerForcedState;
 
 But it doesn't work ,and when make a incoming call ,the FM will be crashed.
Created an attachment (id=1028155)
 When incoming a call,the fm will be crashed
 
 Dear Mozilla,
 When the FM play in the background,hand out the MO/MT,the sound will be recover to the speaker.But at the FM play screen,hand out the incoming call,the FM will be crashed.The attachment is the console log,please check it,thanks!
Created an attachment (id=1028155)
 When incoming a call,the fm will be crashed
 
 Dear Mozilla,
 When the FM play in the background,hand out the MO/MT,the sound will be recover to the speaker.But at the FM play screen,hand out the incoming call,the FM will be crashed.The attachment is the console log,please check it,thanks!
Created an attachment (id=1028155)
 When incoming a call,the fm will be crashed
 
 Dear Mozilla,
 When the FM play in the background,hand out the MO/MT,the sound will be recover to the speaker.But at the FM play screen,hand out the incoming call,the FM will be crashed.The attachment is the console log,please check it,thanks!
Hi sync-1, could you provide the call stack for this problem?
Attached patch patch v2 (obsolete) — Splinter Review
Fix fm radio crash as described in comment 34.
Attachment #8518632 - Attachment is obsolete: true
Flags: needinfo?(sync-1)
Flags: needinfo?(sync-1)
(In reply to comment #34)
 > (In reply to comment #33)
 > > Comment from Mozilla:Fix fm radio crash as described in comment 34.
 > Dear Mozilla:
 > I want to know what time can solve the fm crashed problem?How can I provide
 > assistance?
 
 Dear Mozilla,
 According to our team's evaluation,in order to reduce the development risk,we hope Mozilla can solve this problem based on our Woodduck ,Thks!
Hi Reporter,
Could you try again with new patch : https://bugzilla.mozilla.org/attachment.cgi?id=8525820?
blocking-b2g: --- → 2.0M?
Hi,Mozilla,
 This feature is ok,thanks for your help!
Hi Randy,
Can you raise review request? Partner has verified the patch works!
blocking-b2g: 2.0M? → 2.0M+
feature-b2g: 2.2? → ---
Flags: needinfo?(sync-1) → needinfo?(rlin)
Attached patch patch v2.1 (obsolete) — Splinter Review
Hi Baku, 
Could you review this?
Attachment #8525820 - Attachment is obsolete: true
Flags: needinfo?(rlin)
Attachment #8531396 - Flags: review?(amarchesini)
Hi Randy,
Is the patch also good for 2.0M? Thanks!
Flags: needinfo?(rlin)
It need to rebaes to 2.0m branch.
I think it should be ok.
Flags: needinfo?(rlin)
Hi Baku,
Could you help to review this patch? Thanks!
Flags: needinfo?(amarchesini)
If we don't want this for 2.0, probably it's better to have this patch built on top of bug 1113086.
Randy Lin, what do you think about it?
Flags: needinfo?(amarchesini) → needinfo?(rlin)
The target of refactor audiochannel is on v3. So I think if this bug isn't 2.2+, we can keep this patch for partner and got it fix after bug 1113086.
Flags: needinfo?(rlin)
Blocks: 1103886
Hi Andrea, Hi Randy,
This issue is reported by partner in 2.0M. I think we can apply this temp patch on 2.0M and leave bug 1113086 for V3.0. Thanks!
Status: NEW → ASSIGNED
Flags: needinfo?(globelinmoz)
Comment on attachment 8531396 [details] [diff] [review]
patch v2.1

Hi Andreas, 
Partner want to fix this one, so still needs your help to review that. Thanks..
Flags: needinfo?(globelinmoz)
Attachment #8531396 - Flags: review?(amarchesini)
Comment on attachment 8531396 [details] [diff] [review]
patch v2.1

Review of attachment 8531396 [details] [diff] [review]:
-----------------------------------------------------------------

I wrote a couple of questions to understand this code better. Thanks.

::: dom/audiochannel/AudioChannelService.cpp
@@ +353,5 @@
>    data->mState = GetStateInternal(data->mChannel, CONTENT_PROCESS_ID_MAIN,
>                                  aElementHidden, oldElementHidden);
> +#ifdef MOZ_WIDGET_GONK
> +  for (uint32_t i = 0; i < mSpeakerManager.Length(); i++) {
> +    mSpeakerManager[i]->SetAudioChannelActive(AUDIO_CHANNEL_STATE_MUTED != data->mState);

Well... the fact that this audiochannel is muted, doesn't mean that we cannot have something else playing.
Why do you want to mute all?

::: dom/audiochannel/AudioChannelServiceChild.cpp
@@ +94,5 @@
>    data->mState = state;
>    cc->SendAudioChannelChangedNotification();
> +#ifdef MOZ_WIDGET_GONK
> +  for (uint32_t i = 0; i < mSpeakerManager.Length(); i++) {
> +    mSpeakerManager[i]->SetAudioChannelActive(AUDIO_CHANNEL_STATE_MUTED != state);

Same issue here.

::: dom/speakermanager/SpeakerManager.cpp
@@ +191,5 @@
>    SpeakerManagerService *service =
>      SpeakerManagerService::GetOrCreateSpeakerManagerService();
>    MOZ_ASSERT(service);
> +  if (mForcespeaker && mVisible) {
> +    service->ForceSpeaker(mForcespeaker && mVisible);

Why is it true that we want t ofroce the speak when the visibility is set to true?

::: dom/speakermanager/SpeakerManagerService.cpp
@@ +141,5 @@
>  {
> +  // Content process and switch to background with no audio and speaker forced.
> +  // Then disable speaker
> +  for (uint32_t i = 0; i < mRegisteredSpeakerManagers.Length(); i++) {
> +    mRegisteredSpeakerManagers[i]->SetAudioChannelActive(aIsActive);

Which AudioChannel?
Attachment #8531396 - Flags: review?(amarchesini) → review-
Flags: needinfo?(globelinmoz)
Flags: needinfo?(globelinmoz)
Flags: needinfo?(globelinmoz)
Dear Alastor,
Could you help to check this bug and resume Randy's work?
Thank you very much!
Flags: needinfo?(alwu)
Ok, I would check it later.
Keep ni to trace.
Hi, Baku,
I would resume Randy's work on this problem.
So let me describe about my understanding.

> ::: dom/audiochannel/AudioChannelService.cpp
> @@ +353,5 @@
> >    data->mState = GetStateInternal(data->mChannel, CONTENT_PROCESS_ID_MAIN,
> >                                  aElementHidden, oldElementHidden);
> > +#ifdef MOZ_WIDGET_GONK
> > +  for (uint32_t i = 0; i < mSpeakerManager.Length(); i++) {
> > +    mSpeakerManager[i]->SetAudioChannelActive(AUDIO_CHANNEL_STATE_MUTED != data->mState);
> 
> Well... the fact that this audiochannel is muted, doesn't mean that we
> cannot have something else playing.
> Why do you want to mute all?
> 

Every time the AudioChannelAgent come to check its playing state, we also need to ensure whether this agent have used the speaker. If the speaker has been enabled before, we need to resume it when the AudioChannelAgent is permitted to continue playback, is it right?

I can't also understand this code. But I think there exists a better way to active/inactive the speakerManager. We could add the variable which stored AudioChannelType in SpeakerManager, then switch the speaker to the correct audio output by checking the type of AudioChannelAgents.

How do you think :)?

> ::: dom/speakermanager/SpeakerManager.cpp
> @@ +191,5 @@
> >    SpeakerManagerService *service =
> >      SpeakerManagerService::GetOrCreateSpeakerManagerService();
> >    MOZ_ASSERT(service);
> > +  if (mForcespeaker && mVisible) {
> > +    service->ForceSpeaker(mForcespeaker && mVisible);
> 
> Why is it true that we want to force the speak when the visibility is set to
> true?
> 

Only the foreground app can force the speaker on.
See comment14.

> ::: dom/speakermanager/SpeakerManagerService.cpp
> @@ +141,5 @@
> >  {
> > +  // Content process and switch to background with no audio and speaker forced.
> > +  // Then disable speaker
> > +  for (uint32_t i = 0; i < mRegisteredSpeakerManagers.Length(); i++) {
> > +    mRegisteredSpeakerManagers[i]->SetAudioChannelActive(aIsActive);
> 
> Which AudioChannel?

I think we don't need to know the AudioChannel type.
Only the SpeakerManager whose mForceSpeaker is true can set the speaker on. 
Therefore, they can make the decision of active/inactive speaker themselves by checking its mForceSpeaker.
Flags: needinfo?(alwu) → needinfo?(amarchesini)
Hi Baku,
Could you provide some feedback for comment 52?
Thanks!
I will update the new patch later.
Flags: needinfo?(globelinmoz)
Flags: needinfo?(amarchesini)
Assignee: globelinmoz → alwu
Hi, Baku :)
Here is my new patch to solve this bug!
Following is the description of the root cause and the solution.
Could you help me to review this?
Very appreciate!

---

[Root cause]
This bug is resulted from the timing issue of delivering events. In this case, when we hang up the phone call, the SpeakerManager receives the "visibility-change" first, then the AudioChannelService receives the "inner-window-destroyed".

First event would turn the speaker on, and the second one turns the speaker off. (this event was triggered before registering the new agent)

[Solution]
Everytime the agents asked its state, then we also check whether the speaker setting is correct. 
Here are two places we will check the speaker state, the first one is in the |UnregisterAudioChannelAgent|, and the second one is in the |GetState()|.
Attachment #8531396 - Attachment is obsolete: true
Attachment #8561297 - Flags: review?(amarchesini)
Attached patch Correct the error function name (obsolete) — Splinter Review
Correct the error function name.
|TuruOnSpeaker()| -> |TurnOnSpeaker()|.
Hi Baku,
Could you help to review the patch per comment 56?
Thanks!
Flags: needinfo?(amarchesini)
Attachment #8561309 - Flags: review+
Comment on attachment 8561297 [details] [diff] [review]
Modify the checking timing of the speaker states

Review of attachment 8561297 [details] [diff] [review]:
-----------------------------------------------------------------

::: dom/audiochannel/AudioChannelServiceChild.cpp
@@ -135,5 @@
>    }
> -#ifdef MOZ_WIDGET_GONK
> -  bool active = AnyAudioChannelIsActive();
> -  for (uint32_t i = 0; i < mSpeakerManager.Length(); i++) {
> -    mSpeakerManager[i]->SetAudioChannelActive(active);

Why don't you need it in the child process?

::: dom/speakermanager/SpeakerManagerService.cpp
@@ +150,1 @@
>                                 aTopic, const char16_t* aData)

can you indent it like this:

SpeakerManagerService::Observe(nsISupports* aSubject,
                               const char* aTopic,
                               const char16_t* aData)
Attachment #8561297 - Flags: review?(amarchesini) → review+
Hi, Baku,

> 
> Why don't you need it in the child process?
> 

It's my fault. These codes should be keep it. I have already added it back.
Thanks for your review!!!
Attachment #8523756 - Attachment is obsolete: true
Attachment #8525057 - Attachment is obsolete: true
Attachment #8525091 - Attachment is obsolete: true
Attachment #8561297 - Attachment is obsolete: true
Attachment #8564944 - Flags: review+
Attachment #8561309 - Attachment is obsolete: true
Attachment #8564945 - Flags: review+
Hi! Kai-Zhen,

check in needed?

--
Keven
Flags: needinfo?(kli)
Alastor, is the patch ready to checkin to v2.0m branch? Does it need to checkin to master branch?
Flags: needinfo?(kli) → needinfo?(alwu)
Yes, I think it can be landed to v2.0m, I would update the available patches.
It doesn't need to be landed to master, because we will refactor the audio channel soon.
Flags: needinfo?(alwu)
When I merge these two patch into 2.0m branch, there are conflicts in the following files.
? dom/audiochannel/AudioChannelService.cpp.rej
? dom/speakermanager/SpeakerManager.cpp.rej
? dom/speakermanager/SpeakerManagerService.cpp.rej

Could you rebase patches for 2.0m branch?
https://hg.mozilla.org/releases/mozilla-b2g32_v2_0m
Flags: needinfo?(alwu)
[Approval Request Comment]
Bug caused by (feature/regressing bug #): 
The timing of checking speaker states errors

User impact if declined: 
This would fix the problem of the speaker states error. And the patch doesn't need to be landed in the master, because we will refactor the audio channel soon (Refactoring audio channel would solve lots of audio channel issue). 

Testing completed: 
You can compare these patches, one is try message, another is the changeset.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=d310ac186623
https://treeherder.mozilla.org/#/jobs?repo=try&revision=a9f043c7548e

Risk to taking this patch (and alternatives if risky): None

String or UUID changes made by this patch: None
Attachment #8564944 - Attachment is obsolete: true
Attachment #8576395 - Flags: approval-mozilla-b2g32?
The reason is as same as comment65.
These patches need to be landed together.
Attachment #8564945 - Attachment is obsolete: true
Flags: needinfo?(alwu)
Attachment #8576397 - Flags: approval-mozilla-b2g32?
(In reply to Alastor Wu [:alwu] from comment #63)
> Yes, I think it can be landed to v2.0m, I would update the available patches.
> It doesn't need to be landed to master, because we will refactor the audio
> channel soon.

What about b2g34/b2g37 (v2.1/v2.2)?
Flags: needinfo?(alwu)
Target Milestone: --- → 2.2 S8 (20mar)
Attachment #8576397 - Flags: approval-mozilla-b2g32?
Attachment #8576395 - Flags: approval-mozilla-b2g32?
If all other versions is affected, I will rebase the patches for them.
Thanks Ryan, I would update the patches later (including master)
Flags: needinfo?(amarchesini)
Flags: needinfo?(alwu)
[Approval Request Comment]
Bug caused by (feature/regressing bug #): Spelling error of the function name
User impact if declined: None
Testing completed: Yes
Risk to taking this patch (and alternatives if risky): None
String or UUID changes made by this patch: Correct the spelling error
Attachment #8576395 - Attachment is obsolete: true
Attachment #8576397 - Attachment is obsolete: true
Attachment #8579091 - Flags: approval-mozilla-b2g34?
[Approval Request Comment]
Bug caused by (feature/regressing bug #): Spelling error of the function name
User impact if declined: None
Testing completed: Yes
Risk to taking this patch (and alternatives if risky): None
String or UUID changes made by this patch: Correct the spelling error
Attachment #8579093 - Flags: review+
Attachment #8579093 - Flags: approval-mozilla-b2g37?
[Approval Request Comment]
Bug caused by (feature/regressing bug #): The timing of checking speaker states errors
User impact if declined: Users will feel wrong because the speaker state is not as their expectation.
Testing completed: Yes
Risk to taking this patch (and alternatives if risky): None
String or UUID changes made by this patch: None
Attachment #8579094 - Flags: review+
Attachment #8579094 - Flags: approval-mozilla-b2g37?
Attachment #8579094 - Flags: approval-mozilla-b2g34?
Keywords: checkin-needed
Attachment #8579091 - Flags: approval-mozilla-b2g34? → approval-mozilla-b2g34+
Attachment #8579093 - Flags: approval-mozilla-b2g37? → approval-mozilla-b2g37+
Attachment #8579094 - Flags: approval-mozilla-b2g37?
Attachment #8579094 - Flags: approval-mozilla-b2g37+
Attachment #8579094 - Flags: approval-mozilla-b2g34?
Attachment #8579094 - Flags: approval-mozilla-b2g34+
Hi Alastor,

I encounter with one question with your patch:

1>open fm,set speaker on

2>pause fm,then in AudioChannelServiceChild::UnregisterAudioChannelAgent,we use 'mSpeakerManager[i]->SetAudioChannelActive(active)' to set speaker off,and 'speakerManager.onspeakerforcedchange' in fm.js set the 'speaker-switch' button to gray

3>replay fm.
Here comes the question:it seems that we have not done anything in gecko to reset the speaker on in SpeakerManager,then in fm UI,we can see the 'speaker-switch' button keeps to gray.

In user perspective,speaker should keep on in such a situation.

Can you help to check the issue?
Flags: needinfo?(alwu)
OK, I will check it later.
Keep ni for tracking.
Hi, JingMei,
When we replay the FM, what situation is your expectation?
Is "the FM still coming out from the speaker and display the correct button image" OR  "to recover the FM coming out from the headphone"?
Thanks :)
Flags: needinfo?(alwu) → needinfo?(jingmei.zhang)
(In reply to Alastor Wu [:alwu] from comment #81)
> Hi, JingMei,
> When we replay the FM, what situation is your expectation?
> Is "the FM still coming out from the speaker and display the correct button
> image" OR  "to recover the FM coming out from the headphone"?
> Thanks :)

Hi Alastor,,

I think speaker should keep its original status:

1>If it comes out from headset before paused,then when replay,it should keep on playing in headset
2>If it comes out from speaker before paused,then when replay,it should keep on playing in speaker

So what do you think?
Flags: needinfo?(jingmei.zhang) → needinfo?(alwu)
Thanks, JingMei.
I found that the speaker status will be reset to default in the Flame when we stop the FM.
Let me ask the UX for the result.

--

Hi, Jenny,
Could you help me confirm some problems?
When users resume the FM, what the speaker status should be?
Is back to default or keeping the original status?
Thanks :)
Flags: needinfo?(alwu) → needinfo?(jelee)
Hi Alastor,

In this case, FM should keep playing with speaker. Thanks!
Flags: needinfo?(jelee)
I file another bug to solve it (See Bug 1157121)
Test case has been added in moztrap:
https://moztrap.mozilla.org/manage/case/11241
Flags: in-moztrap+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: