| 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/mediastream/RTCSessionDescriptionRequestPromiseImpl.h" | |
| 6 | |
| 7 #include "bindings/core/v8/ScriptPromiseResolver.h" | |
| 8 #include "core/dom/DOMException.h" | |
| 9 #include "core/dom/ExceptionCode.h" | |
| 10 #include "modules/mediastream/RTCPeerConnection.h" | |
| 11 #include "modules/mediastream/RTCSessionDescription.h" | |
| 12 #include "public/platform/WebRTCSessionDescription.h" | |
| 13 | |
| 14 namespace blink { | |
| 15 | |
| 16 RTCSessionDescriptionRequestPromiseImpl* RTCSessionDescriptionRequestPromiseImpl
::create(RTCPeerConnection* requester, ScriptPromiseResolver* resolver) | |
| 17 { | |
| 18 return new RTCSessionDescriptionRequestPromiseImpl(requester, resolver); | |
| 19 } | |
| 20 | |
| 21 RTCSessionDescriptionRequestPromiseImpl::RTCSessionDescriptionRequestPromiseImpl
(RTCPeerConnection* requester, ScriptPromiseResolver* resolver) | |
| 22 : m_requester(requester) | |
| 23 , m_resolver(resolver) | |
| 24 { | |
| 25 DCHECK(m_requester); | |
| 26 DCHECK(m_resolver); | |
| 27 } | |
| 28 | |
| 29 RTCSessionDescriptionRequestPromiseImpl::~RTCSessionDescriptionRequestPromiseImp
l() | |
| 30 { | |
| 31 DCHECK(!m_requester); | |
| 32 } | |
| 33 | |
| 34 void RTCSessionDescriptionRequestPromiseImpl::requestSucceeded(const WebRTCSessi
onDescription& webSessionDescription) | |
| 35 { | |
| 36 if (m_requester && m_requester->shouldFireDefaultCallbacks()) { | |
| 37 m_resolver->resolve(RTCSessionDescription::create(webSessionDescription)
); | |
| 38 } else { | |
| 39 // This is needed to have the resolver release its internal resources | |
| 40 // while leaving the associated promise pending as specified. | |
| 41 m_resolver->detach(); | |
| 42 } | |
| 43 | |
| 44 clear(); | |
| 45 } | |
| 46 | |
| 47 void RTCSessionDescriptionRequestPromiseImpl::requestFailed(const String& error) | |
| 48 { | |
| 49 if (m_requester && m_requester->shouldFireDefaultCallbacks()) { | |
| 50 // TODO(guidou): The error code should come from the content layer. See
crbug.com/589455 | |
| 51 m_resolver->reject(DOMException::create(OperationError, error)); | |
| 52 } else { | |
| 53 // This is needed to have the resolver release its internal resources | |
| 54 // while leaving the associated promise pending as specified. | |
| 55 m_resolver->detach(); | |
| 56 } | |
| 57 | |
| 58 clear(); | |
| 59 } | |
| 60 | |
| 61 void RTCSessionDescriptionRequestPromiseImpl::clear() | |
| 62 { | |
| 63 m_requester.clear(); | |
| 64 } | |
| 65 | |
| 66 DEFINE_TRACE(RTCSessionDescriptionRequestPromiseImpl) | |
| 67 { | |
| 68 visitor->trace(m_resolver); | |
| 69 visitor->trace(m_requester); | |
| 70 RTCSessionDescriptionRequest::trace(visitor); | |
| 71 } | |
| 72 | |
| 73 } // namespace blink | |
| OLD | NEW |