Commit 9056dc65 authored by mark a. foltz's avatar mark a. foltz Committed by Commit Bot

[Cast DevTools] Use friendly name in chrome:://inspect.

This patch updates chrome://inspect#devices to use the friendly (user-given)
name of the Cast device, which will allow developers to distinguish multiple
devices of the same model/type.

Bug: 658204
Change-Id: I34d1e31a2203f58ae948687f991ac68e5d14bb32
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1606183Reviewed-by: default avatarAndrey Kosyakov <caseq@chromium.org>
Commit-Queue: mark a. foltz <mfoltz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#664338}
parent 14f7a981
......@@ -57,6 +57,16 @@ std::unique_ptr<ServiceTxtRecordMap> ParseServiceTxtRecord(
return record_map;
}
// Returns the value in the TXT |record_map| for the two-character |key|, or
// |default_value| if |key| was not found.
std::string GetServiceMapValue(const ServiceTxtRecordMap& record_map,
const std::string& key,
const char* default_value) {
const auto it = record_map.find(key);
return (it != record_map.end() && !it->second.empty()) ? it->second
: default_value;
}
AndroidDeviceManager::DeviceInfo ServiceDescriptionToDeviceInfo(
const ServiceDescription& service_description) {
std::unique_ptr<ServiceTxtRecordMap> record_map =
......@@ -64,18 +74,10 @@ AndroidDeviceManager::DeviceInfo ServiceDescriptionToDeviceInfo(
AndroidDeviceManager::DeviceInfo device_info;
device_info.connected = true;
const auto it = record_map->find("md");
if (it != record_map->end() && !it->second.empty())
device_info.model = it->second;
else
device_info.model = kUnknownCastDevice;
device_info.model = GetServiceMapValue(*record_map, "md", kUnknownCastDevice);
AndroidDeviceManager::BrowserInfo browser_info;
browser_info.socket_name = base::NumberToString(kCastInspectPort);
browser_info.display_name =
base::SplitString(service_description.service_name, ".",
base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)[0];
browser_info.display_name = GetServiceMapValue(*record_map, "fn", "");
browser_info.type = AndroidDeviceManager::BrowserInfo::kTypeChrome;
device_info.browser_info.push_back(browser_info);
return device_info;
......@@ -88,6 +90,8 @@ AndroidDeviceManager::DeviceInfo ServiceDescriptionToDeviceInfo(
// DevTools ADB thread). Cancellable callbacks are necessary since
// CastDeviceProvider and ServiceDiscoveryDeviceLister are destroyed on
// different threads in undefined order.
//
// TODO(crbug.com/963216): Consolidate DNS-SD implementations for Cast.
class CastDeviceProvider::DeviceListerDelegate
: public ServiceDiscoveryDeviceLister::Delegate,
public base::SupportsWeakPtr<DeviceListerDelegate> {
......
......@@ -40,24 +40,25 @@ TEST(CastDeviceProviderTest, ServiceDiscovery) {
scoped_refptr<CastDeviceProvider> device_provider_ = new CastDeviceProvider();
// Create a cast service.
const std::string cast_service_display_name = "FakeCast1337";
const std::string cast_display_name = "FakeCast1337";
const std::string cast_service_type = "_googlecast._tcp.local";
const std::string cast_service_name = "abcdefgh";
const std::string cast_service_model = "Fake Cast Device";
ServiceDescription cast_service;
cast_service.service_name =
cast_service_display_name + "." + cast_service_type;
cast_service.service_name = cast_service_name + "." + cast_service_type;
cast_service.address = net::HostPortPair("192.168.1.101", 8009);
cast_service.metadata.push_back("id=0123456789abcdef0123456789abcdef");
cast_service.metadata.push_back("ve=00");
cast_service.metadata.push_back("md=" + cast_service_model);
cast_service.metadata.push_back("fn=" + cast_display_name);
ASSERT_TRUE(cast_service.ip_address.AssignFromIPLiteral("192.168.1.101"));
device_provider_->OnDeviceChanged(cast_service_type, true, cast_service);
BrowserInfo exp_browser_info;
exp_browser_info.socket_name = "9222";
exp_browser_info.display_name = cast_service_display_name;
exp_browser_info.display_name = cast_display_name; // From metadata::fn
exp_browser_info.type = BrowserInfo::kTypeChrome;
DeviceInfo expected;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment