#include "third_party/blink/renderer/modules/mediasession/media_session.h"
#include <memory>
#include <optional>
#include "base/time/default_tick_clock.h"
#include "base/time/time.h"
#include "third_party/blink/public/mojom/frame/user_activation_notification_type.mojom-blink.h"
#include "third_party/blink/public/platform/browser_interface_broker_proxy.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_media_position_state.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_media_session_action_details.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_media_session_action_handler.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_media_session_seek_to_action_details.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/frame/navigator.h"
#include "third_party/blink/renderer/core/frame/web_feature.h"
#include "third_party/blink/renderer/modules/mediasession/media_metadata.h"
#include "third_party/blink/renderer/modules/mediasession/media_metadata_sanitizer.h"
#include "third_party/blink/renderer/modules/mediasession/media_session_type_converters.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
namespace blink {
namespace {
MediaSessionAction;
const AtomicString& MojomActionToActionName(MediaSessionAction action) { … }
std::optional<MediaSessionAction> ActionNameToMojomAction(
const String& action_name) { … }
const AtomicString& MediaSessionPlaybackStateToString(
mojom::blink::MediaSessionPlaybackState state) { … }
mojom::blink::MediaSessionPlaybackState StringToMediaSessionPlaybackState(
const String& state_name) { … }
}
const char MediaSession::kSupplementName[] = …;
MediaSession* MediaSession::mediaSession(Navigator& navigator) { … }
MediaSession::MediaSession(Navigator& navigator)
: … { … }
void MediaSession::setPlaybackState(const String& playback_state) { … }
String MediaSession::playbackState() { … }
void MediaSession::setMetadata(MediaMetadata* metadata) { … }
MediaMetadata* MediaSession::metadata() const { … }
void MediaSession::OnMetadataChanged() { … }
void MediaSession::setActionHandler(const String& action,
V8MediaSessionActionHandler* handler,
ExceptionState& exception_state) { … }
void MediaSession::setPositionState(MediaPositionState* position_state,
ExceptionState& exception_state) { … }
void MediaSession::setMicrophoneActive(bool active) { … }
void MediaSession::setCameraActive(bool active) { … }
void MediaSession::NotifyActionChange(const String& action,
ActionChangeType type) { … }
base::TimeDelta MediaSession::GetPositionNow() const { … }
void MediaSession::RecalculatePositionState(bool was_set) { … }
mojom::blink::MediaSessionService* MediaSession::GetService() { … }
void MediaSession::DidReceiveAction(
media_session::mojom::blink::MediaSessionAction action,
mojom::blink::MediaSessionActionDetailsPtr details) { … }
void MediaSession::Trace(Visitor* visitor) const { … }
}