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

Unified Diff: chrome/browser/media/router/presentation_service_delegate_impl.h

Issue 2958663002: [MediaRouter] PresentationServiceDelegateImpl cleanup. (Closed)
Patch Set: rebase Created 3 years, 5 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
« no previous file with comments | « no previous file | chrome/browser/media/router/presentation_service_delegate_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/media/router/presentation_service_delegate_impl.h
diff --git a/chrome/browser/media/router/presentation_service_delegate_impl.h b/chrome/browser/media/router/presentation_service_delegate_impl.h
index 0e368db7f81a9754ed5f08483be0de263dc55929..f98a8ebcf122e7e9818044d9f859a5e9ad06c71a 100644
--- a/chrome/browser/media/router/presentation_service_delegate_impl.h
+++ b/chrome/browser/media/router/presentation_service_delegate_impl.h
@@ -38,7 +38,7 @@ class Origin;
namespace media_router {
class MediaRoute;
-class PresentationFrameManager;
+class PresentationFrame;
class RouteRequestResult;
// Implementation of PresentationServiceDelegate that interfaces an instance of
@@ -147,7 +147,7 @@ class PresentationServiceDelegateImpl
void RemoveDefaultPresentationRequestObserver(
DefaultPresentationRequestObserver* observer);
- // Gets the default presentation request for the owning tab WebContents. It
+ // Gets the default presentation request for the owning WebContents. It
// is an error to call this method if the default presentation request does
// not exist.
PresentationRequest GetDefaultPresentationRequest() const;
@@ -186,10 +186,8 @@ class PresentationServiceDelegateImpl
explicit PresentationServiceDelegateImpl(content::WebContents* web_contents);
- // Returns |listener|'s presentation URL as a MediaSource. If |listener| does
- // not have a persentation URL, returns the tab mirroring MediaSource.
- MediaSource GetMediaSourceFromListener(
- content::PresentationScreenAvailabilityListener* listener);
+ PresentationFrame* GetOrAddPresentationFrame(
+ const RenderFrameHostId& render_frame_host_id);
void OnJoinRouteResponse(
int render_process_id,
@@ -207,6 +205,39 @@ class PresentationServiceDelegateImpl
const content::PresentationInfo& new_presentation_info,
const MediaRoute& route);
+ // Notifies the PresentationFrame of |render_frame_host_id| that a
+ // presentation and its corresponding MediaRoute has been created.
+ // The PresentationFrame will be created if it does not already exist.
+ // This must be called before |ConnectToPresentation()|.
+ void AddPresentation(const RenderFrameHostId& render_frame_host_id,
+ const content::PresentationInfo& presentation_info,
+ const MediaRoute& route);
+
+ // Notifies the PresentationFrame of |render_frame_host_id| that a
+ // presentation and its corresponding MediaRoute has been removed.
+ void RemovePresentation(const RenderFrameHostId& render_frame_host_id,
+ const std::string& presentation_id);
+
+ // Sets the default presentation request for the owning WebContents and
+ // notifies observers of changes.
+ void SetDefaultPresentationRequest(
+ const PresentationRequest& default_presentation_request);
+
+ // Clears the default presentation request for the owning WebContents and
+ // notifies observers of changes. Also resets
+ // |default_presentation_started_callback_|.
+ void ClearDefaultPresentationRequest();
+
+ // Returns |true| if the given frame is the main frame of the associated
+ // WebContents.
+ // NOTE: This method will be removed in an upcoming patch.
+ bool IsMainFrame(const RenderFrameHostId& render_frame_host_id) const;
+
+ // Returns the ID of the route corresponding to |presentation_id| in the given
+ // frame, or empty if no such route exist.
+ MediaRoute::Id GetRouteId(const RenderFrameHostId& render_frame_host_id,
+ const std::string& presentation_id) const;
+
#if !defined(OS_ANDROID)
// Returns true if auto-join requests should be cancelled for |origin|.
bool ShouldCancelAutoJoinForOrigin(const url::Origin& origin) const;
@@ -217,7 +248,25 @@ class PresentationServiceDelegateImpl
content::WebContents* const web_contents_;
MediaRouter* router_;
- std::unique_ptr<PresentationFrameManager> frame_manager_;
+ // References to the observers listening for changes to the default
+ // presentation of the associated WebContents.
+ base::ObserverList<DefaultPresentationRequestObserver>
+ default_presentation_request_observers_;
+
+ // Default presentation request for the owning WebContents.
+ std::unique_ptr<PresentationRequest> default_presentation_request_;
+
+ // Callback to invoke when the default presentation has started.
+ content::DefaultPresentationConnectionCallback
+ default_presentation_started_callback_;
+
+ // Maps a frame identifier to a PresentationFrame object for frames
+ // that are using Presentation API.
+ std::unordered_map<RenderFrameHostId,
+ std::unique_ptr<PresentationFrame>,
+ RenderFrameHostIdHasher>
+ presentation_frames_;
+
PresentationServiceDelegateObservers observers_;
base::WeakPtrFactory<PresentationServiceDelegateImpl> weak_factory_;
« no previous file with comments | « no previous file | chrome/browser/media/router/presentation_service_delegate_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698