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

Side by Side Diff: chrome/browser/media/router/discovery/media_sink_internal.cc

Issue 2675033002: [Media Router] Add MediaSink subtypes (Closed)
Patch Set: resolve code review comments from Derek and Mark Created 3 years, 9 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
OLDNEW
(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/discovery/media_sink_internal.h"
6
7 #include <algorithm>
8 #include "base/logging.h"
9 #include "net/base/ip_address.h"
10
11 namespace {
12 bool IsValidSinkIdChar(char ch) {
mark a. foltz 2017/02/28 00:05:29 I would just simplify this to base::IsStringAscii
zhaobin 2017/02/28 18:46:28 Done.
13 return (('A' <= ch) && (ch <= 'Z')) || (('a' <= ch) && (ch <= 'z')) ||
zhaobin 2017/02/27 21:45:15 This check passes for our cloud view devices. Not
14 (('0' <= ch) && (ch <= '9')) || (ch == '+') || (ch == '/') ||
15 (ch == '-') || (ch == '_') || (ch == '.');
16 }
17 }
18
19 namespace media_router {
20
21 MediaSinkInternal::MediaSinkInternal(const MediaSink& sink) : sink_(sink) {}
22
23 MediaSinkInternal::MediaSinkInternal(const MediaSink& sink,
24 const DialSinkExtraData& dial_data)
25 : sink_(sink), dial_data_(dial_data) {}
26
27 MediaSinkInternal::MediaSinkInternal(const MediaSink& sink,
28 const CastSinkExtraData& cast_data)
29 : sink_(sink), cast_data_(cast_data) {}
30
31 MediaSinkInternal::MediaSinkInternal() = default;
32
33 MediaSinkInternal::MediaSinkInternal(const MediaSinkInternal& other) = default;
34
35 MediaSinkInternal::~MediaSinkInternal() = default;
36
37 MediaSinkInternal& MediaSinkInternal::operator=(
38 const MediaSinkInternal& other) = default;
39
40 void MediaSinkInternal::set_sink(const MediaSink& sink) {
41 sink_ = sink;
42 }
43
44 void MediaSinkInternal::set_dial_data(const DialSinkExtraData& dial_data) {
45 DCHECK(dial_data_ || !cast_data_);
46 dial_data_ = dial_data;
47 }
48
49 const DialSinkExtraData& MediaSinkInternal::dial_data() const {
50 DCHECK(is_dial_sink());
51 return *dial_data_;
52 }
53
54 void MediaSinkInternal::set_cast_data(const CastSinkExtraData& cast_data) {
55 DCHECK(cast_data_ || !dial_data_);
56 cast_data_ = cast_data;
57 }
58
59 const CastSinkExtraData& MediaSinkInternal::cast_data() const {
60 DCHECK(is_cast_sink());
61 return *cast_data_;
62 }
63
64 // static
65 bool MediaSinkInternal::IsValidSinkId(const std::string& sink_id) {
66 if (sink_id.empty())
67 return false;
68
69 bool is_valid = std::find_if(sink_id.begin(), sink_id.end(), [](char c) {
70 return !IsValidSinkIdChar(c);
71 }) == sink_id.end();
72
73 if (!is_valid)
74 DLOG(WARNING) << "Invalid [sink_id]: " << sink_id;
75
76 return is_valid;
77 }
78
79 bool MediaSinkInternal::IsValidIPAddress(const std::string& ip_address) {
80 net::IPAddress address;
81 if (!address.AssignFromIPLiteral(ip_address))
82 return false;
83
84 return address.IsValid();
85 }
86
87 DialSinkExtraData::DialSinkExtraData() = default;
88 DialSinkExtraData::DialSinkExtraData(const DialSinkExtraData& other) = default;
89 DialSinkExtraData::~DialSinkExtraData() = default;
90
91 CastSinkExtraData::CastSinkExtraData() = default;
92 CastSinkExtraData::CastSinkExtraData(const CastSinkExtraData& other) = default;
93 CastSinkExtraData::~CastSinkExtraData() = default;
94
95 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698