Index: Source/modules/presentation/PresentationSessionClientCallbacks.cpp |
diff --git a/Source/modules/presentation/PresentationSessionClientCallbacks.cpp b/Source/modules/presentation/PresentationSessionClientCallbacks.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4515fbfa44e98ebb0fc0afd2f335be4c6f6bfbd4 |
--- /dev/null |
+++ b/Source/modules/presentation/PresentationSessionClientCallbacks.cpp |
@@ -0,0 +1,54 @@ |
+// Copyright 2015 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 "config.h" |
+#include "modules/presentation/PresentationSessionClientCallbacks.h" |
+ |
+#include "bindings/core/v8/ScriptPromiseResolver.h" |
+#include "core/dom/DOMException.h" |
+#include "core/dom/ExceptionCode.h" |
+#include "modules/presentation/Presentation.h" |
+#include "modules/presentation/PresentationSession.h" |
+#include "public/platform/WebString.h" |
+#include "public/platform/modules/presentation/WebPresentationError.h" |
+ |
+namespace blink { |
+ |
+PresentationSessionClientCallbacks::PresentationSessionClientCallbacks( |
+ PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver, |
+ Presentation* presentation) |
+ : m_resolver(resolver) |
+ , m_presentation(presentation) |
+{ |
+ ASSERT(m_resolver); |
+ ASSERT(m_presentation); |
+} |
+ |
+PresentationSessionClientCallbacks::~PresentationSessionClientCallbacks() |
+{ |
+} |
+ |
+void PresentationSessionClientCallbacks::onSuccess(WebString* id) |
+{ |
+ ASSERT(id); |
+ if (m_resolver->executionContext() && !m_resolver->executionContext()->activeDOMObjectsAreStopped()) { |
+ PresentationSession* session = PresentationSession::create(m_presentation->frame(), *id); |
mlamouri (slow - plz ping)
2015/02/26 10:57:03
Could you use ::dispose() and ::take() methods?
whywhat
2015/02/26 15:50:54
Sorry, there's no way I'm creating a PresentationS
|
+ m_presentation->didCreateSession(session); |
+ m_resolver->resolve(session); |
+ } |
+ delete id; |
+} |
+ |
+void PresentationSessionClientCallbacks::onError(WebPresentationError* error) |
+{ |
+ ASSERT(error); |
+ if (m_resolver->executionContext() && !m_resolver->executionContext()->activeDOMObjectsAreStopped()) { |
+ // TODO(avayvod): figure out the mapping between WebPresentationError and |
+ // DOMException error codes. |
+ m_resolver->reject(DOMException::create(InvalidAccessError, error->message)); |
mlamouri (slow - plz ping)
2015/02/26 10:57:03
ditto
whywhat
2015/02/26 15:50:54
Any suggestions on mapping WebPresentationError to
|
+ } |
+ delete error; |
+} |
+ |
+} // namespace blink |