Bug 1299065 - invisible elements in the foreground should also be recorded; r?gerald draft
authorKaku Kuo <kaku@mozilla.com>
Tue, 30 Aug 2016 14:53:04 +0800
changeset 407334 b719e1b803e6cfcb487d6a40dafae2d97a824c22
parent 406450 1a5b53a831e5a6c20de1b081c774feb3ff76756c
child 529845 2fa61bf753af9d533c11079c400f9dfe13a19442
push id27931
push userbmo:kaku@mozilla.com
push dateTue, 30 Aug 2016 08:15:02 +0000
reviewersgerald
bugs1299065
milestone51.0a1
Bug 1299065 - invisible elements in the foreground should also be recorded; r?gerald MozReview-Commit-ID: 56JBbJ743DM
dom/html/HTMLMediaElement.cpp
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -6564,28 +6564,39 @@ HTMLMediaElement::OnVisibilityChange(Vis
   }
 
   switch (aNewVisibility) {
     case Visibility::UNTRACKED: {
         MOZ_ASSERT_UNREACHABLE("Shouldn't notify for untracked visibility");
         break;
     }
     case Visibility::NONVISIBLE: {
+      if (mPlayTime.IsStarted()) {
+        // Not visible, play time is running -> Start hidden play time if needed.
+        HiddenVideoStart();
+      }
+
       mDecoder->NotifyOwnerActivityChanged(false);
       break;
     }
     case Visibility::MAY_BECOME_VISIBLE: {
       if (aOldVisibility == Visibility::NONVISIBLE) {
+        // Visible -> Just pause hidden play time (no-op if already paused).
+        HiddenVideoStop();
+
         mDecoder->NotifyOwnerActivityChanged(true);
       } else if (aOldVisibility == Visibility::IN_DISPLAYPORT) {
         // Do nothing.
       }
       break;
     }
     case Visibility::IN_DISPLAYPORT: {
+      // Visible -> Just pause hidden play time (no-op if already paused).
+      HiddenVideoStop();
+
       mDecoder->NotifyOwnerActivityChanged(true);
       break;
     }
   }
 
 }
 
 void