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

Unified Diff: content/public/browser/presentation_service_delegate.h

Issue 2343013002: [Presentation API] (MR side) 1-UA: notify receiver page when receiver connection becomes available (Closed)
Patch Set: Created 4 years, 3 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: content/public/browser/presentation_service_delegate.h
diff --git a/content/public/browser/presentation_service_delegate.h b/content/public/browser/presentation_service_delegate.h
index cbe2c5f1cc9c5c64cbc46d32beb5b1cca81c4950..1d271bda6143948d3ec77f5465882477fe0969ad 100644
--- a/content/public/browser/presentation_service_delegate.h
+++ b/content/public/browser/presentation_service_delegate.h
@@ -47,6 +47,28 @@ struct PresentationConnectionStateChangeInfo {
using PresentationConnectionStateChangedCallback =
base::Callback<void(const PresentationConnectionStateChangeInfo&)>;
+// This class serves as a proxy to PSImpl.
+class OffscreenPresentationClient {
+ public:
+ OffscreenPresentationClient() {}
+ // Called when 1. receiver page is rendered for a presentation;
+ // 2. new controller is connected to the presentation.
+ virtual void OnReceiverConnectionAvailable(
+ const content::PresentationSessionInfo&) = 0;
+ // For controller, add a receiver client to its observer list, and the list
+ // contains at most one element;
+ // For receiver, add a controller client to its observer list, and the list
+ // may contain multiple elements.
+ virtual void AddOffscreenPresentationObserver(
+ OffscreenPresentationClient*) = 0;
+
+ virtual void RemoveOffscreenPresentationObserver(
+ OffscreenPresentationClient*) = 0;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(OffscreenPresentationClient);
+};
+
// An interface implemented by embedders to handle presentation API calls
// forwarded from PresentationServiceImpl.
class CONTENT_EXPORT PresentationServiceDelegate {
@@ -203,6 +225,24 @@ class CONTENT_EXPORT PresentationServiceDelegate {
int render_frame_id,
const PresentationSessionInfo& connection,
const PresentationConnectionStateChangedCallback& state_changed_cb) = 0;
+
+ // Called when receiver PSImpl is connected with receiver render process.
+ virtual void RegisterOffscreenPresentationReceiver(
+ OffscreenPresentationClient*) = 0;
+
+ // Called when receiver frame is destroyed.
+ virtual void UnregisterOffscreenPresentationReceiver(
+ OffscreenPresentationClient*) = 0;
+
+ // Called when successfully starting presentation session.
+ virtual void RegisterOffscreenPresentationController(
+ const std::string& presentationId,
+ OffscreenPresentationClient*) = 0;
+
+ // Called when presentation connection is closed.
+ virtual void UnregisterOffscreenPresentationController(
+ const std::string& presentationId,
+ OffscreenPresentationClient*) = 0;
};
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698