| 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 | 4 |
| 5 #include "chrome/common/media_router/discovery/media_sink_internal.h" | 5 #include "chrome/common/media_router/discovery/media_sink_internal.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
| 9 | 9 |
| 10 namespace media_router { | 10 namespace media_router { |
| 11 | 11 |
| 12 MediaSinkInternal::MediaSinkInternal(const MediaSink& sink, | 12 MediaSinkInternal::MediaSinkInternal(const MediaSink& sink, |
| 13 const DialSinkExtraData& dial_data) | 13 const DialSinkExtraData& dial_data) |
| 14 : sink_(sink), sink_type_(SinkType::DIAL) { | 14 : sink_(sink), sink_type_(SinkType::DIAL) { |
| 15 dial_data_.Init(dial_data); | 15 dial_data_.Init(dial_data); |
| 16 } | 16 } |
| 17 | 17 |
| 18 MediaSinkInternal::MediaSinkInternal(const MediaSink& sink, | 18 MediaSinkInternal::MediaSinkInternal(const MediaSink& sink, |
| 19 const CastSinkExtraData& cast_data) | 19 const CastSinkExtraData& cast_data) |
| 20 : sink_(sink), sink_type_(SinkType::CAST) { | 20 : sink_(sink), sink_type_(SinkType::CAST) { |
| 21 cast_data_.Init(cast_data); | 21 cast_data_.Init(cast_data); |
| 22 } | 22 } |
| 23 | 23 |
| 24 MediaSinkInternal::MediaSinkInternal() : sink_type_(SinkType::GENERIC) {} | 24 MediaSinkInternal::MediaSinkInternal() : sink_type_(SinkType::GENERIC) {} |
| 25 | 25 |
| 26 MediaSinkInternal::MediaSinkInternal(const MediaSinkInternal& other) { | 26 MediaSinkInternal::MediaSinkInternal(const MediaSinkInternal& other) { |
| 27 InternalCopyConstructFrom(other); | 27 InternalCopyConstructFrom(other); |
| 28 } | 28 } |
| 29 | 29 |
| 30 MediaSinkInternal::MediaSinkInternal(MediaSinkInternal&& other) { |
| 31 InternalMoveConstructFrom(std::move(other)); |
| 32 } |
| 33 |
| 30 MediaSinkInternal::~MediaSinkInternal() { | 34 MediaSinkInternal::~MediaSinkInternal() { |
| 31 InternalCleanup(); | 35 InternalCleanup(); |
| 32 } | 36 } |
| 33 | 37 |
| 34 MediaSinkInternal& MediaSinkInternal::operator=( | 38 MediaSinkInternal& MediaSinkInternal::operator=( |
| 35 const MediaSinkInternal& other) { | 39 const MediaSinkInternal& other) { |
| 36 if (this != &other) { | 40 if (this != &other) { |
| 37 if (sink_type_ == other.sink_type_) { | 41 if (sink_type_ == other.sink_type_) { |
| 38 InternalCopyAssignFrom(other); | 42 InternalCopyAssignFrom(other); |
| 39 } else { | 43 } else { |
| 40 InternalCleanup(); | 44 InternalCleanup(); |
| 41 InternalCopyConstructFrom(other); | 45 InternalCopyConstructFrom(other); |
| 42 } | 46 } |
| 43 } | 47 } |
| 44 | 48 |
| 45 return *this; | 49 return *this; |
| 46 } | 50 } |
| 47 | 51 |
| 52 MediaSinkInternal& MediaSinkInternal::operator=( |
| 53 MediaSinkInternal&& other) noexcept { |
| 54 InternalCleanup(); |
| 55 InternalMoveConstructFrom(std::move(other)); |
| 56 |
| 57 return *this; |
| 58 } |
| 59 |
| 48 bool MediaSinkInternal::operator==(const MediaSinkInternal& other) const { | 60 bool MediaSinkInternal::operator==(const MediaSinkInternal& other) const { |
| 49 if (sink_type_ != other.sink_type_) | 61 if (sink_type_ != other.sink_type_) |
| 50 return false; | 62 return false; |
| 51 | 63 |
| 52 if (sink_ != other.sink_) | 64 if (sink_ != other.sink_) |
| 53 return false; | 65 return false; |
| 54 | 66 |
| 55 switch (sink_type_) { | 67 switch (sink_type_) { |
| 56 case SinkType::DIAL: | 68 case SinkType::DIAL: |
| 57 return *dial_data_ == *(other.dial_data_); | 69 return *dial_data_ == *(other.dial_data_); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 return; | 152 return; |
| 141 case SinkType::CAST: | 153 case SinkType::CAST: |
| 142 cast_data_.Init(*other.cast_data_); | 154 cast_data_.Init(*other.cast_data_); |
| 143 return; | 155 return; |
| 144 case SinkType::GENERIC: | 156 case SinkType::GENERIC: |
| 145 return; | 157 return; |
| 146 } | 158 } |
| 147 NOTREACHED(); | 159 NOTREACHED(); |
| 148 } | 160 } |
| 149 | 161 |
| 162 void MediaSinkInternal::InternalMoveConstructFrom(MediaSinkInternal&& other) { |
| 163 sink_ = std::move(other.sink_); |
| 164 sink_type_ = other.sink_type_; |
| 165 |
| 166 switch (sink_type_) { |
| 167 case SinkType::DIAL: |
| 168 dial_data_.InitFromMove(std::move(other.dial_data_)); |
| 169 return; |
| 170 case SinkType::CAST: |
| 171 cast_data_.InitFromMove(std::move(other.cast_data_)); |
| 172 return; |
| 173 case SinkType::GENERIC: |
| 174 return; |
| 175 } |
| 176 NOTREACHED(); |
| 177 } |
| 178 |
| 150 void MediaSinkInternal::InternalCleanup() { | 179 void MediaSinkInternal::InternalCleanup() { |
| 151 switch (sink_type_) { | 180 switch (sink_type_) { |
| 152 case SinkType::DIAL: | 181 case SinkType::DIAL: |
| 153 dial_data_.Destroy(); | 182 dial_data_.Destroy(); |
| 154 return; | 183 return; |
| 155 case SinkType::CAST: | 184 case SinkType::CAST: |
| 156 cast_data_.Destroy(); | 185 cast_data_.Destroy(); |
| 157 return; | 186 return; |
| 158 case SinkType::GENERIC: | 187 case SinkType::GENERIC: |
| 159 return; | 188 return; |
| 160 } | 189 } |
| 161 NOTREACHED(); | 190 NOTREACHED(); |
| 162 } | 191 } |
| 163 | 192 |
| 164 DialSinkExtraData::DialSinkExtraData() = default; | 193 DialSinkExtraData::DialSinkExtraData() = default; |
| 165 DialSinkExtraData::DialSinkExtraData(const DialSinkExtraData& other) = default; | 194 DialSinkExtraData::DialSinkExtraData(const DialSinkExtraData& other) = default; |
| 166 DialSinkExtraData::~DialSinkExtraData() = default; | 195 DialSinkExtraData::~DialSinkExtraData() = default; |
| 167 | 196 |
| 168 bool DialSinkExtraData::operator==(const DialSinkExtraData& other) const { | 197 bool DialSinkExtraData::operator==(const DialSinkExtraData& other) const { |
| 169 return ip_address == other.ip_address && model_name == other.model_name && | 198 return ip_address == other.ip_address && model_name == other.model_name && |
| 170 app_url == other.app_url; | 199 app_url == other.app_url; |
| 171 } | 200 } |
| 172 | 201 |
| 173 CastSinkExtraData::CastSinkExtraData() = default; | 202 CastSinkExtraData::CastSinkExtraData() = default; |
| 174 CastSinkExtraData::CastSinkExtraData(const CastSinkExtraData& other) = default; | 203 CastSinkExtraData::CastSinkExtraData(const CastSinkExtraData& other) = default; |
| 175 CastSinkExtraData::~CastSinkExtraData() = default; | 204 CastSinkExtraData::~CastSinkExtraData() = default; |
| 176 | 205 |
| 177 bool CastSinkExtraData::operator==(const CastSinkExtraData& other) const { | 206 bool CastSinkExtraData::operator==(const CastSinkExtraData& other) const { |
| 178 return ip_address == other.ip_address && model_name == other.model_name && | 207 return ip_address == other.ip_address && port == other.port && |
| 179 capabilities == other.capabilities && | 208 model_name == other.model_name && capabilities == other.capabilities && |
| 180 cast_channel_id == other.cast_channel_id; | 209 cast_channel_id == other.cast_channel_id && |
| 210 discovered_by_dial == other.discovered_by_dial; |
| 181 } | 211 } |
| 182 | 212 |
| 183 } // namespace media_router | 213 } // namespace media_router |
| OLD | NEW |