OLD | NEW |
---|---|
(Empty) | |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/browser/media/router/mojo/media_route_controller.h" | |
6 | |
7 #include <utility> | |
8 | |
9 namespace media_router { | |
10 | |
11 MediaRouteController::Observer::Observer( | |
12 scoped_refptr<MediaRouteController> controller) | |
13 : controller_(std::move(controller)) { | |
14 controller_->AddObserver(this); | |
15 } | |
16 | |
17 MediaRouteController::Observer::~Observer() { | |
18 if (controller_) | |
19 controller_->RemoveObserver(this); | |
20 } | |
21 | |
22 void MediaRouteController::Observer::OnControllerInvalidated() { | |
23 controller_ = nullptr; | |
24 } | |
25 | |
26 MediaRouteController::MediaRouteController( | |
27 const MediaRoute::Id& route_id, | |
28 mojom::MediaControllerPtr media_controller, | |
29 const base::Closure& destructor_callback) | |
30 : route_id_(route_id), | |
31 media_controller_(std::move(media_controller)), | |
32 destructor_callback_(destructor_callback) { | |
33 DCHECK(media_controller_.is_bound()); | |
34 media_controller_.set_connection_error_handler(base::Bind( | |
35 &MediaRouteController::OnControllerInvalidated, base::Unretained(this))); | |
36 } | |
37 | |
38 void MediaRouteController::Play() { | |
39 media_controller_->Play(); | |
40 } | |
41 | |
42 void MediaRouteController::Pause() { | |
43 media_controller_->Pause(); | |
44 } | |
45 | |
46 void MediaRouteController::Seek(base::TimeDelta time) { | |
47 media_controller_->Seek(time); | |
48 } | |
49 | |
50 void MediaRouteController::SetMute(bool mute) { | |
51 media_controller_->SetMute(mute); | |
52 } | |
53 | |
54 void MediaRouteController::SetVolume(float volume) { | |
55 media_controller_->SetVolume(volume); | |
56 } | |
57 | |
58 void MediaRouteController::OnMediaStatusUpdated(const MediaStatus& status) { | |
59 for (Observer& observer : observers_) | |
60 observer.OnMediaStatusUpdated(status); | |
61 } | |
62 | |
63 void MediaRouteController::OnControllerInvalidated() { | |
64 for (Observer& observer : observers_) | |
65 observer.OnControllerInvalidated(); | |
66 // |this| is deleted here! | |
67 } | |
68 | |
69 MediaRouteController::~MediaRouteController() { | |
70 destructor_callback_.Run(); | |
mark a. foltz
2017/03/17 23:55:04
What does this do? If there is some cleanup that
takumif
2017/03/20 22:10:45
Replacing this line with
router_->OnRouteControlle
mark a. foltz
2017/03/21 00:05:21
The design based on notifying observers before the
| |
71 } | |
72 | |
73 void MediaRouteController::AddObserver(Observer* observer) { | |
74 observers_.AddObserver(observer); | |
75 } | |
76 | |
77 void MediaRouteController::RemoveObserver(Observer* observer) { | |
78 observers_.RemoveObserver(observer); | |
79 } | |
80 | |
81 } // namespace media_router | |
OLD | NEW |