зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1407148 - add logs for debugging crashes. r=gerald
MozReview-Commit-ID: FgDbl2tCbEE --HG-- extra : rebase_source : d94d5783a2a08022d8ef89f14f8f35c99ee124fe extra : source : 9b4dfa4ccd83c2a933f65d422641c5a9c018ce5c
This commit is contained in:
Родитель
da66155d17
Коммит
03ca7715a5
|
@ -1860,6 +1860,8 @@ void HTMLMediaElement::AbortExistingLoads()
|
||||||
|
|
||||||
mEventDeliveryPaused = false;
|
mEventDeliveryPaused = false;
|
||||||
mPendingEvents.Clear();
|
mPendingEvents.Clear();
|
||||||
|
|
||||||
|
AssertReadyStateIsNothing();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HTMLMediaElement::NoSupportedMediaSourceError(const nsACString& aErrorDetails)
|
void HTMLMediaElement::NoSupportedMediaSourceError(const nsACString& aErrorDetails)
|
||||||
|
@ -1921,6 +1923,8 @@ void HTMLMediaElement::QueueLoadFromSourceTask()
|
||||||
ChangeReadyState(nsIDOMHTMLMediaElement::HAVE_NOTHING);
|
ChangeReadyState(nsIDOMHTMLMediaElement::HAVE_NOTHING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AssertReadyStateIsNothing();
|
||||||
|
|
||||||
ChangeDelayLoadStatus(true);
|
ChangeDelayLoadStatus(true);
|
||||||
ChangeNetworkState(nsIDOMHTMLMediaElement::NETWORK_LOADING);
|
ChangeNetworkState(nsIDOMHTMLMediaElement::NETWORK_LOADING);
|
||||||
RefPtr<Runnable> r = NewRunnableMethod("HTMLMediaElement::LoadFromSourceChildren",
|
RefPtr<Runnable> r = NewRunnableMethod("HTMLMediaElement::LoadFromSourceChildren",
|
||||||
|
@ -2579,6 +2583,8 @@ nsresult HTMLMediaElement::LoadResource()
|
||||||
return FinishDecoderSetup(decoder);
|
return FinishDecoderSetup(decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AssertReadyStateIsNothing();
|
||||||
|
|
||||||
RefPtr<ChannelLoader> loader = new ChannelLoader;
|
RefPtr<ChannelLoader> loader = new ChannelLoader;
|
||||||
nsresult rv = loader->Load(this);
|
nsresult rv = loader->Load(this);
|
||||||
if (NS_SUCCEEDED(rv)) {
|
if (NS_SUCCEEDED(rv)) {
|
||||||
|
@ -4868,12 +4874,36 @@ HTMLMediaElement::CanPlayType(const nsAString& aType, nsAString& aResult)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
HTMLMediaElement::AssertReadyStateIsNothing()
|
||||||
|
{
|
||||||
|
#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED
|
||||||
|
if (mReadyState != nsIDOMHTMLMediaElement::HAVE_NOTHING) {
|
||||||
|
char buf[1024];
|
||||||
|
SprintfLiteral(buf,
|
||||||
|
"readyState=%d networkState=%d mLoadWaitStatus=%d "
|
||||||
|
"mSourceLoadCandidate=%d "
|
||||||
|
"mIsLoadingFromSourceChildren=%d mPreloadAction=%d "
|
||||||
|
"mSuspendedForPreloadNone=%d error=%d",
|
||||||
|
int(mReadyState.Ref()),
|
||||||
|
int(mNetworkState),
|
||||||
|
int(mLoadWaitStatus),
|
||||||
|
!!mSourceLoadCandidate,
|
||||||
|
mIsLoadingFromSourceChildren,
|
||||||
|
int(mPreloadAction),
|
||||||
|
mSuspendedForPreloadNone,
|
||||||
|
GetError() ? GetError()->Code() : 0);
|
||||||
|
MOZ_CRASH_UNSAFE_PRINTF("ReadyState should be HAVE_NOTHING! %s", buf);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
HTMLMediaElement::InitializeDecoderAsClone(ChannelMediaDecoder* aOriginal)
|
HTMLMediaElement::InitializeDecoderAsClone(ChannelMediaDecoder* aOriginal)
|
||||||
{
|
{
|
||||||
NS_ASSERTION(mLoadingSrc, "mLoadingSrc must already be set");
|
NS_ASSERTION(mLoadingSrc, "mLoadingSrc must already be set");
|
||||||
NS_ASSERTION(mDecoder == nullptr, "Shouldn't have a decoder");
|
NS_ASSERTION(mDecoder == nullptr, "Shouldn't have a decoder");
|
||||||
MOZ_DIAGNOSTIC_ASSERT(mReadyState == nsIDOMHTMLMediaElement::HAVE_NOTHING);
|
AssertReadyStateIsNothing();
|
||||||
|
|
||||||
MediaDecoderInit decoderInit(this,
|
MediaDecoderInit decoderInit(this,
|
||||||
mMuted ? 0.0 : mVolume,
|
mMuted ? 0.0 : mVolume,
|
||||||
|
@ -4927,7 +4957,7 @@ nsresult HTMLMediaElement::InitializeDecoderForChannel(nsIChannel* aChannel,
|
||||||
nsIStreamListener** aListener)
|
nsIStreamListener** aListener)
|
||||||
{
|
{
|
||||||
NS_ASSERTION(mLoadingSrc, "mLoadingSrc must already be set");
|
NS_ASSERTION(mLoadingSrc, "mLoadingSrc must already be set");
|
||||||
MOZ_DIAGNOSTIC_ASSERT(mReadyState == nsIDOMHTMLMediaElement::HAVE_NOTHING);
|
AssertReadyStateIsNothing();
|
||||||
|
|
||||||
DecoderDoctorDiagnostics diagnostics;
|
DecoderDoctorDiagnostics diagnostics;
|
||||||
|
|
||||||
|
@ -6586,6 +6616,7 @@ void HTMLMediaElement::NotifyAddedSource()
|
||||||
if (!HasAttr(kNameSpaceID_None, nsGkAtoms::src) &&
|
if (!HasAttr(kNameSpaceID_None, nsGkAtoms::src) &&
|
||||||
mNetworkState == nsIDOMHTMLMediaElement::NETWORK_EMPTY)
|
mNetworkState == nsIDOMHTMLMediaElement::NETWORK_EMPTY)
|
||||||
{
|
{
|
||||||
|
AssertReadyStateIsNothing();
|
||||||
QueueSelectResourceTask();
|
QueueSelectResourceTask();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1820,6 +1820,9 @@ private:
|
||||||
// resolved/rejected at AsyncResolveSeekDOMPromiseIfExists()/
|
// resolved/rejected at AsyncResolveSeekDOMPromiseIfExists()/
|
||||||
// AsyncRejectSeekDOMPromiseIfExists() methods.
|
// AsyncRejectSeekDOMPromiseIfExists() methods.
|
||||||
RefPtr<dom::Promise> mSeekDOMPromise;
|
RefPtr<dom::Promise> mSeekDOMPromise;
|
||||||
|
|
||||||
|
// For debugging bug 1407148.
|
||||||
|
void AssertReadyStateIsNothing();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Check if the context is chrome or has the debugger or tabs permission
|
// Check if the context is chrome or has the debugger or tabs permission
|
||||||
|
|
Загрузка…
Ссылка в новой задаче