 Chromium Code Reviews
 Chromium Code Reviews Issue 2958663002:
  [MediaRouter] PresentationServiceDelegateImpl cleanup.  (Closed)
    
  
    Issue 2958663002:
  [MediaRouter] PresentationServiceDelegateImpl cleanup.  (Closed) 
  | 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 CHROME_BROWSER_MEDIA_ROUTER_PRESENTATION_SERVICE_DELEGATE_IMPL_H_ | 5 #ifndef CHROME_BROWSER_MEDIA_ROUTER_PRESENTATION_SERVICE_DELEGATE_IMPL_H_ | 
| 6 #define CHROME_BROWSER_MEDIA_ROUTER_PRESENTATION_SERVICE_DELEGATE_IMPL_H_ | 6 #define CHROME_BROWSER_MEDIA_ROUTER_PRESENTATION_SERVICE_DELEGATE_IMPL_H_ | 
| 7 | 7 | 
| 8 #include <map> | 8 #include <map> | 
| 9 #include <memory> | 9 #include <memory> | 
| 10 #include <string> | 10 #include <string> | 
| (...skipping 20 matching lines...) Expand all Loading... | |
| 31 struct PresentationInfo; | 31 struct PresentationInfo; | 
| 32 } // namespace content | 32 } // namespace content | 
| 33 | 33 | 
| 34 namespace url { | 34 namespace url { | 
| 35 class Origin; | 35 class Origin; | 
| 36 } // namespace url | 36 } // namespace url | 
| 37 | 37 | 
| 38 namespace media_router { | 38 namespace media_router { | 
| 39 | 39 | 
| 40 class MediaRoute; | 40 class MediaRoute; | 
| 41 class PresentationFrameManager; | 41 class PresentationFrame; | 
| 42 class RouteRequestResult; | 42 class RouteRequestResult; | 
| 43 | 43 | 
| 44 // Implementation of PresentationServiceDelegate that interfaces an instance of | 44 // Implementation of PresentationServiceDelegate that interfaces an instance of | 
| 45 // WebContents with the Chrome Media Router. It uses the Media Router to handle | 45 // WebContents with the Chrome Media Router. It uses the Media Router to handle | 
| 46 // presentation API calls forwarded from PresentationServiceImpl. In addition, | 46 // presentation API calls forwarded from PresentationServiceImpl. In addition, | 
| 47 // it also provides default presentation URL that is required for creating | 47 // it also provides default presentation URL that is required for creating | 
| 48 // browser-initiated presentations. It is scoped to the lifetime of a | 48 // browser-initiated presentations. It is scoped to the lifetime of a | 
| 49 // WebContents, and is managed by the associated WebContents. | 49 // WebContents, and is managed by the associated WebContents. | 
| 50 class PresentationServiceDelegateImpl | 50 class PresentationServiceDelegateImpl | 
| 51 : public content::WebContentsUserData<PresentationServiceDelegateImpl>, | 51 : public content::WebContentsUserData<PresentationServiceDelegateImpl>, | 
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 179 DefaultPresentationUrlCallback); | 179 DefaultPresentationUrlCallback); | 
| 180 FRIEND_TEST_ALL_PREFIXES(PresentationServiceDelegateImplTest, | 180 FRIEND_TEST_ALL_PREFIXES(PresentationServiceDelegateImplTest, | 
| 181 TestCloseConnectionForOffscreenPresentation); | 181 TestCloseConnectionForOffscreenPresentation); | 
| 182 FRIEND_TEST_ALL_PREFIXES(PresentationServiceDelegateImplTest, | 182 FRIEND_TEST_ALL_PREFIXES(PresentationServiceDelegateImplTest, | 
| 183 ConnectToOffscreenPresentation); | 183 ConnectToOffscreenPresentation); | 
| 184 FRIEND_TEST_ALL_PREFIXES(PresentationServiceDelegateImplTest, | 184 FRIEND_TEST_ALL_PREFIXES(PresentationServiceDelegateImplTest, | 
| 185 ConnectToPresentation); | 185 ConnectToPresentation); | 
| 186 | 186 | 
| 187 explicit PresentationServiceDelegateImpl(content::WebContents* web_contents); | 187 explicit PresentationServiceDelegateImpl(content::WebContents* web_contents); | 
| 188 | 188 | 
| 189 // Returns |listener|'s presentation URL as a MediaSource. If |listener| does | 189 PresentationFrame* GetOrAddPresentationFrame( | 
| 190 // not have a persentation URL, returns the tab mirroring MediaSource. | 190 const RenderFrameHostId& render_frame_host_id); | 
| 191 MediaSource GetMediaSourceFromListener( | |
| 192 content::PresentationScreenAvailabilityListener* listener); | |
| 193 | 191 | 
| 194 void OnJoinRouteResponse( | 192 void OnJoinRouteResponse( | 
| 195 int render_process_id, | 193 int render_process_id, | 
| 196 int render_frame_id, | 194 int render_frame_id, | 
| 197 const GURL& presentation_url, | 195 const GURL& presentation_url, | 
| 198 const std::string& presentation_id, | 196 const std::string& presentation_id, | 
| 199 content::PresentationConnectionCallback success_cb, | 197 content::PresentationConnectionCallback success_cb, | 
| 200 content::PresentationConnectionErrorCallback error_cb, | 198 content::PresentationConnectionErrorCallback error_cb, | 
| 201 const RouteRequestResult& result); | 199 const RouteRequestResult& result); | 
| 202 | 200 | 
| 203 void OnStartPresentationSucceeded( | 201 void OnStartPresentationSucceeded( | 
| 204 int render_process_id, | 202 int render_process_id, | 
| 205 int render_frame_id, | 203 int render_frame_id, | 
| 206 content::PresentationConnectionCallback success_cb, | 204 content::PresentationConnectionCallback success_cb, | 
| 207 const content::PresentationInfo& new_presentation_info, | 205 const content::PresentationInfo& new_presentation_info, | 
| 208 const MediaRoute& route); | 206 const MediaRoute& route); | 
| 209 | 207 | 
| 208 // Notifies the PresentationFrame of |render_frame_host_id| that a | |
| 209 // presentation and its corresponding MediaRoute has been created. | |
| 210 // The PresentationFrame will be created if it does not already exist. | |
| 211 // This must be called before |ConnectToPresentation()|. | |
| 212 void AddPresentation(const RenderFrameHostId& render_frame_host_id, | |
| 213 const content::PresentationInfo& presentation_info, | |
| 214 const MediaRoute& route); | |
| 215 | |
| 216 // Notifies the PresentationFrame of |render_frame_host_id| that a | |
| 217 // presentation and its corresponding MediaRoute has been removed. | |
| 218 void RemovePresentation(const RenderFrameHostId& render_frame_host_id, | |
| 219 const std::string& presentation_id); | |
| 220 | |
| 221 // Sets the default presentation request for the owning WebContents and | |
| 222 // notifies observers of changes. | |
| 223 void SetDefaultPresentationRequest( | |
| 224 const PresentationRequest& default_presentation_request); | |
| 225 | |
| 226 // Clears the default presentation request for the owning WebContents and | |
| 227 // notifies observers of changes. Also resets | |
| 228 // |default_presentation_started_callback_|. | |
| 229 void ClearDefaultPresentationRequest(); | |
| 230 | |
| 231 bool IsMainFrame(const RenderFrameHostId& render_frame_host_id) const; | |
| 
Kevin M
2017/07/10 19:01:36
Add a comment for all new methods?
 
imcheng
2017/07/10 19:18:50
Done.
 | |
| 232 | |
| 233 MediaRoute::Id GetRouteId(const RenderFrameHostId& render_frame_host_id, | |
| 234 const std::string& presentation_id) const; | |
| 235 | |
| 210 #if !defined(OS_ANDROID) | 236 #if !defined(OS_ANDROID) | 
| 211 // Returns true if auto-join requests should be cancelled for |origin|. | 237 // Returns true if auto-join requests should be cancelled for |origin|. | 
| 212 bool ShouldCancelAutoJoinForOrigin(const url::Origin& origin) const; | 238 bool ShouldCancelAutoJoinForOrigin(const url::Origin& origin) const; | 
| 213 #endif | 239 #endif | 
| 214 | 240 | 
| 215 // References to the WebContents that owns this instance, and associated | 241 // References to the WebContents that owns this instance, and associated | 
| 216 // browser profile's MediaRouter instance. | 242 // browser profile's MediaRouter instance. | 
| 217 content::WebContents* const web_contents_; | 243 content::WebContents* const web_contents_; | 
| 218 MediaRouter* router_; | 244 MediaRouter* router_; | 
| 219 | 245 | 
| 220 std::unique_ptr<PresentationFrameManager> frame_manager_; | 246 // References to the observers listening for changes to this tab WebContent's | 
| 
Kevin M
2017/07/10 19:01:37
The pluralized WebContents name makes a mess of th
 
imcheng
2017/07/10 19:18:50
Done.
 | |
| 247 // default presentation. | |
| 248 base::ObserverList<DefaultPresentationRequestObserver> | |
| 249 default_presentation_request_observers_; | |
| 250 | |
| 251 // Default presentation request for the owning tab WebContents. | |
| 
Kevin M
2017/07/10 19:01:36
tab's
 
imcheng
2017/07/10 19:18:50
Done. Got rid of tab, since it means the same thin
 | |
| 252 std::unique_ptr<PresentationRequest> default_presentation_request_; | |
| 253 | |
| 254 // Callback to invoke when default presentation has started. | |
| 
Kevin M
2017/07/10 19:01:36
the default presentation
 
imcheng
2017/07/10 19:18:50
Done.
 | |
| 255 content::DefaultPresentationConnectionCallback | |
| 256 default_presentation_started_callback_; | |
| 257 | |
| 258 // Maps a frame identifier to a PresentationFrame object for frames | |
| 259 // that are using Presentation API. | |
| 260 std::unordered_map<RenderFrameHostId, | |
| 261 std::unique_ptr<PresentationFrame>, | |
| 262 RenderFrameHostIdHasher> | |
| 263 presentation_frames_; | |
| 264 | |
| 221 PresentationServiceDelegateObservers observers_; | 265 PresentationServiceDelegateObservers observers_; | 
| 222 | 266 | 
| 223 base::WeakPtrFactory<PresentationServiceDelegateImpl> weak_factory_; | 267 base::WeakPtrFactory<PresentationServiceDelegateImpl> weak_factory_; | 
| 224 | 268 | 
| 225 DISALLOW_COPY_AND_ASSIGN(PresentationServiceDelegateImpl); | 269 DISALLOW_COPY_AND_ASSIGN(PresentationServiceDelegateImpl); | 
| 226 }; | 270 }; | 
| 227 | 271 | 
| 228 } // namespace media_router | 272 } // namespace media_router | 
| 229 | 273 | 
| 230 #endif // CHROME_BROWSER_MEDIA_ROUTER_PRESENTATION_SERVICE_DELEGATE_IMPL_H_ | 274 #endif // CHROME_BROWSER_MEDIA_ROUTER_PRESENTATION_SERVICE_DELEGATE_IMPL_H_ | 
| OLD | NEW |