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

Side by Side Diff: chrome/browser/ui/webui/media_router/media_router_dialog_controller.cc

Issue 1224093004: [Media Router] 2nd take on fix route response callback lifetime in UI. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix unit test 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 unified diff | Download patch
OLDNEW
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 #include "chrome/browser/ui/webui/media_router/media_router_dialog_controller.h" 5 #include "chrome/browser/ui/webui/media_router/media_router_dialog_controller.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "chrome/browser/media/router/presentation_service_delegate_impl.h"
10 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/ui/webui/constrained_web_dialog_ui.h" 12 #include "chrome/browser/ui/webui/constrained_web_dialog_ui.h"
12 #include "chrome/browser/ui/webui/media_router/media_router_ui.h" 13 #include "chrome/browser/ui/webui/media_router/media_router_ui.h"
13 #include "chrome/common/url_constants.h" 14 #include "chrome/common/url_constants.h"
14 #include "components/web_modal/web_contents_modal_dialog_host.h" 15 #include "components/web_modal/web_contents_modal_dialog_host.h"
15 #include "content/public/browser/browser_thread.h" 16 #include "content/public/browser/browser_thread.h"
16 #include "content/public/browser/navigation_controller.h" 17 #include "content/public/browser/navigation_controller.h"
17 #include "content/public/browser/navigation_details.h" 18 #include "content/public/browser/navigation_details.h"
18 #include "content/public/browser/navigation_entry.h" 19 #include "content/public/browser/navigation_entry.h"
19 #include "content/public/browser/render_frame_host.h" 20 #include "content/public/browser/render_frame_host.h"
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 CreateMediaRouterDialog(); 201 CreateMediaRouterDialog();
201 return GetMediaRouterDialog(); 202 return GetMediaRouterDialog();
202 } 203 }
203 204
204 // Show the initiator holding the existing media router dialog. 205 // Show the initiator holding the existing media router dialog.
205 initiator_->GetDelegate()->ActivateContents(initiator_); 206 initiator_->GetDelegate()->ActivateContents(initiator_);
206 return media_router_dialog; 207 return media_router_dialog;
207 } 208 }
208 209
209 WebContents* MediaRouterDialogController::ShowMediaRouterDialogForPresentation( 210 WebContents* MediaRouterDialogController::ShowMediaRouterDialogForPresentation(
210 scoped_ptr<CreateSessionRequest> request) { 211 scoped_ptr<CreatePresentationSessionRequest> request) {
211 DCHECK(thread_checker_.CalledOnValidThread()); 212 DCHECK(thread_checker_.CalledOnValidThread());
212 213
213 // Get the media router dialog for |initiator|, or create a new dialog 214 // Get the media router dialog for |initiator|, or create a new dialog
214 // if not found. 215 // if not found.
215 WebContents* media_router_dialog = GetMediaRouterDialog(); 216 WebContents* media_router_dialog = GetMediaRouterDialog();
216 if (!media_router_dialog) { 217 if (!media_router_dialog) {
217 CreateMediaRouterDialog(); 218 CreateMediaRouterDialog();
218 media_router_dialog = GetMediaRouterDialog(); 219 media_router_dialog = GetMediaRouterDialog();
219 presentation_request_ = request.Pass(); 220 presentation_request_ = request.Pass();
220 return media_router_dialog; 221 return media_router_dialog;
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 335
335 MediaRouterUI* media_router_ui = static_cast<MediaRouterUI*>( 336 MediaRouterUI* media_router_ui = static_cast<MediaRouterUI*>(
336 media_router_dialog->GetWebUI()->GetController()); 337 media_router_dialog->GetWebUI()->GetController());
337 DCHECK(media_router_ui); 338 DCHECK(media_router_ui);
338 if (!media_router_ui) { 339 if (!media_router_ui) {
339 Reset(); 340 Reset();
340 return; 341 return;
341 } 342 }
342 343
343 if (!presentation_request_.get()) { 344 if (!presentation_request_.get()) {
344 PresentationServiceDelegateImpl::CreateForWebContents(initiator); 345 // TODO(imcheng): Don't create PresentationServiceDelegateImpl if it doesn't
345 PresentationServiceDelegateImpl* delegate = 346 // exist (crbug.com/508695).
346 PresentationServiceDelegateImpl::FromWebContents(initiator); 347 base::WeakPtr<PresentationServiceDelegateImpl> delegate =
347 CHECK(delegate); 348 PresentationServiceDelegateImpl::GetOrCreateForWebContents(initiator)
349 ->GetWeakPtr();
348 media_router_ui->InitWithDefaultMediaSource(delegate); 350 media_router_ui->InitWithDefaultMediaSource(delegate);
349 } else { 351 } else {
350 media_router_ui->InitWithPresentationSessionRequest( 352 media_router_ui->InitWithPresentationSessionRequest(
351 initiator, presentation_request_.Pass()); 353 initiator, presentation_request_.Pass());
352 } 354 }
353 } 355 }
354 356
355 } // namespace media_router 357 } // namespace media_router
356 358
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698