Index: third_party/WebKit/Source/modules/mediastream/HTMLMediaElementMediaStream.cpp |
diff --git a/third_party/WebKit/Source/modules/mediastream/HTMLMediaElementMediaStream.cpp b/third_party/WebKit/Source/modules/mediastream/HTMLMediaElementMediaStream.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..60076b6d38acca5035dad25bb6a54539d63a1a34 |
--- /dev/null |
+++ b/third_party/WebKit/Source/modules/mediastream/HTMLMediaElementMediaStream.cpp |
@@ -0,0 +1,54 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "modules/mediastream/HTMLMediaElementMediaStream.h" |
+ |
+#include "modules/mediastream/MediaStream.h" |
+#include "modules/mediastream/URLMediaStream.h" |
+ |
+namespace blink { |
+ |
+HTMLMediaElementMediaStream::HTMLMediaElementMediaStream() |
+ : m_srcObject(nullptr) |
+{ |
+} |
+ |
+// static |
+MediaStream* HTMLMediaElementMediaStream::srcObject(HTMLMediaElement& element) |
+{ |
+ HTMLMediaElementMediaStream& thisElement = HTMLMediaElementMediaStream::from(element); |
+ return thisElement.m_srcObject; |
+} |
+ |
+// static |
+void HTMLMediaElementMediaStream::setSrcObject(HTMLMediaElement& element, MediaStream* mediaStream) |
+{ |
+ HTMLMediaElementMediaStream& thisElement = HTMLMediaElementMediaStream::from(element); |
+ thisElement.m_srcObject = mediaStream; |
+ AtomicString url(URLMediaStream::createObjectURL(element.getExecutionContext(), mediaStream)); |
philipj_slow
2016/03/21 11:13:13
If this URL is never revoked, won't the mediaStrea
Guido Urdaneta
2016/03/21 16:34:53
What if we do revoke the URL? For example, when sr
philipj_slow
2016/03/22 16:06:54
Yes, if avoiding URLs is not possible right now, t
|
+ element.setSrcObjectURL(url); |
+} |
+ |
+HTMLMediaElementMediaStream& HTMLMediaElementMediaStream::from(HTMLMediaElement& element) |
+{ |
+ HTMLMediaElementMediaStream* supplement = static_cast<HTMLMediaElementMediaStream*>(WillBeHeapSupplement<HTMLMediaElement>::from(element, supplementName())); |
+ if (!supplement) { |
+ supplement = new HTMLMediaElementMediaStream(); |
+ provideTo(element, supplementName(), adoptPtrWillBeNoop(supplement)); |
+ } |
+ return *supplement; |
+} |
+ |
+const char* HTMLMediaElementMediaStream::supplementName() |
+{ |
+ return "HTMLMediaElementMediaStream"; |
+} |
+ |
+DEFINE_TRACE(HTMLMediaElementMediaStream) |
+{ |
+ visitor->trace(m_srcObject); |
+ WillBeHeapSupplement<HTMLMediaElement>::trace(visitor); |
+} |
+ |
+} // namespace blink |