Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / browser / local_discovery / device_description.cc
blobf3bd4974a293c21adc381d660f348b061c0509d1
1 // Copyright 2014 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.
5 #include "chrome/browser/local_discovery/device_description.h"
7 #include <vector>
9 #include "base/strings/string_number_conversions.h"
10 #include "base/strings/string_util.h"
11 #include "chrome/browser/local_discovery/privet_constants.h"
12 #include "chrome/common/local_discovery/service_discovery_client.h"
14 namespace local_discovery {
16 namespace {
18 std::string GetValueByName(const std::vector<std::string>& metadata,
19 const std::string& name) {
20 std::string prefix(name + "=");
21 for (const std::string& record : metadata) {
22 if (base::StartsWith(record, prefix,
23 base::CompareCase::INSENSITIVE_ASCII)) {
24 return record.substr(prefix.size());
27 return std::string();
30 } // namespace
32 DeviceDescription::DeviceDescription() : version(0) {
35 DeviceDescription::DeviceDescription(
36 const ServiceDescription& service_description) {
37 address = service_description.address;
39 const std::vector<std::string>& metadata = service_description.metadata;
40 if (!base::StringToInt(GetValueByName(metadata, kPrivetTxtKeyVersion),
41 &version)) {
42 version = 0;
44 name = GetValueByName(metadata, kPrivetTxtKeyName);
45 description = GetValueByName(metadata, kPrivetTxtKeyDescription);
46 if (version >= 3) {
47 type = GetValueByName(metadata, kPrivetTxtKeyDevicesClass);
48 id = GetValueByName(metadata, kPrivetTxtKeyGcdID);
49 } else {
50 type = GetValueByName(metadata, kPrivetTxtKeyType);
51 id = GetValueByName(metadata, kPrivetTxtKeyID);
55 DeviceDescription::~DeviceDescription() {
58 } // namespace local_discovery