author | Kaku Kuo <kaku@mozilla.com> |
Wed, 22 Mar 2017 14:46:09 +0800 | |
changeset 348772 | 0fd3a6bb60afb2243d104fcc16a5d4c1610e16a8 |
parent 348771 | e8e9624298a9d8943bc36a9a785dd24f4a8b66eb |
child 348773 | 0dd25f000f10e93b6f37d3c4ae86ef2ab54f9d45 |
push id | 31535 |
push user | cbook@mozilla.com |
push date | Wed, 22 Mar 2017 13:25:07 +0000 |
treeherder | mozilla-central@ee30286771eb [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jwwang |
bugs | 1349456 |
milestone | 55.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
dom/html/HTMLMediaElement.cpp | file | annotate | diff | comparison | revisions | |
dom/html/HTMLMediaElement.h | file | annotate | diff | comparison | revisions |
--- a/dom/html/HTMLMediaElement.cpp +++ b/dom/html/HTMLMediaElement.cpp @@ -1527,22 +1527,17 @@ HTMLMediaElement::SetVisible(bool aVisib } mDecoder->SetForcedHidden(!aVisible); } already_AddRefed<layers::Image> HTMLMediaElement::GetCurrentImage() { - // Mark the decoder owned by the element as tainted so that the - // suspend-video-decoder is disabled. - mHasSuspendTaint = true; - if (mDecoder) { - mDecoder->SetSuspendTaint(true); - } + MarkAsTainted(); // TODO: In bug 1345404, handle case when video decoder is already suspended. ImageContainer* container = GetImageContainer(); if (!container) { return nullptr; } AutoLockImage lockImage(container); @@ -3330,16 +3325,17 @@ HTMLMediaElement::AddCaptureMediaTrackTo already_AddRefed<DOMMediaStream> HTMLMediaElement::CaptureStreamInternal(bool aFinishWhenEnded, bool aCaptureAudio, MediaStreamGraph* aGraph) { MOZ_RELEASE_ASSERT(aGraph); MarkAsContentSource(CallerAPI::CAPTURE_STREAM); + MarkAsTainted(); nsPIDOMWindowInner* window = OwnerDoc()->GetInnerWindow(); if (!window) { return nullptr; } if (ContainsRestrictedContent()) { return nullptr; } @@ -7479,16 +7475,26 @@ private: }; already_AddRefed<GMPCrashHelper> HTMLMediaElement::CreateGMPCrashHelper() { return MakeAndAddRef<MediaElementGMPCrashHelper>(this); } +void +HTMLMediaElement::MarkAsTainted() +{ + mHasSuspendTaint = true; + + if (mDecoder) { + mDecoder->SetSuspendTaint(true); + } +} + bool HasDebuggerPrivilege(JSContext* aCx, JSObject* aObj) { return nsContentUtils::CallerHasPermission(aCx, NS_LITERAL_STRING("debugger")); } } // namespace dom } // namespace mozilla
--- a/dom/html/HTMLMediaElement.h +++ b/dom/html/HTMLMediaElement.h @@ -1305,16 +1305,20 @@ protected: // and queues a task to resolve them also to dispatch a "playing" event. void NotifyAboutPlaying(); already_AddRefed<Promise> CreateDOMPromise(ErrorResult& aRv) const; // Pass information for deciding the video decode mode to decoder. void NotifyDecoderActivityChanges() const; + // Mark the decoder owned by the element as tainted so that the + // suspend-video-decoder is disabled. + void MarkAsTainted(); + // The current decoder. Load() has been called on this decoder. // At most one of mDecoder and mSrcStream can be non-null. RefPtr<MediaDecoder> mDecoder; // The DocGroup-specific AbstractThread::MainThread() of this HTML element. RefPtr<AbstractThread> mAbstractMainThread; // Observers listening to changes to the mDecoder principal.