зеркало из https://github.com/mozilla/gecko-dev.git
bug 1116382 resolve MediaSource urls on Source element src attributes when set r=bholley
--HG-- extra : rebase_source : 2b3a338cbe444461267af04d2907bbc3a042cc0b
This commit is contained in:
Родитель
75c800d128
Коммит
c4f7974c43
|
@ -9,11 +9,13 @@
|
|||
|
||||
#include "mozilla/dom/HTMLImageElement.h"
|
||||
#include "mozilla/dom/ResponsiveImageSelector.h"
|
||||
#include "mozilla/dom/MediaSource.h"
|
||||
|
||||
#include "nsGkAtoms.h"
|
||||
|
||||
#include "nsIMediaList.h"
|
||||
#include "nsCSSParser.h"
|
||||
#include "nsHostObjectProtocolHandler.h"
|
||||
|
||||
#include "mozilla/Preferences.h"
|
||||
|
||||
|
@ -31,8 +33,15 @@ HTMLSourceElement::~HTMLSourceElement()
|
|||
{
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED(HTMLSourceElement, nsGenericHTMLElement,
|
||||
nsIDOMHTMLSourceElement)
|
||||
NS_IMPL_CYCLE_COLLECTION_INHERITED(HTMLSourceElement, nsGenericHTMLElement,
|
||||
mSrcMediaSource)
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(HTMLSourceElement, nsGenericHTMLElement)
|
||||
NS_IMPL_RELEASE_INHERITED(HTMLSourceElement, nsGenericHTMLElement)
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(HTMLSourceElement)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLSourceElement)
|
||||
NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement)
|
||||
|
||||
NS_IMPL_ELEMENT_CLONE(HTMLSourceElement)
|
||||
|
||||
|
@ -114,6 +123,16 @@ HTMLSourceElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
|
|||
cssParser.ParseMediaList(mediaStr, nullptr, 0, mMediaList, false);
|
||||
}
|
||||
}
|
||||
} else if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::src) {
|
||||
mSrcMediaSource = nullptr;
|
||||
if (aValue) {
|
||||
nsString srcStr = aValue->GetStringValue();
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
NewURIFromString(srcStr, getter_AddRefs(uri));
|
||||
if (uri && IsMediaSourceURI(uri)) {
|
||||
NS_GetSourceForMediaSourceURI(uri, getter_AddRefs(mSrcMediaSource));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
|
||||
|
|
|
@ -25,6 +25,8 @@ public:
|
|||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLSourceElement,
|
||||
nsGenericHTMLElement)
|
||||
|
||||
NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLSourceElement, source)
|
||||
|
||||
|
@ -49,6 +51,10 @@ public:
|
|||
static bool WouldMatchMediaForDocument(const nsAString& aMediaStr,
|
||||
const nsIDocument *aDocument);
|
||||
|
||||
// Return the MediaSource object if any associated with the src attribute
|
||||
// when it was set.
|
||||
MediaSource* GetSrcMediaSource() { return mSrcMediaSource; };
|
||||
|
||||
// WebIDL
|
||||
void GetSrc(nsString& aSrc)
|
||||
{
|
||||
|
@ -111,6 +117,7 @@ protected:
|
|||
|
||||
private:
|
||||
nsRefPtr<nsMediaList> mMediaList;
|
||||
nsRefPtr<MediaSource> mSrcMediaSource;
|
||||
};
|
||||
|
||||
} // namespace dom
|
||||
|
|
Загрузка…
Ссылка в новой задаче