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

Unified Diff: content/browser/presentation/presentation_service_impl.h

Issue 2379703002: [Presentation API] (alternative) 1-UA: send message between controller and receiver page (Closed)
Patch Set: resolve code review comments from Mark 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: content/browser/presentation/presentation_service_impl.h
diff --git a/content/browser/presentation/presentation_service_impl.h b/content/browser/presentation/presentation_service_impl.h
index 10d08499c161db6c75173548b31af16e76abc597..c5f0c2aee21e1ab8f1c80b0393d0cfa6a2b0676b 100644
--- a/content/browser/presentation/presentation_service_impl.h
+++ b/content/browser/presentation/presentation_service_impl.h
@@ -8,6 +8,7 @@
#include <deque>
#include <map>
#include <memory>
+#include <set>
#include <string>
#include <vector>
@@ -48,7 +49,7 @@ class RenderFrameHost;
class CONTENT_EXPORT PresentationServiceImpl
: public NON_EXPORTED_BASE(blink::mojom::PresentationService),
public WebContentsObserver,
- public PresentationServiceDelegate::Observer {
+ public PresentationServiceDelegateBase::Observer {
public:
using NewSessionCallback =
base::Callback<void(blink::mojom::PresentationSessionInfoPtr,
@@ -95,6 +96,10 @@ class CONTENT_EXPORT PresentationServiceImpl
ListenForConnectionStateChange);
FRIEND_TEST_ALL_PREFIXES(PresentationServiceImplTest,
ListenForConnectionClose);
+ FRIEND_TEST_ALL_PREFIXES(PresentationServiceImplTest,
+ SetPresentationConnection);
+ FRIEND_TEST_ALL_PREFIXES(PresentationServiceImplTest,
+ ReceiverPresentationServiceDelegate);
// Maximum number of pending JoinSession requests at any given time.
static const int kMaxNumQueuedSessionRequests = 10;
@@ -148,7 +153,8 @@ class CONTENT_EXPORT PresentationServiceImpl
PresentationServiceImpl(
RenderFrameHost* render_frame_host,
WebContents* web_contents,
- PresentationServiceDelegate* delegate);
+ ControllerPresentationServiceDelegate* controller_delegate,
+ ReceiverPresentationServiceDelegate* receiver_delegate);
// PresentationService implementation.
void SetDefaultPresentationUrls(
@@ -170,6 +176,9 @@ class CONTENT_EXPORT PresentationServiceImpl
const std::string& presentation_id) override;
void ListenForSessionMessages(
blink::mojom::PresentationSessionInfoPtr session) override;
+ void SetPresentationConnection(
+ blink::mojom::PresentationSessionInfoPtr session,
+ blink::mojom::PresentationConnectionPtr connection) override;
// Creates a binding between this object and |request|.
void Bind(mojo::InterfaceRequest<blink::mojom::PresentationService> request);
@@ -226,13 +235,18 @@ class CONTENT_EXPORT PresentationServiceImpl
void ListenForConnectionStateChange(
const PresentationSessionInfo& connection);
- // Passed to embedder's implementation of PresentationServiceDelegate for
- // later invocation when session messages arrive.
void OnSessionMessages(
const content::PresentationSessionInfo& session,
const ScopedVector<PresentationSessionMessage>& messages,
bool pass_ownership);
+ // A callback registered to OffscreenPresentationManager when
+ // receiver PSImpl inits. Calls |client_| to create a new
+ // PresentationConnection on receiver page.
+ void OnReceiverConnectionAvailable(
+ const content::PresentationSessionInfo& session_info,
+ PresentationConnectionPtr&& controller_connection);
+
// Associates a JoinSession |callback| with a unique request ID and
// stores it in a map.
// Returns a positive value on success.
@@ -247,9 +261,19 @@ class CONTENT_EXPORT PresentationServiceImpl
// Returns true if this object is associated with |render_frame_host|.
bool FrameMatches(content::RenderFrameHost* render_frame_host) const;
- // Embedder-specific delegate to forward Presentation requests to.
- // May be null if embedder does not support Presentation API.
- PresentationServiceDelegate* delegate_;
+ PresentationServiceDelegateBase* GetPresentationServiceDelegate();
imcheng 2016/11/01 17:20:29 Please add documentation.
zhaobin 2016/11/02 03:55:47 Done.
+
+ // Embedder-specific delegate for controller to forward Presentation requests
+ // to.
+ // May be null if current page is receiver page or
imcheng 2016/11/01 17:20:29 nit: It is definitely nullptr if either of those a
zhaobin 2016/11/02 03:55:47 Done.
+ // embedder does not support Presentation API .
+ ControllerPresentationServiceDelegate* controller_delegate_;
imcheng 2016/11/01 17:20:29 * const
zhaobin 2016/11/02 03:55:47 Cannot be const since we set them to nullptr in Re
+
+ // Embedder-specific delegate for receiver to forward Presentation requests
+ // to.
+ // May be null if current page is receiver page or
imcheng 2016/11/01 17:20:29 ditto about nullptr
zhaobin 2016/11/02 03:55:47 Done.
+ // embedder does not support Presentation API.
+ ReceiverPresentationServiceDelegate* receiver_delegate_;
imcheng 2016/11/01 17:20:29 * const
zhaobin 2016/11/02 03:55:47 Cannot be const since we set them to nullptr in Re
// Proxy to the PresentationServiceClient to send results (e.g., screen
// availability) to.

Powered by Google App Engine
This is Rietveld 408576698