blob: ddcde17601ffe90911027ed7909630e6e3bda4cf [file] [log] [blame]
// 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/mediasession/HTMLMediaElementMediaSession.h"
namespace blink {
MediaSession* HTMLMediaElementMediaSession::session(HTMLMediaElement& mediaElement)
{
if (HTMLMediaElementMediaSession* supplement = fromIfExists(mediaElement))
return supplement->m_session.get();
return nullptr;
}
void HTMLMediaElementMediaSession::setSession(HTMLMediaElement& mediaElement, MediaSession* session)
{
from(mediaElement).m_session = session;
}
const char* HTMLMediaElementMediaSession::supplementName()
{
return "HTMLMediaElementMediaSession";
}
HTMLMediaElementMediaSession& HTMLMediaElementMediaSession::from(HTMLMediaElement& element)
{
HTMLMediaElementMediaSession* supplement = fromIfExists(element);
if (!supplement) {
supplement = new HTMLMediaElementMediaSession();
provideTo(element, supplementName(), adoptPtrWillBeNoop(supplement));
}
return *supplement;
}
HTMLMediaElementMediaSession* HTMLMediaElementMediaSession::fromIfExists(HTMLMediaElement& element)
{
return static_cast<HTMLMediaElementMediaSession*>(WillBeHeapSupplement<HTMLMediaElement>::from(element, supplementName()));
}
DEFINE_TRACE(HTMLMediaElementMediaSession)
{
visitor->trace(m_session);
WillBeHeapSupplement<HTMLMediaElement>::trace(visitor);
}
}