mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 821383 - Don't bother with JSAPI magic in nsHTMLMediaElement::{G,S}etMozSrcObject; r=bz+roc
This commit is contained in:
parent
d805e77871
commit
4465cc3a75
@ -442,38 +442,21 @@ NS_IMPL_ENUM_ATTR_DEFAULT_VALUE(nsHTMLMediaElement, Preload, preload, NULL)
|
||||
NS_IMPL_ENUM_ATTR_DEFAULT_VALUE(nsHTMLMediaElement, MozAudioChannelType, mozaudiochannel, "normal")
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLMediaElement::GetMozSrcObject(JSContext* aCtx, jsval *aParams)
|
||||
nsHTMLMediaElement::GetMozSrcObject(nsIDOMMediaStream** aStream)
|
||||
{
|
||||
if (mSrcAttrStream) {
|
||||
NS_ASSERTION(mSrcAttrStream->GetStream(), "MediaStream should have been set up properly");
|
||||
return nsContentUtils::WrapNative(aCtx, JS_GetGlobalForScopeChain(aCtx),
|
||||
mSrcAttrStream, aParams);
|
||||
}
|
||||
*aParams = JSVAL_NULL;
|
||||
NS_ASSERTION(!mSrcAttrStream || mSrcAttrStream->GetStream(),
|
||||
"MediaStream should have been set up properly");
|
||||
nsRefPtr<DOMMediaStream> stream = mSrcAttrStream;
|
||||
stream.forget(aStream);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLMediaElement::SetMozSrcObject(JSContext* aCtx, const jsval & aParams)
|
||||
nsHTMLMediaElement::SetMozSrcObject(nsIDOMMediaStream* aStream)
|
||||
{
|
||||
if (aParams.isNull()) {
|
||||
mSrcAttrStream = nullptr;
|
||||
mSrcAttrStream = static_cast<DOMMediaStream*>(aStream);
|
||||
Load();
|
||||
return NS_OK;
|
||||
}
|
||||
if (aParams.isObject()) {
|
||||
nsCOMPtr<nsIDOMMediaStream> stream;
|
||||
stream = do_QueryInterface(nsContentUtils::XPConnect()->
|
||||
GetNativeOfWrapper(aCtx, JSVAL_TO_OBJECT(aParams)));
|
||||
if (stream) {
|
||||
mSrcAttrStream = static_cast<DOMMediaStream*>(stream.get());
|
||||
Load();
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
// Should we store unsupported values on the element's attribute anyway?
|
||||
// Let's not.
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* readonly attribute nsIDOMHTMLMediaElement mozAutoplayEnabled; */
|
||||
|
@ -24,7 +24,12 @@ function doTest() {
|
||||
var stream = a.mozCaptureStream();
|
||||
b.mozSrcObject = stream;
|
||||
is(b.mozSrcObject, stream, "Stream set correctly");
|
||||
try {
|
||||
b.mozSrcObject = "invalid";
|
||||
ok(false, "Setting mozSrcObject to an invalid value should throw.");
|
||||
} catch (e) {
|
||||
todo(e instanceof TypeError, "Exception should be a TypeError");
|
||||
}
|
||||
is(b.mozSrcObject, stream, "Stream not set to invalid value");
|
||||
is(b.src, newSrc, "src attribute not affected by setting srcObject");
|
||||
var step = 0;
|
||||
|
@ -20,7 +20,7 @@
|
||||
* @status UNDER_DEVELOPMENT
|
||||
*/
|
||||
|
||||
[scriptable, uuid(ee5df17c-3928-11e2-8808-10bf48d64bd4)]
|
||||
[scriptable, uuid(e960385a-25e6-4695-a5e6-95908f88c5ec)]
|
||||
interface nsIDOMHTMLAudioElement : nsIDOMHTMLMediaElement
|
||||
{
|
||||
// Setup the audio stream for writing
|
||||
|
@ -27,7 +27,7 @@ interface nsIDOMMediaStream;
|
||||
#endif
|
||||
%}
|
||||
|
||||
[scriptable, uuid(d9331886-3928-11e2-b0e1-10bf48d64bd4)]
|
||||
[scriptable, uuid(e1a30308-9e84-4c8d-bc81-06fb03385406)]
|
||||
interface nsIDOMHTMLMediaElement : nsIDOMHTMLElement
|
||||
{
|
||||
// error state
|
||||
@ -35,7 +35,7 @@ interface nsIDOMHTMLMediaElement : nsIDOMHTMLElement
|
||||
|
||||
// network state
|
||||
attribute DOMString src;
|
||||
[implicit_jscontext] attribute jsval mozSrcObject;
|
||||
attribute nsIDOMMediaStream mozSrcObject;
|
||||
readonly attribute DOMString currentSrc;
|
||||
attribute DOMString crossorigin;
|
||||
const unsigned short NETWORK_EMPTY = 0;
|
||||
|
@ -16,7 +16,7 @@
|
||||
* @status UNDER_DEVELOPMENT
|
||||
*/
|
||||
|
||||
[scriptable, uuid(fe914e4a-3928-11e2-bea2-10bf48d64bd4)]
|
||||
[scriptable, uuid(4fb3129d-0c3e-4a5c-bf75-c3973f7463c3)]
|
||||
interface nsIDOMHTMLVideoElement : nsIDOMHTMLMediaElement
|
||||
{
|
||||
attribute long width;
|
||||
|
Loading…
Reference in New Issue
Block a user