Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(805)

Unified Diff: third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.h

Issue 2415723002: [Blink, RemotePlayback] watchAvailability() implementation. (Closed)
Patch Set: Cleanup after RemotePlaybackAvailability Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.h
diff --git a/third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.h b/third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.h
index cfab31c0e69da9310129aaa808abe02daf88f73d..ae3385a6b9bbf7d6ec2588b8fdd72163592679ce 100644
--- a/third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.h
+++ b/third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.h
@@ -7,6 +7,7 @@
#include "bindings/core/v8/ActiveScriptWrappable.h"
#include "bindings/core/v8/ScriptPromise.h"
+#include "bindings/core/v8/ScriptState.h"
#include "core/events/EventTarget.h"
#include "modules/ModulesExport.h"
#include "platform/heap/Handle.h"
@@ -21,7 +22,7 @@ namespace blink {
class ExecutionContext;
class HTMLMediaElement;
class LocalFrame;
-class RemotePlaybackAvailability;
+class RemotePlaybackAvailabilityCallback;
class ScriptPromiseResolver;
class MODULES_EXPORT RemotePlayback final
@@ -38,7 +39,21 @@ class MODULES_EXPORT RemotePlayback final
const WTF::AtomicString& interfaceName() const override;
ExecutionContext* getExecutionContext() const override;
- ScriptPromise getAvailability(ScriptState*);
+ // Starts notifying the page about the changes to the remote playback devices
+ // availability via the provided callback. May start the monitoring of remote
+ // playback devices if it isn't running yet.
+ ScriptPromise watchAvailability(ScriptState*,
+ RemotePlaybackAvailabilityCallback*);
+
+ // Cancels updating the page via the callback specified by its id.
+ ScriptPromise cancelWatchAvailability(ScriptState*, int id);
+
+ // Cancels all the callbacks watching remote playback availability changes
+ // registered with this element.
+ ScriptPromise cancelWatchAvailability(ScriptState*);
+
+ // Shows the UI allowing user to change the remote playback state of the media
+ // element (by picking a remote playback device from the list, for example).
ScriptPromise prompt(ScriptState*);
String state() const;
@@ -55,14 +70,20 @@ class MODULES_EXPORT RemotePlayback final
explicit RemotePlayback(HTMLMediaElement&);
+ // Calls the specified availability callback with the current availability.
+ // Need a void() method to post it as a task.
Zhiqiang Zhang (Slow) 2016/10/13 15:23:11 s/Need a/Need to be a
+ void notifyInitialAvailability(int callbackId);
+
// WebRemotePlaybackClient implementation.
void stateChanged(WebRemotePlaybackState) override;
void availabilityChanged(bool available) override;
void promptCancelled() override;
+ RefPtr<ScriptState> m_scriptState;
WebRemotePlaybackState m_state;
bool m_availability;
- HeapVector<Member<RemotePlaybackAvailability>> m_availabilityObjects;
+ HeapHashMap<int, Member<RemotePlaybackAvailabilityCallback>>
+ m_availabilityCallbacks;
Member<HTMLMediaElement> m_mediaElement;
Member<ScriptPromiseResolver> m_promptPromiseResolver;
};

Powered by Google App Engine
This is Rietveld 408576698