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

Unified Diff: chrome/browser/local_discovery/device_description.cc

Issue 861523002: Updated parsing of PrivetV3 mDns record. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mon Jan 26 13:26:30 PST 2015 Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/local_discovery/device_description.cc
diff --git a/chrome/browser/local_discovery/device_description.cc b/chrome/browser/local_discovery/device_description.cc
index d2faed066544d1082ff9f8a6ed47ad6924906e76..71e748dbcc1a98c205027e4ea0b14276ef508516 100644
--- a/chrome/browser/local_discovery/device_description.cc
+++ b/chrome/browser/local_discovery/device_description.cc
@@ -15,66 +15,43 @@ namespace local_discovery {
namespace {
-DeviceDescription::ConnectionState
-ConnectionStateFromString(const std::string& str) {
- if (LowerCaseEqualsASCII(str, kPrivetConnectionStatusOnline)) {
- return DeviceDescription::ONLINE;
- } else if (LowerCaseEqualsASCII(str, kPrivetConnectionStatusOffline)) {
- return DeviceDescription::OFFLINE;
- } else if (LowerCaseEqualsASCII(str, kPrivetConnectionStatusConnecting)) {
- return DeviceDescription::CONNECTING;
- } else if (LowerCaseEqualsASCII(str, kPrivetConnectionStatusNotConfigured)) {
- return DeviceDescription::NOT_CONFIGURED;
+std::string GetValueByName(const std::vector<std::string>& metadata,
+ const std::string& name) {
+ std::string prefix(name + "=");
+ for (const std::string& record : metadata) {
+ if (StartsWithASCII(record, prefix, false)) {
+ return record.substr(prefix.size());
+ }
}
-
- return DeviceDescription::UNKNOWN;
+ return std::string();
}
} // namespace
-DeviceDescription::DeviceDescription()
- : version(0),
- connection_state(UNKNOWN) {
-}
-
-DeviceDescription::~DeviceDescription() {
+DeviceDescription::DeviceDescription() : version(0) {
}
-void DeviceDescription::FillFromServiceDescription(
+DeviceDescription::DeviceDescription(
const ServiceDescription& service_description) {
address = service_description.address;
- ip_address = service_description.ip_address;
- last_seen = service_description.last_seen;
-
- for (std::vector<std::string>::const_iterator i =
- service_description.metadata.begin();
- i != service_description.metadata.end();
- i++) {
- size_t equals_pos = i->find_first_of('=');
- if (equals_pos == std::string::npos)
- continue; // We do not parse non key-value TXT records
- std::string key = i->substr(0, equals_pos);
- std::string value = i->substr(equals_pos + 1);
-
- if (LowerCaseEqualsASCII(key, kPrivetTxtKeyVersion)) {
- if (!base::StringToInt(value, &version))
- continue; // Unknown version.
- } else if (LowerCaseEqualsASCII(key, kPrivetTxtKeyName)) {
- name = value;
- } else if (LowerCaseEqualsASCII(key, kPrivetTxtKeyDescription)) {
- description = value;
- } else if (LowerCaseEqualsASCII(key, kPrivetTxtKeyURL)) {
- url = value;
- } else if (LowerCaseEqualsASCII(key, kPrivetTxtKeyType)) {
- type = value;
- } else if (LowerCaseEqualsASCII(key, kPrivetTxtKeyID)) {
- id = value;
- } else if (LowerCaseEqualsASCII(key, kPrivetTxtKeyConnectionState)) {
- connection_state = ConnectionStateFromString(value);
- }
+ const std::vector<std::string>& metadata = service_description.metadata;
+ if (!base::StringToInt(GetValueByName(metadata, kPrivetTxtKeyVersion),
+ &version)) {
+ version = 0;
+ }
+ name = GetValueByName(metadata, kPrivetTxtKeyName);
+ description = GetValueByName(metadata, kPrivetTxtKeyDescription);
+ if (version >= 3) {
+ type = GetValueByName(metadata, kPrivetTxtKeyDevicesClass);
+ id = GetValueByName(metadata, kPrivetTxtKeyGcdID);
+ } else {
+ type = GetValueByName(metadata, kPrivetTxtKeyType);
+ id = GetValueByName(metadata, kPrivetTxtKeyID);
}
}
+DeviceDescription::~DeviceDescription() {
+}
} // namespace local_discovery
« no previous file with comments | « chrome/browser/local_discovery/device_description.h ('k') | chrome/browser/local_discovery/privet_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698