blob: c6cebd35b1a8867f2f93b99a48dddde602d488a4 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromeos/components/multidevice/remote_device_ref.h"
#include <sstream>
#include "base/base64.h"
#include "base/stl_util.h"
namespace chromeos {
namespace multidevice {
// static
std::string RemoteDeviceRef::TruncateDeviceIdForLogs(
const std::string& full_id) {
if (full_id.length() <= 10) {
return full_id;
}
return full_id.substr(0, 5) + "..." +
full_id.substr(full_id.length() - 5, full_id.length());
}
RemoteDeviceRef::RemoteDeviceRef(std::shared_ptr<RemoteDevice> remote_device)
: remote_device_(std::move(remote_device)) {}
RemoteDeviceRef::RemoteDeviceRef(const RemoteDeviceRef& other) = default;
RemoteDeviceRef::~RemoteDeviceRef() = default;
SoftwareFeatureState RemoteDeviceRef::GetSoftwareFeatureState(
const SoftwareFeature& software_feature) const {
if (!base::Contains(remote_device_->software_features, software_feature))
return SoftwareFeatureState::kNotSupported;
return remote_device_->software_features.at(software_feature);
}
std::string RemoteDeviceRef::GetDeviceId() const {
return remote_device_->GetDeviceId();
}
std::string RemoteDeviceRef::GetTruncatedDeviceIdForLogs() const {
return RemoteDeviceRef::TruncateDeviceIdForLogs(GetDeviceId());
}
std::string RemoteDeviceRef::GetInstanceIdDeviceIdForLogs() const {
std::stringstream ss;
ss << "{Instance ID: " << (instance_id().empty() ? "[empty]" : instance_id())
<< ", Device ID: "
<< (GetTruncatedDeviceIdForLogs().empty() ? "[empty]"
: GetTruncatedDeviceIdForLogs())
<< "}";
return ss.str();
}
bool RemoteDeviceRef::operator==(const RemoteDeviceRef& other) const {
return *remote_device_ == *other.remote_device_;
}
bool RemoteDeviceRef::operator!=(const RemoteDeviceRef& other) const {
return !(*this == other);
}
bool RemoteDeviceRef::operator<(const RemoteDeviceRef& other) const {
return *remote_device_ < *other.remote_device_;
}
const RemoteDevice& RemoteDeviceRef::GetRemoteDevice() const {
return *remote_device_;
}
} // namespace multidevice
} // namespace chromeos