blob: c172ff9352c1316bf42eeb89f414460e9d7a477b [file] [log] [blame]
// Copyright 2016 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 "modules/mediasession/NavigatorMediaSession.h"
#include "bindings/core/v8/ExceptionStatePlaceholder.h"
#include "modules/mediasession/MediaSession.h"
#include "platform/Supplementable.h"
namespace blink {
NavigatorMediaSession::NavigatorMediaSession(Navigator&) {}
DEFINE_TRACE(NavigatorMediaSession) {
visitor->trace(m_session);
Supplement<Navigator>::trace(visitor);
}
const char* NavigatorMediaSession::supplementName() {
return "NavigatorMediaSession";
}
NavigatorMediaSession& NavigatorMediaSession::from(Navigator& navigator) {
NavigatorMediaSession* supplement = static_cast<NavigatorMediaSession*>(
Supplement<Navigator>::from(navigator, supplementName()));
if (!supplement) {
supplement = new NavigatorMediaSession(navigator);
provideTo(navigator, supplementName(), supplement);
}
return *supplement;
}
MediaSession* NavigatorMediaSession::mediaSession(ScriptState* scriptState,
Navigator& navigator) {
NavigatorMediaSession& self = NavigatorMediaSession::from(navigator);
if (!self.m_session)
self.m_session = MediaSession::create(scriptState);
return self.m_session.get();
}
} // namespace blink