shill: suppress spurioius notifications
Suppress spurioius notifications of the Cellular.Family when
ModemManager reports changes in AccessTechnology that do not cause
changes to the Cellular.Family.
BUG=chromium-os:31114
TEST=use dbus-monitor --system to watch signals
Change-Id: I4404093575e3fb81ad6b609809a1554396230750
Reviewed-on: https://gerrit.chromium.org/gerrit/23144
Tested-by: Jason Glasgow <jglasgow@chromium.org>
Reviewed-by: Gary Morain <gmorain@chromium.org>
Commit-Ready: Jason Glasgow <jglasgow@chromium.org>
diff --git a/cellular_capability_universal_unittest.cc b/cellular_capability_universal_unittest.cc
index b504943..7a8d3df 100644
--- a/cellular_capability_universal_unittest.cc
+++ b/cellular_capability_universal_unittest.cc
@@ -371,6 +371,8 @@
EXPECT_EQ(MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN,
capability_->access_technologies_);
EXPECT_FALSE(capability_->sim_proxy_.get());
+ EXPECT_CALL(*device_adaptor_, EmitStringChanged(
+ flimflam::kTechnologyFamilyProperty, flimflam::kTechnologyFamilyGsm));
capability_->OnDBusPropertiesChanged(MM_DBUS_INTERFACE_MODEM,
modem_properties, vector<string>());
EXPECT_EQ(kAccessTechnologies, capability_->access_technologies_);
@@ -389,6 +391,37 @@
modem3gpp_properties,
vector<string>());
EXPECT_EQ(kImei, capability_->imei_);
+
+ // Expect to see changes when the family changes
+ modem_properties.clear();
+ modem_properties[MM_MODEM_PROPERTY_ACCESSTECHNOLOGIES].
+ writer().append_uint32(MM_MODEM_ACCESS_TECHNOLOGY_1XRTT);
+ EXPECT_CALL(*device_adaptor_, EmitStringChanged(
+ flimflam::kTechnologyFamilyProperty, flimflam::kTechnologyFamilyCdma)).
+ Times(1);
+ capability_->OnDBusPropertiesChanged(MM_DBUS_INTERFACE_MODEM,
+ modem_properties,
+ vector<string>());
+ // Back to LTE
+ modem_properties.clear();
+ modem_properties[MM_MODEM_PROPERTY_ACCESSTECHNOLOGIES].
+ writer().append_uint32(MM_MODEM_ACCESS_TECHNOLOGY_LTE);
+ EXPECT_CALL(*device_adaptor_, EmitStringChanged(
+ flimflam::kTechnologyFamilyProperty, flimflam::kTechnologyFamilyGsm)).
+ Times(1);
+ capability_->OnDBusPropertiesChanged(MM_DBUS_INTERFACE_MODEM,
+ modem_properties,
+ vector<string>());
+
+ // LTE & CDMA - the device adaptor should not be called!
+ modem_properties.clear();
+ modem_properties[MM_MODEM_PROPERTY_ACCESSTECHNOLOGIES].
+ writer().append_uint32(MM_MODEM_ACCESS_TECHNOLOGY_LTE |
+ MM_MODEM_ACCESS_TECHNOLOGY_1XRTT);
+ EXPECT_CALL(*device_adaptor_, EmitStringChanged(_, _)).Times(0);
+ capability_->OnDBusPropertiesChanged(MM_DBUS_INTERFACE_MODEM,
+ modem_properties,
+ vector<string>());
}
TEST_F(CellularCapabilityUniversalTest, SimPropertiesChanged) {