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

Side by Side Diff: chrome/browser/media/router/mojo/media_route_controller.cc

Issue 2874283002: [Media Router] Notify MRUI of a media status update when it starts observing (Closed)
Patch Set: Created 3 years, 7 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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/media/router/mojo/media_route_controller.h" 5 #include "chrome/browser/media/router/mojo/media_route_controller.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "chrome/browser/media/router/media_router.h" 9 #include "chrome/browser/media/router/media_router.h"
10 10
11 namespace media_router { 11 namespace media_router {
12 12
13 MediaRouteController::Observer::Observer( 13 MediaRouteController::Observer::Observer(
14 scoped_refptr<MediaRouteController> controller) 14 scoped_refptr<MediaRouteController> controller)
15 : controller_(std::move(controller)) { 15 : controller_(std::move(controller)) {
16 controller_->AddObserver(this); 16 controller_->AddObserver(this);
17 } 17 }
18 18
19 MediaRouteController::Observer::~Observer() { 19 MediaRouteController::Observer::~Observer() {
20 if (controller_) 20 if (controller_)
21 controller_->RemoveObserver(this); 21 controller_->RemoveObserver(this);
22 } 22 }
23 23
24 void MediaRouteController::Observer::CheckForMediaStatusUpdates() {
25 if (controller_ && controller_->current_media_status().has_value())
26 OnMediaStatusUpdated(controller_->current_media_status().value());
27 }
28
24 void MediaRouteController::Observer::InvalidateController() { 29 void MediaRouteController::Observer::InvalidateController() {
25 controller_ = nullptr; 30 controller_ = nullptr;
26 OnControllerInvalidated(); 31 OnControllerInvalidated();
27 } 32 }
28 33
29 void MediaRouteController::Observer::OnControllerInvalidated() {} 34 void MediaRouteController::Observer::OnControllerInvalidated() {}
30 35
31 MediaRouteController::MediaRouteController( 36 MediaRouteController::MediaRouteController(
32 const MediaRoute::Id& route_id, 37 const MediaRoute::Id& route_id,
33 mojom::MediaControllerPtr mojo_media_controller, 38 mojom::MediaControllerPtr mojo_media_controller,
(...skipping 28 matching lines...) Expand all
62 mojo_media_controller_->SetMute(mute); 67 mojo_media_controller_->SetMute(mute);
63 } 68 }
64 69
65 void MediaRouteController::SetVolume(float volume) const { 70 void MediaRouteController::SetVolume(float volume) const {
66 DCHECK(is_valid_); 71 DCHECK(is_valid_);
67 mojo_media_controller_->SetVolume(volume); 72 mojo_media_controller_->SetVolume(volume);
68 } 73 }
69 74
70 void MediaRouteController::OnMediaStatusUpdated(const MediaStatus& status) { 75 void MediaRouteController::OnMediaStatusUpdated(const MediaStatus& status) {
71 DCHECK(is_valid_); 76 DCHECK(is_valid_);
77 current_media_status_ = base::make_optional<MediaStatus>(MediaStatus(status));
72 for (Observer& observer : observers_) 78 for (Observer& observer : observers_)
73 observer.OnMediaStatusUpdated(status); 79 observer.OnMediaStatusUpdated(status);
74 } 80 }
75 81
76 void MediaRouteController::Invalidate() { 82 void MediaRouteController::Invalidate() {
77 is_valid_ = false; 83 is_valid_ = false;
78 binding_.Close(); 84 binding_.Close();
79 mojo_media_controller_.reset(); 85 mojo_media_controller_.reset();
80 for (Observer& observer : observers_) 86 for (Observer& observer : observers_)
81 observer.InvalidateController(); 87 observer.InvalidateController();
(...skipping 25 matching lines...) Expand all
107 DCHECK(is_valid_); 113 DCHECK(is_valid_);
108 observers_.RemoveObserver(observer); 114 observers_.RemoveObserver(observer);
109 } 115 }
110 116
111 void MediaRouteController::OnMojoConnectionError() { 117 void MediaRouteController::OnMojoConnectionError() {
112 media_router_->DetachRouteController(route_id_, this); 118 media_router_->DetachRouteController(route_id_, this);
113 Invalidate(); 119 Invalidate();
114 } 120 }
115 121
116 } // namespace media_router 122 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698