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

Unified Diff: chromeos/components/tether/device_status_util.cc

Issue 2917813002: [CrOS Tether] Move the DeviceStatus normalizer code from HostScanner into its own file. (Closed)
Patch Set: Fix spelling error typo. Created 3 years, 7 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: chromeos/components/tether/device_status_util.cc
diff --git a/chromeos/components/tether/device_status_util.cc b/chromeos/components/tether/device_status_util.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5d134a93c9db569a3bea4132e78ad1490b5db9b0
--- /dev/null
+++ b/chromeos/components/tether/device_status_util.cc
@@ -0,0 +1,62 @@
+// Copyright 2017 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/tether/device_status_util.h"
+
+namespace chromeos {
+
+namespace tether {
+
+namespace {
+
+const char kDefaultCellCarrierName[] = "unknown-carrier";
+
+// Android signal strength is measured between 0 and 4 (inclusive), but Chrome
+// OS signal strength is measured between 0 and 100 (inclusive). In order to
+// convert between Android signal strength to Chrome OS signal strength, the
+// value must be multiplied by the below value.
+const int32_t kAndroidTetherHostToChromeOSSignalStrengthMultiplier = 25;
+
+int32_t ForceBetweenZeroAndOneHundred(int32_t value) {
+ return std::min(std::max(value, 0), 100);
+}
+
+} // namespace
+
+void NormalizeDeviceStatus(const DeviceStatus& status,
+ std::string* carrier_out,
+ int32_t* battery_percentage_out,
+ int32_t* signal_strength_out) {
+ // Use a sentinel value if carrier information is not available. This value is
+ // special-cased and replaced with a localized string in the settings UI.
+ if (carrier_out) {
+ *carrier_out =
+ (!status.has_cell_provider() || status.cell_provider().empty())
+ ? kDefaultCellCarrierName
+ : status.cell_provider();
+ }
+
+ // If battery or signal strength are missing, assume they are 100. For
+ // battery percentage, force the value to be between 0 and 100. For signal
+ // strength, convert from Android signal strength to Chrome OS signal
+ // strength and force the value to be between 0 and 100.
+ if (battery_percentage_out) {
+ *battery_percentage_out =
+ status.has_battery_percentage()
+ ? ForceBetweenZeroAndOneHundred(status.battery_percentage())
+ : 100;
+ }
+ if (signal_strength_out) {
+ *signal_strength_out =
+ status.has_connection_strength()
+ ? ForceBetweenZeroAndOneHundred(
+ kAndroidTetherHostToChromeOSSignalStrengthMultiplier *
+ status.connection_strength())
+ : 100;
+ }
+}
+
+} // namespace tether
+
+} // namespace chromeos
« no previous file with comments | « chromeos/components/tether/device_status_util.h ('k') | chromeos/components/tether/device_status_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698