shill: cellular: Support Cellular.ProviderRequiresRoaming property.

BUG=chromium-os:32872
TEST=unit test, tested on device through list-devices and different SIMs.
CQ-DEPEND=I0df0b718bdecc7225fff7e67589ac5d31d593d1b

Change-Id: Idc957e3deb94ad8fcd511c933cc2bb0fbe4f31d1
Reviewed-on: https://gerrit.chromium.org/gerrit/33774
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Commit-Ready: Darin Petkov <petkov@chromium.org>
diff --git a/cellular_capability_universal_unittest.cc b/cellular_capability_universal_unittest.cc
index 3c57ba3..5f0cc2e 100644
--- a/cellular_capability_universal_unittest.cc
+++ b/cellular_capability_universal_unittest.cc
@@ -774,16 +774,31 @@
   ASSERT_EQ(capability_->GetTypeString(), "");
 }
 
+TEST_F(CellularCapabilityUniversalTest, AllowRoaming) {
+  EXPECT_FALSE(cellular_->allow_roaming_);
+  EXPECT_FALSE(capability_->provider_requires_roaming_);
+  EXPECT_FALSE(capability_->AllowRoaming());
+  capability_->provider_requires_roaming_ = true;
+  EXPECT_TRUE(capability_->AllowRoaming());
+  capability_->provider_requires_roaming_ = false;
+  cellular_->allow_roaming_ = true;
+  EXPECT_TRUE(capability_->AllowRoaming());
+}
+
 TEST_F(CellularCapabilityUniversalTest, SetHomeProvider) {
   static const char kTestCarrier[] = "The Cellular Carrier";
   static const char kCountry[] = "us";
   static const char kCode[] = "310160";
   capability_->imsi_ = "310240123456789";
 
+  EXPECT_FALSE(capability_->home_provider_);
+  EXPECT_FALSE(capability_->provider_requires_roaming_);
+
   capability_->SetHomeProvider();  // No mobile provider DB available.
   EXPECT_TRUE(cellular_->home_provider().GetName().empty());
   EXPECT_TRUE(cellular_->home_provider().GetCountry().empty());
   EXPECT_TRUE(cellular_->home_provider().GetCode().empty());
+  EXPECT_FALSE(capability_->provider_requires_roaming_);
 
   InitProviderDB();
   capability_->SetHomeProvider();
@@ -792,7 +807,7 @@
   EXPECT_EQ(kCode, cellular_->home_provider().GetCode());
   EXPECT_EQ(4, capability_->apn_list_.size());
   ASSERT_TRUE(capability_->home_provider_);
-  EXPECT_FALSE(capability_->home_provider_->requires_roaming);
+  EXPECT_FALSE(capability_->provider_requires_roaming_);
 
   Cellular::Operator oper;
   cellular_->set_home_provider(oper);
@@ -801,6 +816,7 @@
   EXPECT_EQ(kTestCarrier, cellular_->home_provider().GetName());
   EXPECT_EQ(kCountry, cellular_->home_provider().GetCountry());
   EXPECT_EQ(kCode, cellular_->home_provider().GetCode());
+  EXPECT_FALSE(capability_->provider_requires_roaming_);
 
   static const char kCubic[] = "Cubic";
   capability_->spn_ = kCubic;
@@ -808,7 +824,7 @@
   EXPECT_EQ(kCubic, cellular_->home_provider().GetName());
   EXPECT_EQ("", cellular_->home_provider().GetCode());
   ASSERT_TRUE(capability_->home_provider_);
-  EXPECT_TRUE(capability_->home_provider_->requires_roaming);
+  EXPECT_TRUE(capability_->provider_requires_roaming_);
 
   static const char kCUBIC[] = "CUBIC";
   capability_->spn_ = kCUBIC;
@@ -817,7 +833,7 @@
   EXPECT_EQ(kCUBIC, cellular_->home_provider().GetName());
   EXPECT_EQ("", cellular_->home_provider().GetCode());
   ASSERT_TRUE(capability_->home_provider_);
-  EXPECT_TRUE(capability_->home_provider_->requires_roaming);
+  EXPECT_TRUE(capability_->provider_requires_roaming_);
 }
 
 TEST_F(CellularCapabilityUniversalTest, UpdateOperatorInfo) {