| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CONTENT_BROWSER_PRESENTATION_PRESENTATION_SERVICE_IMPL_H_ | 5 #ifndef CONTENT_BROWSER_PRESENTATION_PRESENTATION_SERVICE_IMPL_H_ |
| 6 #define CONTENT_BROWSER_PRESENTATION_PRESENTATION_SERVICE_IMPL_H_ | 6 #define CONTENT_BROWSER_PRESENTATION_PRESENTATION_SERVICE_IMPL_H_ |
| 7 | 7 |
| 8 #include <deque> | 8 #include <deque> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 FRIEND_TEST_ALL_PREFIXES(PresentationServiceImplTest, | 90 FRIEND_TEST_ALL_PREFIXES(PresentationServiceImplTest, |
| 91 ListenForConnectionStateChange); | 91 ListenForConnectionStateChange); |
| 92 FRIEND_TEST_ALL_PREFIXES(PresentationServiceImplTest, | 92 FRIEND_TEST_ALL_PREFIXES(PresentationServiceImplTest, |
| 93 ListenForConnectionClose); | 93 ListenForConnectionClose); |
| 94 | 94 |
| 95 // Maximum number of pending JoinSession requests at any given time. | 95 // Maximum number of pending JoinSession requests at any given time. |
| 96 static const int kMaxNumQueuedSessionRequests = 10; | 96 static const int kMaxNumQueuedSessionRequests = 10; |
| 97 | 97 |
| 98 using PresentationSessionMojoCallback = | 98 using PresentationSessionMojoCallback = |
| 99 mojo::Callback<void(blink::mojom::PresentationSessionInfoPtr)>; | 99 mojo::Callback<void(blink::mojom::PresentationSessionInfoPtr)>; |
| 100 using PresentationConnectionListMojoCallback = mojo::Callback<void( |
| 101 mojo::Array<blink::mojom::PresentationSessionInfoPtr>)>; |
| 100 using SessionMessagesCallback = | 102 using SessionMessagesCallback = |
| 101 mojo::Callback<void(mojo::Array<blink::mojom::SessionMessagePtr>)>; | 103 mojo::Callback<void(mojo::Array<blink::mojom::SessionMessagePtr>)>; |
| 102 using SendMessageMojoCallback = mojo::Callback<void(bool)>; | 104 using SendMessageMojoCallback = mojo::Callback<void(bool)>; |
| 103 | 105 |
| 104 // Listener implementation owned by PresentationServiceImpl. An instance of | 106 // Listener implementation owned by PresentationServiceImpl. An instance of |
| 105 // this is created when PresentationRequest.getAvailability() is resolved. | 107 // this is created when PresentationRequest.getAvailability() is resolved. |
| 106 // The instance receives screen availability results from the embedder and | 108 // The instance receives screen availability results from the embedder and |
| 107 // propagates results back to PresentationServiceImpl. | 109 // propagates results back to PresentationServiceImpl. |
| 108 class CONTENT_EXPORT ScreenAvailabilityListenerImpl | 110 class CONTENT_EXPORT ScreenAvailabilityListenerImpl |
| 109 : public PresentationScreenAvailabilityListener { | 111 : public PresentationScreenAvailabilityListener { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 const NewSessionMojoCallback& callback) override; | 165 const NewSessionMojoCallback& callback) override; |
| 164 void SendSessionMessage(blink::mojom::PresentationSessionInfoPtr session_info, | 166 void SendSessionMessage(blink::mojom::PresentationSessionInfoPtr session_info, |
| 165 blink::mojom::SessionMessagePtr session_message, | 167 blink::mojom::SessionMessagePtr session_message, |
| 166 const SendMessageMojoCallback& callback) override; | 168 const SendMessageMojoCallback& callback) override; |
| 167 void CloseConnection(const mojo::String& presentation_url, | 169 void CloseConnection(const mojo::String& presentation_url, |
| 168 const mojo::String& presentation_id) override; | 170 const mojo::String& presentation_id) override; |
| 169 void Terminate(const mojo::String& presentation_url, | 171 void Terminate(const mojo::String& presentation_url, |
| 170 const mojo::String& presentation_id) override; | 172 const mojo::String& presentation_id) override; |
| 171 void ListenForSessionMessages( | 173 void ListenForSessionMessages( |
| 172 blink::mojom::PresentationSessionInfoPtr session) override; | 174 blink::mojom::PresentationSessionInfoPtr session) override; |
| 175 void GetReceiverConnections( |
| 176 const PresentationConnectionListMojoCallback& callback) override; |
| 173 | 177 |
| 174 // Creates a binding between this object and |request|. | 178 // Creates a binding between this object and |request|. |
| 175 void Bind(mojo::InterfaceRequest<blink::mojom::PresentationService> request); | 179 void Bind(mojo::InterfaceRequest<blink::mojom::PresentationService> request); |
| 176 | 180 |
| 177 // WebContentsObserver override. | 181 // WebContentsObserver override. |
| 178 void DidNavigateAnyFrame( | 182 void DidNavigateAnyFrame( |
| 179 content::RenderFrameHost* render_frame_host, | 183 content::RenderFrameHost* render_frame_host, |
| 180 const content::LoadCommittedDetails& details, | 184 const content::LoadCommittedDetails& details, |
| 181 const content::FrameNavigateParams& params) override; | 185 const content::FrameNavigateParams& params) override; |
| 182 void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override; | 186 void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 213 void OnStartSessionError( | 217 void OnStartSessionError( |
| 214 int request_session_id, | 218 int request_session_id, |
| 215 const PresentationError& error); | 219 const PresentationError& error); |
| 216 void OnJoinSessionSucceeded( | 220 void OnJoinSessionSucceeded( |
| 217 int request_session_id, | 221 int request_session_id, |
| 218 const PresentationSessionInfo& session_info); | 222 const PresentationSessionInfo& session_info); |
| 219 void OnJoinSessionError( | 223 void OnJoinSessionError( |
| 220 int request_session_id, | 224 int request_session_id, |
| 221 const PresentationError& error); | 225 const PresentationError& error); |
| 222 void OnSendMessageCallback(bool sent); | 226 void OnSendMessageCallback(bool sent); |
| 227 void OnReceiverConnectionAvailable( |
| 228 const content::PresentationSessionInfo& session_info); |
| 223 | 229 |
| 224 // Calls to |delegate_| to start listening for state changes for |connection|. | 230 // Calls to |delegate_| to start listening for state changes for |connection|. |
| 225 // State changes will be returned via |OnConnectionStateChanged|. | 231 // State changes will be returned via |OnConnectionStateChanged|. |
| 226 void ListenForConnectionStateChange( | 232 void ListenForConnectionStateChange( |
| 227 const PresentationSessionInfo& connection); | 233 const PresentationSessionInfo& connection); |
| 228 | 234 |
| 229 // Passed to embedder's implementation of PresentationServiceDelegate for | 235 // Passed to embedder's implementation of PresentationServiceDelegate for |
| 230 // later invocation when session messages arrive. | 236 // later invocation when session messages arrive. |
| 231 void OnSessionMessages( | 237 void OnSessionMessages( |
| 232 const content::PresentationSessionInfo& session, | 238 const content::PresentationSessionInfo& session, |
| (...skipping 17 matching lines...) Expand all Loading... |
| 250 // Embedder-specific delegate to forward Presentation requests to. | 256 // Embedder-specific delegate to forward Presentation requests to. |
| 251 // May be null if embedder does not support Presentation API. | 257 // May be null if embedder does not support Presentation API. |
| 252 PresentationServiceDelegate* delegate_; | 258 PresentationServiceDelegate* delegate_; |
| 253 | 259 |
| 254 // Proxy to the PresentationServiceClient to send results (e.g., screen | 260 // Proxy to the PresentationServiceClient to send results (e.g., screen |
| 255 // availability) to. | 261 // availability) to. |
| 256 blink::mojom::PresentationServiceClientPtr client_; | 262 blink::mojom::PresentationServiceClientPtr client_; |
| 257 | 263 |
| 258 std::string default_presentation_url_; | 264 std::string default_presentation_url_; |
| 259 | 265 |
| 266 // Maps from a presentation URL to a screen availability listener. |
| 260 using ScreenAvailabilityListenerMap = | 267 using ScreenAvailabilityListenerMap = |
| 261 std::map<std::string, std::unique_ptr<ScreenAvailabilityListenerImpl>>; | 268 std::map<std::string, std::unique_ptr<ScreenAvailabilityListenerImpl>>; |
| 262 ScreenAvailabilityListenerMap screen_availability_listeners_; | 269 ScreenAvailabilityListenerMap screen_availability_listeners_; |
| 263 | 270 |
| 264 // For StartSession requests. | 271 // For StartSession requests. |
| 265 // Set to a positive value when a StartSession request is being processed. | 272 // Set to a positive value when a StartSession request is being processed. |
| 266 int start_session_request_id_; | 273 int start_session_request_id_; |
| 267 std::unique_ptr<NewSessionMojoCallbackWrapper> pending_start_session_cb_; | 274 std::unique_ptr<NewSessionMojoCallbackWrapper> pending_start_session_cb_; |
| 268 | 275 |
| 269 // For JoinSession requests. | 276 // For JoinSession requests. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 285 | 292 |
| 286 // NOTE: Weak pointers must be invalidated before all other member variables. | 293 // NOTE: Weak pointers must be invalidated before all other member variables. |
| 287 base::WeakPtrFactory<PresentationServiceImpl> weak_factory_; | 294 base::WeakPtrFactory<PresentationServiceImpl> weak_factory_; |
| 288 | 295 |
| 289 DISALLOW_COPY_AND_ASSIGN(PresentationServiceImpl); | 296 DISALLOW_COPY_AND_ASSIGN(PresentationServiceImpl); |
| 290 }; | 297 }; |
| 291 | 298 |
| 292 } // namespace content | 299 } // namespace content |
| 293 | 300 |
| 294 #endif // CONTENT_BROWSER_PRESENTATION_PRESENTATION_SERVICE_IMPL_H_ | 301 #endif // CONTENT_BROWSER_PRESENTATION_PRESENTATION_SERVICE_IMPL_H_ |
| OLD | NEW |