OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "modules/srcobject/HTMLMediaElementSrcObject.h" |
| 6 |
| 7 #include "modules/mediastream/MediaStream.h" |
| 8 #include "modules/mediastream/URLMediaStream.h" |
| 9 #include "wtf/Assertions.h" |
| 10 |
| 11 namespace blink { |
| 12 |
| 13 HTMLMediaElementSrcObject::HTMLMediaElementSrcObject() |
| 14 : m_srcObject(nullptr) |
| 15 { |
| 16 } |
| 17 |
| 18 // static |
| 19 MediaStream* HTMLMediaElementSrcObject::srcObject(HTMLMediaElement& element) |
| 20 { |
| 21 HTMLMediaElementSrcObject& thisElement = HTMLMediaElementSrcObject::from(ele
ment); |
| 22 return thisElement.m_srcObject; |
| 23 } |
| 24 |
| 25 // static |
| 26 void HTMLMediaElementSrcObject::setSrcObject(HTMLMediaElement& element, MediaStr
eam* mediaStream) |
| 27 { |
| 28 HTMLMediaElementSrcObject& thisElement = HTMLMediaElementSrcObject::from(ele
ment); |
| 29 thisElement.m_srcObject = mediaStream; |
| 30 if (!mediaStream) { |
| 31 element.setSrcObject(WebMediaElementSource()); |
| 32 return; |
| 33 } |
| 34 WebMediaStream webStream = WebMediaStream(mediaStream->descriptor()); |
| 35 WebMediaElementSource webSource(webStream); |
| 36 element.setSrcObject(webSource); |
| 37 } |
| 38 |
| 39 HTMLMediaElementSrcObject& HTMLMediaElementSrcObject::from(HTMLMediaElement& ele
ment) |
| 40 { |
| 41 HTMLMediaElementSrcObject* supplement = static_cast<HTMLMediaElementSrcObjec
t*>(WillBeHeapSupplement<HTMLMediaElement>::from(element, supplementName())); |
| 42 if (!supplement) { |
| 43 supplement = new HTMLMediaElementSrcObject(); |
| 44 provideTo(element, supplementName(), adoptPtrWillBeNoop(supplement)); |
| 45 } |
| 46 return *supplement; |
| 47 } |
| 48 |
| 49 const char* HTMLMediaElementSrcObject::supplementName() |
| 50 { |
| 51 return "HTMLMediaElementSrcObject"; |
| 52 } |
| 53 |
| 54 DEFINE_TRACE(HTMLMediaElementSrcObject) |
| 55 { |
| 56 visitor->trace(m_srcObject); |
| 57 WillBeHeapSupplement<HTMLMediaElement>::trace(visitor); |
| 58 } |
| 59 |
| 60 } // namespace blink |
OLD | NEW |