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

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

Issue 1243173003: [MediaRouter] Moved the code useful for Android to MediaRouterDialogController (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@build-media-router-android
Patch Set: Rebase Created 5 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
Index: chrome/browser/media/router/media_router_dialog_controller.h
diff --git a/chrome/browser/media/router/media_router_dialog_controller.h b/chrome/browser/media/router/media_router_dialog_controller.h
index a627b44d91d7c8baa5f41ebc178a359ce57d3acc..8bd183d51243edff260891c0c0be4ca4e640d76b 100644
--- a/chrome/browser/media/router/media_router_dialog_controller.h
+++ b/chrome/browser/media/router/media_router_dialog_controller.h
@@ -6,7 +6,10 @@
#define CHROME_BROWSER_MEDIA_ROUTER_MEDIA_ROUTER_DIALOG_CONTROLLER_H_
#include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/threading/thread_checker.h"
#include "chrome/browser/media/router/create_presentation_session_request.h"
+#include "content/public/browser/web_contents_observer.h"
namespace content {
class WebContents;
@@ -14,14 +17,14 @@ class WebContents;
namespace media_router {
-// An implementation of this interface is tied to a WebContents known as the
-// initiator, and is lazily created when a Media Router dialog needs to be
-// shown. The MediaRouterDialogController allows creating, querying, and
-// removing a Media Router dialog modal to the initiator WebContents.
+// An abstract base class for Media Router dialog controllers. Tied to a
+// WebContents known as the |initiator|, and is lazily created when a Media
+// Router dialog needs to be shown. The MediaRouterDialogController allows
+// showing and closing a Media Router dialog modal to the initiator WebContents.
// This class is not thread safe and must be called on the UI thread.
class MediaRouterDialogController {
public:
- virtual ~MediaRouterDialogController() = default;
+ virtual ~MediaRouterDialogController();
// Gets a reference to the MediaRouterDialogController associated with
// |web_contents|, creating one if it does not exist. The returned pointer is
@@ -34,8 +37,55 @@ class MediaRouterDialogController {
// to the front, but does not change the dialog with |request|.
// Returns WebContents for the media router dialog if a dialog was created.
// Otherwise returns false and |request| is deleted.
- virtual bool ShowMediaRouterDialogForPresentation(
- scoped_ptr<CreatePresentationSessionRequest> request) = 0;
+ bool ShowMediaRouterDialogForPresentation(
+ scoped_ptr<CreatePresentationSessionRequest> request);
+
+ // Closes the media router dialog. Must be called from the overrides.
imcheng 2015/07/24 22:09:28 sounds like this should be moved to protected? Or
whywhat 2015/07/28 18:52:53 Done.
+ // It is an error to call this function if there is currently no dialog.
+ virtual void CloseMediaRouterDialog();
+
+ // Indicates if the media router dialog already exists.
+ virtual bool IsShowingMediaRouterDialog() = 0;
mark a. foltz 2015/07/24 20:10:35 const?
whywhat 2015/07/28 18:52:53 Done.
+
+ // Creates a new media router dialog modal to |initiator_|.
+ virtual void CreateMediaRouterDialog() = 0;
mark a. foltz 2015/07/24 20:10:35 Would a client ever want to create a dialog withou
whywhat 2015/07/28 18:52:53 Done.
+
+ // Shows the media router dialog modal to the initiator WebContents.
mark a. foltz 2015/07/24 20:10:34 (1) for consistency, "modal to |initiator_|." (2)
whywhat 2015/07/28 18:52:53 Done.
+ // Creates the dialog if it did not exist prior to this call.
+ // If the dialog already exists, brings the dialog to the front.
+ virtual void ShowMediaRouterDialog();
+
+ protected:
+ // Use MediaRouterDialogController::GetOrCreateForWebContents() to create an
mark a. foltz 2015/07/24 20:10:35 Or should the public API be ShowMediaRouterDialog{
whywhat 2015/07/28 18:52:53 I believe there's some advantage to be able to cac
+ // instance.
+ explicit MediaRouterDialogController(content::WebContents* initiator);
+
+ void ActivateInitiatorWebContents();
+ void ObserveInitiatorWebContents();
+
+ scoped_ptr<CreatePresentationSessionRequest> PassPresentationRequest();
+ void TakePresentationRequest(
+ scoped_ptr<CreatePresentationSessionRequest> request);
+
+ content::WebContents* initiator() { return initiator_; }
mark a. foltz 2015/07/24 20:10:34 Should this method be const?
whywhat 2015/07/28 18:52:53 If I can use const content::WebContents* everywher
+
+ // Resets the state of the controller. Must be called from the overrides.
+ virtual void Reset();
imcheng 2015/07/24 22:09:28 similar comment to CloseMediaRouterDialog() above
whywhat 2015/07/28 18:52:53 I don't think it's justified in the case of Reset
+
+ base::ThreadChecker thread_checker_;
+
+ private:
+ class InitiatorWebContentsObserver;
+
+ scoped_ptr<InitiatorWebContentsObserver> initiator_observer_;
mark a. foltz 2015/07/24 20:10:34 It would be helpful to include a comment here sinc
whywhat 2015/07/28 18:52:53 Done.
+ content::WebContents* const initiator_;
+
+ // Data for dialogs created under a Presentation API context.
mark a. foltz 2015/07/24 20:10:35 created at the request of the Presentation API.
whywhat 2015/07/28 18:52:53 Done.
+ // Passed from the caller of ShowMediaRouterDialogForPresentation(), and
mark a. foltz 2015/07/24 20:10:34 Passed from the caller via SMRDFP to the dialog wh
whywhat 2015/07/28 18:52:53 Done.
+ // passed to the dialog when it is initialized.
+ scoped_ptr<CreatePresentationSessionRequest> presentation_request_;
+
+ DISALLOW_COPY_AND_ASSIGN(MediaRouterDialogController);
};
} // namespace media_router

Powered by Google App Engine
This is Rietveld 408576698