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..93e082132a16da9cc0ed9ada663f19afde064117 |
--- /dev/null |
+++ b/Source/modules/presentation/PresentationSessionClientCallbacks.cpp |
@@ -0,0 +1,51 @@ |
+// 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() |
+{ |
+} |
+ |
+// |session| takes ownership of |client| and |m_presentation| takes ownership of the session. |
+void PresentationSessionClientCallbacks::onSuccess(WebPresentationSessionClient* client) |
+{ |
+ ASSERT(client); |
+ PresentationSession* session = PresentationSession::create(m_presentation->frame(), client); |
mlamouri (slow - plz ping)
2015/02/25 20:51:06
Could you rewrite that so it follows the same patt
whywhat
2015/02/25 22:46:52
I added the checks and fixed ownership of the para
|
+ m_presentation->didCreateSession(session); |
+ m_resolver->resolve(session); |
+} |
+ |
+void PresentationSessionClientCallbacks::onError(WebPresentationError* error) |
+{ |
+ ASSERT(error); |
+ // 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/25 20:51:06
ditto.
whywhat
2015/02/25 22:46:52
Done.
|
+ |
+ delete error; |
+} |
+ |
+} // namespace blink |