зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1284350. Reland on top of backouts "Bug 1282710 - Part 1 - implement the suspend and resume logics in HTMLMediaElement.cpp according to visibility events; r=cpearce r=kamidphish" r=kaku
Instead of "not visible", "approximately visible", and "visible" (in display port) we now have "approximately not visible", and "approximately visible" which includes "visible".
This commit is contained in:
Родитель
97166ec5f2
Коммит
cca4120327
|
@ -6017,6 +6017,48 @@ HTMLMediaElement::IsAllowedToPlay()
|
|||
return true;
|
||||
}
|
||||
|
||||
static const char* VisibilityString(Visibility aVisibility) {
|
||||
switch(aVisibility) {
|
||||
case Visibility::UNTRACKED: {
|
||||
return "UNTRACKED";
|
||||
}
|
||||
case Visibility::APPROXIMATELY_NONVISIBLE: {
|
||||
return "APPROXIMATELY_NONVISIBLE";
|
||||
}
|
||||
case Visibility::APPROXIMATELY_VISIBLE: {
|
||||
return "APPROXIMATELY_VISIBLE";
|
||||
}
|
||||
}
|
||||
|
||||
return "NAN";
|
||||
}
|
||||
|
||||
void
|
||||
HTMLMediaElement::OnVisibilityChange(Visibility aNewVisibility)
|
||||
{
|
||||
LOG(LogLevel::Debug, ("OnVisibilityChange(): %s\n",
|
||||
VisibilityString(aNewVisibility)));
|
||||
|
||||
if (!mDecoder) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (aNewVisibility) {
|
||||
case Visibility::UNTRACKED: {
|
||||
MOZ_ASSERT_UNREACHABLE("Shouldn't notify for untracked visibility");
|
||||
break;
|
||||
}
|
||||
case Visibility::APPROXIMATELY_NONVISIBLE: {
|
||||
mDecoder->NotifyOwnerActivityChanged(false);
|
||||
break;
|
||||
}
|
||||
case Visibility::APPROXIMATELY_VISIBLE: {
|
||||
mDecoder->NotifyOwnerActivityChanged(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
#ifdef MOZ_EME
|
||||
MediaKeys*
|
||||
HTMLMediaElement::GetMediaKeys() const
|
||||
|
|
|
@ -23,8 +23,11 @@
|
|||
#ifdef GetCurrentTime
|
||||
#undef GetCurrentTime
|
||||
#endif
|
||||
#include "Visibility.h"
|
||||
%}
|
||||
|
||||
native Visibility(mozilla::Visibility);
|
||||
|
||||
[uuid(c041d76c-15ce-47ad-b61d-e8755a6db638)]
|
||||
interface nsIDOMHTMLMediaElement : nsISupports
|
||||
{
|
||||
|
@ -129,4 +132,13 @@ interface nsIDOMHTMLMediaElement : nsISupports
|
|||
// * onmozinterruptend - called when the interruption is concluded
|
||||
|
||||
[notxpcom] boolean isVideo();
|
||||
|
||||
/**
|
||||
* Called by layout to announce when the frame associated with this content
|
||||
* has changed its visibility state.
|
||||
*
|
||||
* @param aOldVisibility The previous visibility state.
|
||||
* @param aNewVisibility The new visibility state.
|
||||
*/
|
||||
[noscript, notxpcom] void onVisibilityChange(in Visibility aNewVisibility);
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче