| 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 |