Index: Source/modules/presentation/Presentation.cpp |
diff --git a/Source/modules/presentation/Presentation.cpp b/Source/modules/presentation/Presentation.cpp |
index 0e470d6bc75f570accdb7035c48c0620ce362e4e..4c6ddaebe1a6e9815b73600a290024e1a6cec557 100644 |
--- a/Source/modules/presentation/Presentation.cpp |
+++ b/Source/modules/presentation/Presentation.cpp |
@@ -17,6 +17,7 @@ |
#include "modules/presentation/DefaultSessionStartEvent.h" |
#include "modules/presentation/PresentationController.h" |
#include "modules/presentation/PresentationSessionClientCallbacks.h" |
+#include "public/platform/modules/presentation/WebPresentationSessionClient.h" |
namespace blink { |
@@ -151,6 +152,15 @@ void Presentation::didStartDefaultSession(PresentationSession* session) |
dispatchEvent(DefaultSessionStartEvent::create(EventTypeNames::defaultsessionstart, session)); |
} |
+void Presentation::didChangeSessionState(WebPresentationSessionClient* sessionClient, WebPresentationSessionState sessionState) |
+{ |
+ PresentationSession* session = findSession(sessionClient); |
+ if (session) |
+ session->didChangeState(sessionState); |
+ |
+ PresentationSession::dispose(sessionClient); |
+} |
+ |
void Presentation::registerSession(PresentationSession* session) |
{ |
m_openSessions.add(session); |
@@ -163,4 +173,13 @@ PresentationController* Presentation::presentationController() |
return PresentationController::from(*frame()); |
} |
+PresentationSession* Presentation::findSession(WebPresentationSessionClient* sessionClient) |
+{ |
+ for (const auto& session : m_openSessions) { |
+ if (session->matches(sessionClient)) |
+ return session.get(); |
+ } |
+ return nullptr; |
+} |
+ |
} // namespace blink |