Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1103)

Unified Diff: Source/core/html/MediaProvider.cpp

Issue 545933002: Implement HTMLMediaElement::srcObject. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: New approach - with #includes that violate checkdeps rules Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/html/MediaProvider.cpp
diff --git a/Source/core/dom/custom/CustomElementAsyncImportMicrotaskQueue.cpp b/Source/core/html/MediaProvider.cpp
similarity index 51%
copy from Source/core/dom/custom/CustomElementAsyncImportMicrotaskQueue.cpp
copy to Source/core/html/MediaProvider.cpp
index d5e946c4b0c7c7c94903f766a0981b4648e30b69..5760387823ea4783f186f7f80e66b36aae8f61b8 100644
--- a/Source/core/dom/custom/CustomElementAsyncImportMicrotaskQueue.cpp
+++ b/Source/core/html/MediaProvider.cpp
@@ -29,27 +29,63 @@
*/
#include "config.h"
-#include "core/dom/custom/CustomElementAsyncImportMicrotaskQueue.h"
+#include "core/html/MediaProvider.h"
-#include "core/dom/custom/CustomElementMicrotaskImportStep.h"
+#include "core/dom/DOMURL.h"
+#include "modules/mediasource/MediaSource.h"
+#include "modules/mediastream/MediaStream.h"
+#include "wtf/PassRefPtr.h"
namespace blink {
-void CustomElementAsyncImportMicrotaskQueue::enqueue(PassOwnPtrWillBeRawPtr<CustomElementMicrotaskStep> step)
+MediaProvider::MediaProvider(PassRefPtrWillBeRawPtr<MediaStream> stream)
+ : m_mediastream(stream.get())
{
- m_queue.append(step);
}
-void CustomElementAsyncImportMicrotaskQueue::doDispatch()
+MediaProvider::MediaProvider(PassRefPtrWillBeRawPtr<MediaSource> source)
+ : m_mediasource(source.get())
{
- WillBeHeapVector<OwnPtrWillBeMember<CustomElementMicrotaskStep> > remaining;
+}
+
+MediaStream* MediaProvider::mediaStream() const {
+ return m_mediastream.get();
+}
- for (unsigned i = 0; i < m_queue.size(); ++i) {
- if (CustomElementMicrotaskStep::Processing == m_queue[i]->process())
- remaining.append(m_queue[i].release());
+MediaSource* MediaProvider::mediaSource() const {
+ return m_mediasource.get();
+}
+
+String MediaProvider::createObjectUrl() {
+ blink::ExecutionContext* context = NULL;
+ URLRegistrable* registrable = NULL;
+ if (m_mediastream) {
+ context = m_mediastream->executionContext();
+ registrable = m_mediastream.get();
+ } else if (m_mediasource) {
+ context = m_mediasource->executionContext();
+ registrable = m_mediasource.get();
}
+ return DOMURL::createPublicURL(context, registrable);
+}
- m_queue.swap(remaining);
+PassRefPtrWillBeRawPtr<MediaProvider> MediaProvider::createFromMediaStream(PassRefPtrWillBeRawPtr<MediaStream> stream)
+{
+ if (!stream)
+ return nullptr;
+ return adoptRefWillBeNoop(new MediaProvider(stream));
+}
+
+PassRefPtrWillBeRawPtr<MediaProvider> MediaProvider::createFromMediaSource(PassRefPtrWillBeRawPtr<MediaSource> source)
+{
+ if (!source)
+ return nullptr;
+ return adoptRefWillBeNoop(new MediaProvider(source));
+}
+
+void MediaProvider::trace(Visitor* visitor)
+{
+ visitor->trace(m_mediastream);
}
-} // namespace blink
+} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698