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

Side by Side Diff: chrome/common/media_router/discovery/media_sink_internal.cc

Issue 2965843002: [Media Router] Support dual discovery (Closed)
Patch Set: resovle code review comments from Derek and Mark Created 3 years, 4 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
« no previous file with comments | « chrome/common/media_router/discovery/media_sink_internal.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/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
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
OLDNEW
« no previous file with comments | « chrome/common/media_router/discovery/media_sink_internal.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698