Bug 1322114 - Part 2: handle more media state change draft
authorJulian_Chu <walkingice0204@gmail.com>
Thu, 12 Jan 2017 14:54:05 +0800
changeset 461202 58518a2fac51cc4228b5cb93c31d7df733d6cda2
parent 461201 e2375d54359b10db31096dcb7b38ed69446297bf
child 461203 5758bd1e6bf9e166ba0c921b5a4516f1236b10c3
child 463955 41c435725ed7d7b425fcc925556a0c5d924a625d
child 464078 f0ea7416af9c1e34ecd729dd7446ef30700616e9
child 464154 89a7d459984d029c758d93360e7963a7015be2b8
push id41590
push userbmo:walkingice0204@gmail.com
push dateMon, 16 Jan 2017 04:10:36 +0000
bugs1322114
milestone53.0a1
Bug 1322114 - Part 2: handle more media state change When the playing-media changes (ie. in Youtube click another video when it is alreay playing one), there will be one more event MEDIA_PLAYING_CHANGE, and the tab is still playing media. This fix is to handle this situation then update state. MozReview-Commit-ID: Aje2BBqFZKE
mobile/android/base/java/org/mozilla/gecko/media/MediaControlService.java
--- a/mobile/android/base/java/org/mozilla/gecko/media/MediaControlService.java
+++ b/mobile/android/base/java/org/mozilla/gecko/media/MediaControlService.java
@@ -115,19 +115,19 @@ public class MediaControlService extends
         final Tab playingTab = mTabReference.get();
         switch (msg) {
             case MEDIA_PLAYING_CHANGE:
                 // The 'MEDIA_PLAYING_CHANGE' would only be received when the
                 // media starts or ends.
                 if (playingTab != tab && tab.isMediaPlaying()) {
                     mTabReference = new WeakReference<>(tab);
                     setState(State.PLAYING);
-                } else if (playingTab == tab && !tab.isMediaPlaying()) {
-                    mTabReference = new WeakReference<>(null);
-                    setState(State.STOPPED);
+                } else if (playingTab == tab) {
+                    mTabReference = new WeakReference<>(tab.isMediaPlaying() ? tab : null);
+                    setState(tab.isMediaPlaying() ? State.PLAYING : State.STOPPED);
                 }
                 break;
             case MEDIA_PLAYING_RESUME:
                 // user resume the paused-by-control media from page so that we
                 // should make the control interface consistent.
                 if (playingTab == tab && !isMediaPlaying()) {
                     setState(State.PLAYING);
                 }