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 3005609e936722a0eb1051965e1db2446c3e758a..97e0f75c77e214e09400fa909e2ff59e8abe0599 100644 |
--- a/content/public/browser/presentation_service_delegate.h |
+++ b/content/public/browser/presentation_service_delegate.h |
@@ -26,6 +26,11 @@ class PresentationSessionStateListener; |
using PresentationSessionMessageCallback = base::Callback< |
void(const ScopedVector<content::PresentationSessionMessage>&, bool)>; |
+using PresentationReceiverSessionAvailableCallback = |
+ base::Callback<void(const content::PresentationSessionInfo*)>; |
+ |
+using SendMessageCallback = base::Callback<void(bool)>; |
+ |
// An interface implemented by embedders to handle presentation API calls |
// forwarded from PresentationServiceImpl. |
class CONTENT_EXPORT PresentationServiceDelegate { |
@@ -47,11 +52,10 @@ class CONTENT_EXPORT PresentationServiceDelegate { |
virtual ~Observer() {} |
}; |
- using PresentationSessionSuccessCallback = |
+ using PresentationSessionStartedCallback = |
base::Callback<void(const PresentationSessionInfo&)>; |
using PresentationSessionErrorCallback = |
base::Callback<void(const PresentationError&)>; |
- using SendMessageCallback = base::Callback<void(bool)>; |
virtual ~PresentationServiceDelegate() {} |
@@ -104,7 +108,8 @@ class CONTENT_EXPORT PresentationServiceDelegate { |
virtual void SetDefaultPresentationUrl( |
int render_process_id, |
int render_frame_id, |
- const std::string& default_presentation_url) = 0; |
+ const std::string& default_presentation_url, |
+ const PresentationSessionStartedCallback& callback) = 0; |
// Starts a new presentation session. The presentation id of the session will |
// be the default presentation ID if any or a generated one otherwise. |
@@ -120,7 +125,7 @@ class CONTENT_EXPORT PresentationServiceDelegate { |
int render_process_id, |
int render_frame_id, |
const std::string& presentation_url, |
- const PresentationSessionSuccessCallback& success_cb, |
+ const PresentationSessionStartedCallback& success_cb, |
const PresentationSessionErrorCallback& error_cb) = 0; |
// Joins an existing presentation session. Unlike StartSession(), this |
@@ -136,7 +141,7 @@ class CONTENT_EXPORT PresentationServiceDelegate { |
int render_frame_id, |
const std::string& presentation_url, |
const std::string& presentation_id, |
- const PresentationSessionSuccessCallback& success_cb, |
+ const PresentationSessionStartedCallback& success_cb, |
const PresentationSessionErrorCallback& error_cb) = 0; |
// Close an existing presentation session. |
@@ -179,6 +184,21 @@ class CONTENT_EXPORT PresentationServiceDelegate { |
int render_process_id, |
int render_frame_id, |
content::PresentationSessionStateListener* listener) = 0; |
+ |
+ // Gets a presentation session for the offscreen presentation hosted on the |
+ // offscreen tab containing this frame, or waits until one is available. |
+ // Runs |callback| once the receiver becomes available. |callback| will be |
+ // run during this method call if the receiver is already available, or at |
+ // some later time when a receiver presentation session becomes available. |
+ // It is possible that |callback| will never be run if a receiver never |
+ // becomes available. |
+ // If |render_process_id| and |render_frame_id| do not refer to the main |
+ // render frame of this WebContents, |callback| will be immediately invoked |
+ // with null. |
+ virtual void NotifyWhenReceiverSessionIsAvailable( |
+ int render_process_id, |
+ int render_frame_id, |
+ const PresentationReceiverSessionAvailableCallback& callback) = 0; |
}; |
} // namespace content |