shill: Retrieve cellular signal strength in capability delegates.

Refactor only, no functional changes.

BUG=chromium-os:18735
TEST=unit tests

Change-Id: I71e5dce70fcb018a156229799a8e2e1c2bfa8e89
Reviewed-on: https://gerrit.chromium.org/gerrit/11480
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
Commit-Ready: Darin Petkov <petkov@chromium.org>
diff --git a/cellular_capability_cdma_unittest.cc b/cellular_capability_cdma_unittest.cc
index b340f84..7c98953 100644
--- a/cellular_capability_cdma_unittest.cc
+++ b/cellular_capability_cdma_unittest.cc
@@ -9,6 +9,7 @@
 #include <mm/mm-modem.h>
 
 #include "shill/cellular.h"
+#include "shill/cellular_service.h"
 #include "shill/error.h"
 #include "shill/event_dispatcher.h"
 #include "shill/mock_modem_cdma_proxy.h"
@@ -34,6 +35,10 @@
         proxy_(new MockModemCDMAProxy()),
         capability_(cellular_.get()) {}
 
+  virtual ~CellularCapabilityCDMATest() {
+    cellular_->service_ = NULL;
+  }
+
  protected:
   static const char kMEID[];
 
@@ -45,6 +50,15 @@
     cellular_->cdma_.registration_state_1x = state;
   }
 
+  void SetProxy() {
+    cellular_->set_modem_cdma_proxy(proxy_.release());
+  }
+
+  void SetService() {
+    cellular_->service_ = new CellularService(
+        &control_, &dispatcher_, NULL, cellular_);
+  }
+
   NiceMockControl control_;
   EventDispatcher dispatcher_;
   CellularRefPtr cellular_;
@@ -56,7 +70,7 @@
 
 TEST_F(CellularCapabilityCDMATest, GetIdentifiers) {
   EXPECT_CALL(*proxy_, MEID()).WillOnce(Return(kMEID));
-  cellular_->set_modem_cdma_proxy(proxy_.release());
+  SetProxy();
   capability_.GetIdentifiers();
   EXPECT_EQ(kMEID, cellular_->meid());
   capability_.GetIdentifiers();
@@ -96,4 +110,14 @@
             capability_.GetRoamingStateString());
 }
 
+TEST_F(CellularCapabilityCDMATest, GetSignalQuality) {
+  const int kStrength = 90;
+  EXPECT_CALL(*proxy_, GetSignalQuality()).WillOnce(Return(kStrength));
+  SetProxy();
+  SetService();
+  EXPECT_EQ(0, cellular_->service()->strength());
+  capability_.GetSignalQuality();
+  EXPECT_EQ(kStrength, cellular_->service()->strength());
+}
+
 }  // namespace shill