OLD | NEW |
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 #include "chrome/browser/media/router/discovery/media_sink_service_base.h" | 4 #include "chrome/browser/media/router/discovery/media_sink_service_base.h" |
5 | 5 |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 namespace { | 8 namespace { |
9 // Time interval when media sink service sends sinks to MRP. | 9 // Time interval when media sink service sends sinks to MRP. |
10 const int kFetchCompleteTimeoutSecs = 3; | 10 const int kFetchCompleteTimeoutSecs = 3; |
11 } | 11 } |
12 | 12 |
13 namespace media_router { | 13 namespace media_router { |
14 | 14 |
15 MediaSinkServiceBase::MediaSinkServiceBase( | 15 MediaSinkServiceBase::MediaSinkServiceBase( |
16 const OnSinksDiscoveredCallback& callback) | 16 const OnSinksDiscoveredCallback& callback) |
17 : MediaSinkService(callback) { | 17 : MediaSinkService(callback) { |
18 fetch_complete_timeout_secs_ = kFetchCompleteTimeoutSecs; | 18 fetch_complete_timeout_secs_ = kFetchCompleteTimeoutSecs; |
19 } | 19 } |
20 | 20 |
21 MediaSinkServiceBase::~MediaSinkServiceBase() = default; | 21 MediaSinkServiceBase::~MediaSinkServiceBase() = default; |
22 | 22 |
| 23 void MediaSinkServiceBase::AddObserver(Observer* observer) { |
| 24 if (!observers_.HasObserver(observer)) |
| 25 observers_.AddObserver(observer); |
| 26 } |
| 27 |
| 28 void MediaSinkServiceBase::RemoveObserver(Observer* observer) { |
| 29 observers_.RemoveObserver(observer); |
| 30 } |
| 31 |
23 void MediaSinkServiceBase::SetTimerForTest(std::unique_ptr<base::Timer> timer) { | 32 void MediaSinkServiceBase::SetTimerForTest(std::unique_ptr<base::Timer> timer) { |
24 DCHECK(!finish_timer_); | 33 DCHECK(!finish_timer_); |
25 finish_timer_ = std::move(timer); | 34 finish_timer_ = std::move(timer); |
26 } | 35 } |
27 | 36 |
28 void MediaSinkServiceBase::OnFetchCompleted() { | 37 void MediaSinkServiceBase::OnFetchCompleted() { |
29 DCHECK(!sink_discovery_callback_.is_null()); | 38 DCHECK(!sink_discovery_callback_.is_null()); |
30 | 39 |
31 if (current_sinks_ == mrp_sinks_) { | 40 if (current_sinks_ == mrp_sinks_) { |
32 DVLOG(2) << "No update to sink list."; | 41 DVLOG(2) << "No update to sink list."; |
(...skipping 23 matching lines...) Expand all Loading... |
56 void MediaSinkServiceBase::StopTimer() { | 65 void MediaSinkServiceBase::StopTimer() { |
57 finish_timer_.reset(); | 66 finish_timer_.reset(); |
58 } | 67 } |
59 | 68 |
60 void MediaSinkServiceBase::RestartTimer() { | 69 void MediaSinkServiceBase::RestartTimer() { |
61 if (!finish_timer_ || finish_timer_->IsRunning()) | 70 if (!finish_timer_ || finish_timer_->IsRunning()) |
62 return; | 71 return; |
63 StartTimer(); | 72 StartTimer(); |
64 } | 73 } |
65 | 74 |
| 75 void MediaSinkServiceBase::AddSink(const MediaSinkInternal& sink) { |
| 76 if (!current_sinks_.insert(sink).second) |
| 77 return; |
| 78 |
| 79 for (auto& observer : observers_) |
| 80 observer.OnMediaSinkAdded(sink); |
| 81 } |
| 82 |
| 83 void MediaSinkServiceBase::RemoveSinks() { |
| 84 current_sinks_.clear(); |
| 85 for (auto& observer : observers_) |
| 86 observer.OnMediaSinksRemoved(); |
| 87 } |
| 88 |
| 89 size_t MediaSinkServiceBase::GetCurrentSinksSize() { |
| 90 return current_sinks_.size(); |
| 91 } |
| 92 |
66 } // namespace media_router | 93 } // namespace media_router |
OLD | NEW |