shill: set ethernet_service signal strength to max. (so if it has to
compete with wifi_service, it isn't unfairly penalized.)

BUG=chromium-os:26529
TEST=unit tests

Collateral change: update WiFiService (and its unit tests) to
use Service::kStrengthMin and Service::kStrengthMax.

Change-Id: I208fd2ce7a8dba8dbd6c72ae2f8fdd8b90ed9c12
Reviewed-on: https://gerrit.chromium.org/gerrit/16403
Commit-Ready: mukesh agrawal <quiche@chromium.org>
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Tested-by: mukesh agrawal <quiche@chromium.org>
diff --git a/ethernet_service.cc b/ethernet_service.cc
index d67adae..dda7e1b 100644
--- a/ethernet_service.cc
+++ b/ethernet_service.cc
@@ -41,6 +41,7 @@
   set_connectable(true);
   set_auto_connect(true);
   set_friendly_name(GetStorageIdentifier());
+  SetStrength(kStrengthMax);
 }
 
 EthernetService::~EthernetService() { }
diff --git a/service.cc b/service.cc
index 1504677..e131b7e 100644
--- a/service.cc
+++ b/service.cc
@@ -75,6 +75,9 @@
 const char Service::kStorageType[] = "Type";
 const char Service::kStorageUIData[] = "UIData";
 
+const uint8 Service::kStrengthMax = 100;
+const uint8 Service::kStrengthMin = 0;
+
 // static
 unsigned int Service::serial_number_ = 0;
 
diff --git a/service.h b/service.h
index 4c9c5eb..b36889a 100644
--- a/service.h
+++ b/service.h
@@ -75,6 +75,9 @@
   static const char kStorageType[];
   static const char kStorageUIData[];
 
+  static const uint8 kStrengthMax;
+  static const uint8 kStrengthMin;
+
   enum ConnectFailure {
     kFailureUnknown,
     kFailureActivationFailure,
diff --git a/wifi_service.cc b/wifi_service.cc
index 90c2033..ba6df5f 100644
--- a/wifi_service.cc
+++ b/wifi_service.cc
@@ -670,10 +670,10 @@
     strength = 120 + signal_dbm;  // Call -20dBm "perfect".
   }
 
-  if (strength > 100) {
-    strength = 100;
-  } else if (strength < 0) {
-    strength = 0;
+  if (strength > kStrengthMax) {
+    strength = kStrengthMax;
+  } else if (strength < kStrengthMin) {
+    strength = kStrengthMin;
   }
   return strength;
 }
diff --git a/wifi_service.h b/wifi_service.h
index 4a95312..df4cfec 100644
--- a/wifi_service.h
+++ b/wifi_service.h
@@ -145,7 +145,8 @@
   static bool CheckWEPKeyIndex(const std::string &passphrase, Error *error);
   static bool CheckWEPPrefix(const std::string &passphrase, Error *error);
 
-  // Maps a signal value, in dBm, to a "strength" value, from 0-100.
+  // Maps a signal value, in dBm, to a "strength" value, from
+  // |Service::kStrengthMin| to |Service:kStrengthMax|.
   static uint8 SignalToStrength(int16 signal_dbm);
 
   // "wpa", "rsn" and "psk" are equivalent from a configuration perspective.
diff --git a/wifi_service_unittest.cc b/wifi_service_unittest.cc
index 1f602e5..31339a3 100644
--- a/wifi_service_unittest.cc
+++ b/wifi_service_unittest.cc
@@ -849,16 +849,16 @@
     int16 next_mapped =  WiFiService::SignalToStrength(i+1);
     EXPECT_LE(current_mapped, next_mapped)
         << "(original values " << i << " " << i+1 << ")";
-    EXPECT_GE(current_mapped, 0);
-    EXPECT_LE(current_mapped, 100);
+    EXPECT_GE(current_mapped, Service::kStrengthMin);
+    EXPECT_LE(current_mapped, Service::kStrengthMax);
   }
   for (int16 i = 1; i < std::numeric_limits<int16>::max(); ++i) {
     int16 current_mapped = WiFiService::SignalToStrength(i);
     int16 next_mapped =  WiFiService::SignalToStrength(i+1);
     EXPECT_LE(current_mapped, next_mapped)
         << "(original values " << i << " " << i+1 << ")";
-    EXPECT_GE(current_mapped, 0);
-    EXPECT_LE(current_mapped, 100);
+    EXPECT_GE(current_mapped, Service::kStrengthMin);
+    EXPECT_LE(current_mapped, Service::kStrengthMax);
   }
 }