зеркало из 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;
|
||||
mPendingEvents.Clear();
|
||||
|
||||
AssertReadyStateIsNothing();
|
||||
}
|
||||
|
||||
void HTMLMediaElement::NoSupportedMediaSourceError(const nsACString& aErrorDetails)
|
||||
|
@ -1921,6 +1923,8 @@ void HTMLMediaElement::QueueLoadFromSourceTask()
|
|||
ChangeReadyState(nsIDOMHTMLMediaElement::HAVE_NOTHING);
|
||||
}
|
||||
|
||||
AssertReadyStateIsNothing();
|
||||
|
||||
ChangeDelayLoadStatus(true);
|
||||
ChangeNetworkState(nsIDOMHTMLMediaElement::NETWORK_LOADING);
|
||||
RefPtr<Runnable> r = NewRunnableMethod("HTMLMediaElement::LoadFromSourceChildren",
|
||||
|
@ -2579,6 +2583,8 @@ nsresult HTMLMediaElement::LoadResource()
|
|||
return FinishDecoderSetup(decoder);
|
||||
}
|
||||
|
||||
AssertReadyStateIsNothing();
|
||||
|
||||
RefPtr<ChannelLoader> loader = new ChannelLoader;
|
||||
nsresult rv = loader->Load(this);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
|
@ -4868,12 +4874,36 @@ HTMLMediaElement::CanPlayType(const nsAString& aType, nsAString& aResult)
|
|||
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
|
||||
HTMLMediaElement::InitializeDecoderAsClone(ChannelMediaDecoder* aOriginal)
|
||||
{
|
||||
NS_ASSERTION(mLoadingSrc, "mLoadingSrc must already be set");
|
||||
NS_ASSERTION(mDecoder == nullptr, "Shouldn't have a decoder");
|
||||
MOZ_DIAGNOSTIC_ASSERT(mReadyState == nsIDOMHTMLMediaElement::HAVE_NOTHING);
|
||||
AssertReadyStateIsNothing();
|
||||
|
||||
MediaDecoderInit decoderInit(this,
|
||||
mMuted ? 0.0 : mVolume,
|
||||
|
@ -4927,7 +4957,7 @@ nsresult HTMLMediaElement::InitializeDecoderForChannel(nsIChannel* aChannel,
|
|||
nsIStreamListener** aListener)
|
||||
{
|
||||
NS_ASSERTION(mLoadingSrc, "mLoadingSrc must already be set");
|
||||
MOZ_DIAGNOSTIC_ASSERT(mReadyState == nsIDOMHTMLMediaElement::HAVE_NOTHING);
|
||||
AssertReadyStateIsNothing();
|
||||
|
||||
DecoderDoctorDiagnostics diagnostics;
|
||||
|
||||
|
@ -6586,6 +6616,7 @@ void HTMLMediaElement::NotifyAddedSource()
|
|||
if (!HasAttr(kNameSpaceID_None, nsGkAtoms::src) &&
|
||||
mNetworkState == nsIDOMHTMLMediaElement::NETWORK_EMPTY)
|
||||
{
|
||||
AssertReadyStateIsNothing();
|
||||
QueueSelectResourceTask();
|
||||
}
|
||||
|
||||
|
|
|
@ -1820,6 +1820,9 @@ private:
|
|||
// resolved/rejected at AsyncResolveSeekDOMPromiseIfExists()/
|
||||
// AsyncRejectSeekDOMPromiseIfExists() methods.
|
||||
RefPtr<dom::Promise> mSeekDOMPromise;
|
||||
|
||||
// For debugging bug 1407148.
|
||||
void AssertReadyStateIsNothing();
|
||||
};
|
||||
|
||||
// Check if the context is chrome or has the debugger or tabs permission
|
||||
|
|
Загрузка…
Ссылка в новой задаче