Chromium Code Reviews| Index: Source/modules/presentation/PresentationSession.cpp |
| diff --git a/Source/modules/presentation/PresentationSession.cpp b/Source/modules/presentation/PresentationSession.cpp |
| index 4727bebdb9c0397281ff4af261da66203d9597eb..d4c8d123ea13c2d03f521f2b1f68777551d8d3c8 100644 |
| --- a/Source/modules/presentation/PresentationSession.cpp |
| +++ b/Source/modules/presentation/PresentationSession.cpp |
| @@ -6,21 +6,35 @@ |
| #include "modules/presentation/PresentationSession.h" |
| #include "core/dom/Document.h" |
| +#include "core/events/Event.h" |
| #include "core/frame/LocalFrame.h" |
| #include "modules/EventTargetModules.h" |
| #include "modules/presentation/Presentation.h" |
| #include "modules/presentation/PresentationController.h" |
| -#include "public/platform/WebString.h" |
| -#include "public/platform/modules/presentation/WebPresentationSessionClient.h" |
| #include "wtf/OwnPtr.h" |
| namespace blink { |
| +namespace { |
| + |
| +const AtomicString SessionStateToString(WebPresentationSessionClient::SessionState state) |
|
Peter Beverloo
2015/03/20 19:07:40
Why do you return an AtomicString here and not jus
mlamouri (slow - plz ping)
2015/03/23 17:54:16
I think using an AtomicString is fine. However, co
whywhat
2015/03/23 21:12:16
Done.
whywhat
2015/03/23 21:12:16
To avoid extra conversion (from String to AtomicSt
|
| +{ |
| + switch (state) { |
| + case WebPresentationSessionClient::SessionStateConnected: |
| + return "connected"; |
| + case WebPresentationSessionClient::SessionStateDisconnected: |
| + default: |
| + return "disconnected"; |
| + } |
| +} |
| + |
| +} // namespace |
| + |
| PresentationSession::PresentationSession(LocalFrame* frame, const WebString& id, const WebString& url) |
| : DOMWindowProperty(frame) |
| , m_id(id) |
| , m_url(url) |
| - , m_state("disconnected") |
| + , m_state(WebPresentationSessionClient::SessionStateDisconnected) |
| { |
| } |
| @@ -63,19 +77,35 @@ DEFINE_TRACE(PresentationSession) |
| DOMWindowProperty::trace(visitor); |
| } |
| +const AtomicString PresentationSession::state() const |
|
mark a. foltz
2015/03/20 20:40:22
Why is this returning a string instead of the enum
mlamouri (slow - plz ping)
2015/03/23 17:54:16
I would guess that ::state() is being used by the
whywhat
2015/03/23 21:12:16
As I understand it, that's how WebIDL enum values
whywhat
2015/03/23 21:12:16
Acknowledged.
|
| +{ |
| + return SessionStateToString(m_state); |
| +} |
| + |
| void PresentationSession::postMessage(const String& message) |
| { |
| } |
| void PresentationSession::close() |
| { |
| - if (m_state != "connected") |
| + if (m_state != WebPresentationSessionClient::SessionStateConnected) |
| return; |
| PresentationController* controller = presentationController(); |
| if (controller) |
| controller->closeSession(m_url, m_id); |
| } |
| +bool PresentationSession::matches(WebPresentationSessionClient* client) const |
| +{ |
| + return client && client->getUrl() == m_url && client->getId() == m_id; |
|
mark a. foltz
2015/03/20 20:40:22
The match between a PresentationSession and |clien
whywhat
2015/03/23 21:12:16
I expected the list to be fairy small. We could us
|
| +} |
| + |
| +void PresentationSession::didChangeState(WebPresentationSessionClient::SessionState state) |
| +{ |
| + m_state = state; |
|
mark a. foltz
2015/03/20 20:40:22
What if m_state == state? We don't need to dispat
whywhat
2015/03/23 21:12:16
Done.
|
| + dispatchEvent(Event::create(EventTypeNames::statechange)); |
| +} |
| + |
| PresentationController* PresentationSession::presentationController() |
| { |
| if (!frame()) |