| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "modules/mediasession/MediaSession.h" | 5 #include "modules/mediasession/MediaSession.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/ScriptState.h" | 7 #include "bindings/core/v8/ScriptState.h" |
| 8 #include "core/dom/Document.h" | 8 #include "core/dom/Document.h" |
| 9 #include "core/dom/ExecutionContext.h" | 9 #include "core/dom/ExecutionContext.h" |
| 10 #include "core/frame/LocalFrame.h" | 10 #include "core/frame/LocalFrame.h" |
| 11 #include "modules/EventTargetModules.h" |
| 11 #include "modules/mediasession/MediaMetadata.h" | 12 #include "modules/mediasession/MediaMetadata.h" |
| 12 #include "modules/mediasession/MediaMetadataSanitizer.h" | 13 #include "modules/mediasession/MediaMetadataSanitizer.h" |
| 13 #include "public/platform/InterfaceProvider.h" | 14 #include "public/platform/InterfaceProvider.h" |
| 14 #include <memory> | 15 #include <memory> |
| 15 | 16 |
| 16 namespace blink { | 17 namespace blink { |
| 17 | 18 |
| 18 MediaSession::MediaSession() = default; | 19 MediaSession::MediaSession(ScriptState* scriptState) |
| 20 : m_scriptState(scriptState) {} |
| 19 | 21 |
| 20 MediaSession* MediaSession::create() { | 22 MediaSession* MediaSession::create(ScriptState* scriptState) { |
| 21 return new MediaSession(); | 23 return new MediaSession(scriptState); |
| 22 } | 24 } |
| 23 | 25 |
| 24 void MediaSession::setMetadata(ScriptState* scriptState, | 26 void MediaSession::setMetadata(MediaMetadata* metadata) { |
| 25 MediaMetadata* metadata) { | 27 if (mojom::blink::MediaSessionService* service = |
| 26 if (getService(scriptState)) { | 28 getService(m_scriptState.get())) { |
| 27 getService(scriptState) | 29 service->SetMetadata( |
| 28 ->SetMetadata( | 30 MediaMetadataSanitizer::sanitizeAndConvertToMojo(metadata)); |
| 29 MediaMetadataSanitizer::sanitizeAndConvertToMojo(metadata)); | |
| 30 } | 31 } |
| 31 } | 32 } |
| 32 | 33 |
| 33 MediaMetadata* MediaSession::metadata(ScriptState*) const { | 34 MediaMetadata* MediaSession::metadata() const { |
| 34 return m_metadata; | 35 return m_metadata; |
| 35 } | 36 } |
| 36 | 37 |
| 38 const WTF::AtomicString& MediaSession::interfaceName() const { |
| 39 return EventTargetNames::MediaSession; |
| 40 } |
| 41 |
| 42 ExecutionContext* MediaSession::getExecutionContext() const { |
| 43 return m_scriptState->getExecutionContext(); |
| 44 } |
| 45 |
| 37 mojom::blink::MediaSessionService* MediaSession::getService( | 46 mojom::blink::MediaSessionService* MediaSession::getService( |
| 38 ScriptState* scriptState) { | 47 ScriptState* scriptState) { |
| 39 if (!m_service) { | 48 if (!m_service) { |
| 40 InterfaceProvider* interfaceProvider = nullptr; | 49 InterfaceProvider* interfaceProvider = nullptr; |
| 41 DCHECK(scriptState->getExecutionContext()->isDocument()) | 50 DCHECK(scriptState->getExecutionContext()->isDocument()) |
| 42 << "MediaSession::getService() is only available from a frame"; | 51 << "MediaSession::getService() is only available from a frame"; |
| 43 Document* document = toDocument(scriptState->getExecutionContext()); | 52 Document* document = toDocument(scriptState->getExecutionContext()); |
| 44 if (document->frame()) | 53 if (document->frame()) |
| 45 interfaceProvider = document->frame()->interfaceProvider(); | 54 interfaceProvider = document->frame()->interfaceProvider(); |
| 46 | 55 |
| 47 if (interfaceProvider) | 56 if (interfaceProvider) |
| 48 interfaceProvider->getInterface(mojo::GetProxy(&m_service)); | 57 interfaceProvider->getInterface(mojo::GetProxy(&m_service)); |
| 49 } | 58 } |
| 50 return m_service.get(); | 59 return m_service.get(); |
| 51 } | 60 } |
| 52 | 61 |
| 62 bool MediaSession::addEventListenerInternal( |
| 63 const AtomicString& eventType, |
| 64 EventListener* listener, |
| 65 const AddEventListenerOptionsResolved& options) { |
| 66 // TODO(zqzhang): Notify MediaSessionService the handler has been set. See |
| 67 // https://crbug.com/656563 |
| 68 return EventTarget::addEventListenerInternal(eventType, listener, options); |
| 69 } |
| 70 |
| 71 bool MediaSession::removeEventListenerInternal( |
| 72 const AtomicString& eventType, |
| 73 const EventListener* listener, |
| 74 const EventListenerOptions& options) { |
| 75 // TODO(zqzhang): Notify MediaSessionService the handler has been unset. See |
| 76 // https://crbug.com/656563 |
| 77 return EventTarget::removeEventListenerInternal(eventType, listener, options); |
| 78 } |
| 79 |
| 53 DEFINE_TRACE(MediaSession) { | 80 DEFINE_TRACE(MediaSession) { |
| 54 visitor->trace(m_metadata); | 81 visitor->trace(m_metadata); |
| 82 EventTargetWithInlineData::trace(visitor); |
| 55 } | 83 } |
| 56 | 84 |
| 57 } // namespace blink | 85 } // namespace blink |
| OLD | NEW |