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

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

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: Moved base CloseMediaRouterDialog to the end of the derived implementation method 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.cc
diff --git a/chrome/browser/media/router/media_router_dialog_controller.cc b/chrome/browser/media/router/media_router_dialog_controller.cc
index d9f80cc75805b71c733e0376807c6da84a604de5..b79ef717157dc4d2e67b3c0da8a3e36a8d0507d5 100644
--- a/chrome/browser/media/router/media_router_dialog_controller.cc
+++ b/chrome/browser/media/router/media_router_dialog_controller.cc
@@ -4,6 +4,9 @@
#include "chrome/browser/media/router/media_router_dialog_controller.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/browser/web_contents_delegate.h"
+
#if defined(OS_ANDROID)
#include "chrome/browser/media/android/router/media_router_dialog_controller_android.h"
#else
@@ -24,4 +27,75 @@ MediaRouterDialogController::GetOrCreateForWebContents(
#endif
}
+class MediaRouterDialogController::InitiatorWebContentsObserver
+ : public content::WebContentsObserver {
+ public:
+ InitiatorWebContentsObserver(
+ content::WebContents* web_contents,
+ MediaRouterDialogController* dialog_controller)
+ : content::WebContentsObserver(web_contents),
+ dialog_controller_(dialog_controller) {
+ }
imcheng 2015/07/23 00:41:14 DCHECK(dialog_controller_);
whywhat 2015/07/23 21:20:09 Done.
+
+ private:
+ void WebContentsDestroyed() override {
+ // NOTE: |this| is deleted after CloseMediaRouterDialog() returns.
+ dialog_controller_->CloseMediaRouterDialog();
+ }
+
+ void NavigationEntryCommitted(
+ const content::LoadCommittedDetails& load_details) override {
+ // NOTE: |this| is deleted after CloseMediaRouterDialog() returns.
+ dialog_controller_->CloseMediaRouterDialog();
+ }
+
+ void RenderProcessGone(base::TerminationStatus status) override {
+ // NOTE: |this| is deleted after CloseMediaRouterDialog() returns.
+ dialog_controller_->CloseMediaRouterDialog();
+ }
+
+ MediaRouterDialogController* const dialog_controller_;
+};
+
+MediaRouterDialogController::MediaRouterDialogController(
+ content::WebContents* initiator)
+ : initiator_(initiator) {
+ DCHECK(initiator_);
+}
+
+MediaRouterDialogController::~MediaRouterDialogController() {
+}
+
+void MediaRouterDialogController::ActivateInitiatorWebContents() {
+ DCHECK(initiator_);
imcheng 2015/07/23 00:41:14 DCHECK not needed as it is already done in ctor.
whywhat 2015/07/23 21:20:09 Done.
+ initiator_->GetDelegate()->ActivateContents(initiator_);
+}
+
+void MediaRouterDialogController::CloseMediaRouterDialog() {
imcheng 2015/07/23 00:41:14 isn't this function pure virtual?
whywhat 2015/07/23 21:20:09 Yep, changed that.
+ DCHECK(initiator_observer_.get());
+ Reset();
+}
+
+void MediaRouterDialogController::CreateMediaRouterDialog() {
+ DCHECK(!initiator_observer_.get());
+ initiator_observer_.reset(new InitiatorWebContentsObserver(
imcheng 2015/07/23 00:41:13 This function doesn't create the dialog - how abou
whywhat 2015/07/23 21:20:09 Done.
+ initiator_, this));
+}
+
+void MediaRouterDialogController::SetPresentationRequest(
imcheng 2015/07/23 00:41:14 nit: TakePresentationRequest ?
whywhat 2015/07/23 21:20:09 Done.
+ scoped_ptr<CreatePresentationSessionRequest> request) {
+ presentation_request_ = request.Pass();
+}
+
+scoped_ptr<CreatePresentationSessionRequest>
+MediaRouterDialogController::PassPresentationRequest() {
+ return presentation_request_.Pass();
+}
+
+void MediaRouterDialogController::Reset() {
+ DCHECK(initiator_observer_.get());
+ initiator_observer_.reset();
+ presentation_request_.reset();
+}
+
} // namespace media_router

Powered by Google App Engine
This is Rietveld 408576698