mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-04 11:26:09 +00:00
Bug 631058 - Backing out changesets 0d43e33ce134 and 60d7b8a4c275. r=wes, a=backout-scary-stuff
This commit is contained in:
parent
75d7be8f97
commit
87e2b003c4
@ -62,7 +62,7 @@ onload = function() {
|
||||
iframe = document.getElementById('iframe');
|
||||
iframe.onerror = iframe.onload = iframeNotifyParent;
|
||||
audio = document.getElementById('audio');
|
||||
audio.onerror = audio.onloadedmetadata = audioNotifyParent;
|
||||
audio.onerror = audio.oncanplay = audioNotifyParent;
|
||||
}
|
||||
|
||||
</script>
|
||||
|
@ -12,7 +12,7 @@
|
||||
<iframe id=inner></iframe>
|
||||
<iframe id=iframe></iframe>
|
||||
<img id=img onload="gen.send(event);">
|
||||
<audio id=audio onloadedmetadata="gen.send(event);">
|
||||
<audio id=audio oncanplay="gen.send(event);">
|
||||
<input type=file id=fileList>
|
||||
</p>
|
||||
<div id="content" style="display: none">
|
||||
@ -90,11 +90,11 @@ function runTest() {
|
||||
var fileurl = URL.createObjectURL(file);
|
||||
audio.src = fileurl;
|
||||
var e = (yield);
|
||||
is(e.type, "loadedmetadata", "loaded successfully");
|
||||
is(e.type, "canplay", "loaded successfully");
|
||||
|
||||
// Revoke url and attempt to load a audio in this document
|
||||
audio.src = "file_mozfiledataurl_audio.ogg";
|
||||
is((yield).type, "loadedmetadata", "successfully reset audio");
|
||||
is((yield).type, "canplay", "successfully reset audio");
|
||||
URL.revokeObjectURL(fileurl);
|
||||
todo(false, "urls need to act like 404s, not fail to parse");
|
||||
/* img.src = fileurl;
|
||||
@ -113,7 +113,7 @@ function runTest() {
|
||||
yield;
|
||||
inner.contentWindow.postMessage(JSON.stringify({audio:fileurl}), "*");
|
||||
var res = (yield);
|
||||
is(res.type, "loadedmetadata", "loaded successfully");
|
||||
is(res.type, "canplay", "loaded successfully");
|
||||
|
||||
// Attempt to load an audio in a different cross-origin document
|
||||
inner.src = innerCrossSiteURI;
|
||||
|
@ -328,19 +328,6 @@ public:
|
||||
*/
|
||||
PRBool GetPlayedOrSeeked() const { return mHasPlayedOrSeeked; }
|
||||
|
||||
/**
|
||||
* The preloading action to perform. These dictate how we react to the
|
||||
* preload attribute. See mPreloadAction.
|
||||
*/
|
||||
enum PreloadAction {
|
||||
PRELOAD_UNDEFINED = 0, // not determined - used only for initialization
|
||||
PRELOAD_NONE = 1, // do not preload
|
||||
PRELOAD_METADATA = 2, // preload only the metadata (and first frame)
|
||||
PRELOAD_ENOUGH = 3 // preload enough data to allow uninterrupted
|
||||
// playback
|
||||
};
|
||||
PreloadAction GetPreloadAction() const { return mPreloadAction; }
|
||||
|
||||
nsresult CopyInnerTo(nsGenericElement* aDest) const;
|
||||
|
||||
/**
|
||||
@ -491,6 +478,18 @@ protected:
|
||||
PRELOAD_ATTR_AUTO // set to "auto"
|
||||
};
|
||||
|
||||
/**
|
||||
* The preloading action to perform. These dictate how we react to the
|
||||
* preload attribute. See mPreloadAction.
|
||||
*/
|
||||
enum PreloadAction {
|
||||
PRELOAD_UNDEFINED = 0, // not determined - used only for initialization
|
||||
PRELOAD_NONE = 1, // do not preload
|
||||
PRELOAD_METADATA = 2, // preload only the metadata (and first frame)
|
||||
PRELOAD_ENOUGH = 3 // preload enough data to allow uninterrupted
|
||||
// playback
|
||||
};
|
||||
|
||||
/**
|
||||
* Suspends the load of resource at aURI, so that it can be resumed later
|
||||
* by ResumeLoad(). This is called when we have a media with a 'preload'
|
||||
|
@ -855,10 +855,6 @@ void nsBuiltinDecoder::Resume(PRBool aForceBuffering)
|
||||
}
|
||||
}
|
||||
|
||||
nsHTMLMediaElement::PreloadAction nsBuiltinDecoder::GetPreloadAction() {
|
||||
return mElement->GetPreloadAction();
|
||||
}
|
||||
|
||||
void nsBuiltinDecoder::StopProgressUpdates()
|
||||
{
|
||||
NS_ASSERTION(IsCurrentThread(mStateMachineThread), "Should be on state machine thread.");
|
||||
|
@ -450,9 +450,6 @@ class nsBuiltinDecoder : public nsMediaDecoder
|
||||
}
|
||||
|
||||
public:
|
||||
// Return the preloadAction
|
||||
nsHTMLMediaElement::PreloadAction GetPreloadAction();
|
||||
|
||||
// Return the current state. Can be called on any thread. If called from
|
||||
// a non-main thread, the decoder monitor must be held.
|
||||
PlayState GetState() {
|
||||
|
@ -987,14 +987,11 @@ nsresult nsBuiltinDecoderStateMachine::Run()
|
||||
MonitorAutoExit exitMon(mDecoder->GetMonitor());
|
||||
RenderVideoFrame(videoData);
|
||||
}
|
||||
if (mDecoder->GetPreloadAction() == nsHTMLMediaElement::PRELOAD_ENOUGH ||
|
||||
mDecoder->GetState() == nsBuiltinDecoder::PLAY_STATE_PLAYING)
|
||||
{
|
||||
// Start the decode threads, so that we can pre buffer the streams
|
||||
// and calculate the start time in order to determine the duration.
|
||||
if (NS_FAILED(StartDecodeThreads())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Start the decode threads, so that we can pre buffer the streams.
|
||||
// and calculate the start time in order to determine the duration.
|
||||
if (NS_FAILED(StartDecodeThreads())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
NS_ASSERTION(mStartTime != -1, "Must have start time");
|
||||
@ -1026,39 +1023,12 @@ nsresult nsBuiltinDecoderStateMachine::Run()
|
||||
if (mState == DECODER_STATE_DECODING_METADATA) {
|
||||
LOG(PR_LOG_DEBUG, ("%p Changed state from DECODING_METADATA to DECODING", mDecoder));
|
||||
mState = DECODER_STATE_DECODING;
|
||||
}
|
||||
|
||||
// Start playback.
|
||||
if (mDecoder->GetState() == nsBuiltinDecoder::PLAY_STATE_PLAYING) {
|
||||
if (!IsPlaying()) {
|
||||
StartPlayback();
|
||||
}
|
||||
} else if (mDecoder->GetPreloadAction() != nsHTMLMediaElement::PRELOAD_ENOUGH) {
|
||||
if (mReader) {
|
||||
// Clear any frames queued up during FindStartTime() and reset
|
||||
// to the start of the stream to save memory.
|
||||
MonitorAutoExit exitMon(mDecoder->GetMonitor());
|
||||
mReader->ResetDecode();
|
||||
|
||||
nsMediaStream* stream = mDecoder->GetCurrentStream();
|
||||
PRInt64 offset = mReader->GetInfo().mDataOffset;
|
||||
if (NS_FAILED(stream->Seek(nsISeekableStream::NS_SEEK_SET, offset))) {
|
||||
mState = DECODER_STATE_SHUTDOWN;
|
||||
}
|
||||
}
|
||||
// Note state can change when we release the decoder monitor to
|
||||
// call ResetDecode() above, so we must re-verify the state here.
|
||||
if (mState != DECODER_STATE_DECODING ||
|
||||
mDecoder->GetState() == nsBuiltinDecoder::PLAY_STATE_PLAYING) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Shutdown the state machine thread, in order to save
|
||||
// memory on thread stacks, particuarly on Linux.
|
||||
nsCOMPtr<nsIRunnable> event = new ShutdownThreadEvent(mDecoder->mStateMachineThread);
|
||||
NS_DispatchToMainThread(event, NS_DISPATCH_NORMAL);
|
||||
mDecoder->mStateMachineThread = nsnull;
|
||||
|
||||
return NS_OK;
|
||||
// Start playback.
|
||||
if (mDecoder->GetState() == nsBuiltinDecoder::PLAY_STATE_PLAYING) {
|
||||
if (!IsPlaying()) {
|
||||
StartPlayback();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2067,28 +2067,23 @@ nsMediaCacheStream::Seek(PRInt32 aWhence, PRInt64 aOffset)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
PRInt64 oldOffset = mStreamOffset;
|
||||
PRInt64 newOffset = mStreamOffset;
|
||||
switch (aWhence) {
|
||||
case PR_SEEK_END:
|
||||
if (mStreamLength < 0)
|
||||
return NS_ERROR_FAILURE;
|
||||
newOffset = mStreamLength + aOffset;
|
||||
mStreamOffset = mStreamLength + aOffset;
|
||||
break;
|
||||
case PR_SEEK_CUR:
|
||||
newOffset += aOffset;
|
||||
mStreamOffset += aOffset;
|
||||
break;
|
||||
case PR_SEEK_SET:
|
||||
newOffset = aOffset;
|
||||
mStreamOffset = aOffset;
|
||||
break;
|
||||
default:
|
||||
NS_ERROR("Unknown whence");
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
if (newOffset < 0)
|
||||
return NS_ERROR_FAILURE;
|
||||
mStreamOffset = newOffset;
|
||||
|
||||
LOG(PR_LOG_DEBUG, ("Stream %p Seek to %lld", this, (long long)mStreamOffset));
|
||||
gMediaCache->NoteSeek(this, oldOffset);
|
||||
|
||||
|
@ -335,7 +335,7 @@ nsresult nsWebMReader::ReadMetadata()
|
||||
// mDataOffset is not used by the WebM backend.
|
||||
// See bug 566779 for a suggestion to refactor
|
||||
// and remove it.
|
||||
mInfo.mDataOffset = 0;
|
||||
mInfo.mDataOffset = -1;
|
||||
}
|
||||
else if (!mHasAudio && type == NESTEGG_TRACK_AUDIO) {
|
||||
nestegg_audio_params params;
|
||||
|
Loading…
Reference in New Issue
Block a user