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