Bug 1781759 factor out ChannelMediaResource::MediaElement() helper r=chunmin

Differential Revision: https://phabricator.services.mozilla.com/D154039
This commit is contained in:
Karl Tomlinson 2022-08-23 00:23:51 +00:00
Родитель e9caca8307
Коммит 7210f485fe
2 изменённых файлов: 16 добавлений и 22 удалений

Просмотреть файл

@ -513,6 +513,15 @@ nsresult ChannelMediaResource::Open(nsIStreamListener** aStreamListener) {
return NS_OK;
}
dom::HTMLMediaElement* ChannelMediaResource::MediaElement() const {
MOZ_ASSERT(NS_IsMainThread());
MediaDecoderOwner* owner = mCallback->GetMediaOwner();
MOZ_DIAGNOSTIC_ASSERT(owner);
dom::HTMLMediaElement* element = owner->GetMediaElement();
MOZ_DIAGNOSTIC_ASSERT(element);
return element;
}
nsresult ChannelMediaResource::OpenChannel(int64_t aOffset) {
MOZ_ASSERT(NS_IsMainThread());
MOZ_DIAGNOSTIC_ASSERT(!mClosed);
@ -530,11 +539,7 @@ nsresult ChannelMediaResource::OpenChannel(int64_t aOffset) {
NS_ENSURE_SUCCESS(rv, rv);
// Tell the media element that we are fetching data from a channel.
MediaDecoderOwner* owner = mCallback->GetMediaOwner();
MOZ_DIAGNOSTIC_ASSERT(owner);
dom::HTMLMediaElement* element = owner->GetMediaElement();
MOZ_DIAGNOSTIC_ASSERT(element);
element->DownloadResumed();
MediaElement()->DownloadResumed();
return NS_OK;
}
@ -557,11 +562,7 @@ nsresult ChannelMediaResource::SetupChannelHeaders(int64_t aOffset) {
NS_ENSURE_SUCCESS(rv, rv);
// Send Accept header for video and audio types only (Bug 489071)
MediaDecoderOwner* owner = mCallback->GetMediaOwner();
MOZ_DIAGNOSTIC_ASSERT(owner);
dom::HTMLMediaElement* element = owner->GetMediaElement();
MOZ_DIAGNOSTIC_ASSERT(element);
element->SetRequestHeaders(hc);
MediaElement()->SetRequestHeaders(hc);
} else {
NS_ASSERTION(aOffset == 0, "Don't know how to seek on this channel type");
return NS_ERROR_FAILURE;
@ -670,10 +671,7 @@ void ChannelMediaResource::Suspend(bool aCloseImmediately) {
return;
}
MediaDecoderOwner* owner = mCallback->GetMediaOwner();
MOZ_DIAGNOSTIC_ASSERT(owner);
dom::HTMLMediaElement* element = owner->GetMediaElement();
MOZ_DIAGNOSTIC_ASSERT(element);
dom::HTMLMediaElement* element = MediaElement();
if (mChannel && aCloseImmediately && mIsTransportSeekable) {
CloseChannel();
@ -692,10 +690,7 @@ void ChannelMediaResource::Resume() {
return;
}
MediaDecoderOwner* owner = mCallback->GetMediaOwner();
MOZ_DIAGNOSTIC_ASSERT(owner);
dom::HTMLMediaElement* element = owner->GetMediaElement();
MOZ_DIAGNOSTIC_ASSERT(element);
dom::HTMLMediaElement* element = MediaElement();
if (mSuspendAgent.Resume()) {
if (mChannel) {
@ -713,10 +708,7 @@ nsresult ChannelMediaResource::RecreateChannel() {
nsLoadFlags loadFlags = nsICachingChannel::LOAD_BYPASS_LOCAL_CACHE_IF_BUSY |
(mLoadInBackground ? nsIRequest::LOAD_BACKGROUND : 0);
MediaDecoderOwner* owner = mCallback->GetMediaOwner();
MOZ_DIAGNOSTIC_ASSERT(owner);
dom::HTMLMediaElement* element = owner->GetMediaElement();
MOZ_DIAGNOSTIC_ASSERT(element);
dom::HTMLMediaElement* element = MediaElement();
nsCOMPtr<nsILoadGroup> loadGroup = element->GetDocumentLoadGroup();
NS_ENSURE_TRUE(loadGroup, NS_ERROR_NULL_POINTER);

Просмотреть файл

@ -213,6 +213,8 @@ class ChannelMediaResource
nsresult OnChannelRedirect(nsIChannel* aOld, nsIChannel* aNew,
uint32_t aFlags, int64_t aOffset);
// Use only before MediaDecoder shutdown. Main thread only.
dom::HTMLMediaElement* MediaElement() const;
// Opens the channel, using an HTTP byte range request to start at aOffset
// if possible. Main thread only.
nsresult OpenChannel(int64_t aOffset);