summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/mediasession/media_session.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/mediasession/media_session.h')
-rw-r--r--chromium/third_party/blink/renderer/modules/mediasession/media_session.h27
1 files changed, 17 insertions, 10 deletions
diff --git a/chromium/third_party/blink/renderer/modules/mediasession/media_session.h b/chromium/third_party/blink/renderer/modules/mediasession/media_session.h
index f1193dbd7bb..6031551c62f 100644
--- a/chromium/third_party/blink/renderer/modules/mediasession/media_session.h
+++ b/chromium/third_party/blink/renderer/modules/mediasession/media_session.h
@@ -6,15 +6,20 @@
#define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASESSION_MEDIA_SESSION_H_
#include <memory>
-#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/blink/public/mojom/mediasession/media_session.mojom-blink.h"
-#include "third_party/blink/renderer/core/execution_context/context_lifecycle_observer.h"
+#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h"
#include "third_party/blink/renderer/modules/modules_export.h"
#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
#include "third_party/blink/renderer/platform/heap/handle.h"
+#include "third_party/blink/renderer/platform/mojo/heap_mojo_receiver.h"
+#include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
+namespace base {
+class TickClock;
+} // namespace base
+
namespace blink {
class ExecutionContext;
@@ -25,17 +30,14 @@ class V8MediaSessionActionHandler;
class MODULES_EXPORT MediaSession final
: public ScriptWrappable,
- public ContextClient,
+ public ExecutionContextClient,
blink::mojom::blink::MediaSessionClient {
USING_GARBAGE_COLLECTED_MIXIN(MediaSession);
DEFINE_WRAPPERTYPEINFO();
- USING_PRE_FINALIZER(MediaSession, Dispose);
public:
explicit MediaSession(ExecutionContext*);
- void Dispose();
-
void setPlaybackState(const String&);
String playbackState();
@@ -52,7 +54,7 @@ class MODULES_EXPORT MediaSession final
// internally when a new MediaMetadata object is set.
void OnMetadataChanged();
- void Trace(blink::Visitor*) override;
+ void Trace(Visitor*) override;
private:
friend class V8MediaSession;
@@ -65,7 +67,9 @@ class MODULES_EXPORT MediaSession final
void NotifyActionChange(const String& action, ActionChangeType);
- void RecalculatePositionState(bool notify);
+ base::TimeDelta GetPositionNow() const;
+
+ void RecalculatePositionState(bool was_set);
// blink::mojom::blink::MediaSessionClient implementation.
void DidReceiveAction(media_session::mojom::blink::MediaSessionAction,
@@ -74,14 +78,17 @@ class MODULES_EXPORT MediaSession final
// Returns null when the ExecutionContext is not document.
mojom::blink::MediaSessionService* GetService();
+ const base::TickClock* clock_ = nullptr;
+
mojom::blink::MediaSessionPlaybackState playback_state_;
media_session::mojom::blink::MediaPositionPtr position_state_;
double declared_playback_rate_ = 0.0;
Member<MediaMetadata> metadata_;
HeapHashMap<String, Member<V8MediaSessionActionHandler>> action_handlers_;
mojo::Remote<mojom::blink::MediaSessionService> service_;
- mojo::Receiver<blink::mojom::blink::MediaSessionClient> client_receiver_{
- this};
+ HeapMojoReceiver<blink::mojom::blink::MediaSessionClient,
+ HeapMojoWrapperMode::kWithoutContextObserver>
+ client_receiver_;
};
} // namespace blink