shill: cellular: Recognize cellular devices using qmi_wwan driver.

BUG=chromium-os:35211
TEST=Tested the following:
1. Build and run unit tests.
2. Verify that shill creates a Cellular object for a device using the
   qmi_wwan driver.

Change-Id: If72a52f9ca26f97feb32c0bb34660038c407fb7b
Reviewed-on: https://gerrit.chromium.org/gerrit/35256
Reviewed-by: Darin Petkov <petkov@chromium.org>
Commit-Ready: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
diff --git a/device_info.cc b/device_info.cc
index 8fcf3e6..482349f 100644
--- a/device_info.cc
+++ b/device_info.cc
@@ -69,7 +69,8 @@
 const char *DeviceInfo::kModemDrivers[] = {
     "gobi",
     "QCUSBNet2k",
-    "GobiNet"
+    "GobiNet",
+    "qmi_wwan"
 };
 const char DeviceInfo::kTunDeviceName[] = "/dev/net/tun";
 const int DeviceInfo::kDelayedDeviceCreationSeconds = 5;
diff --git a/device_info_unittest.cc b/device_info_unittest.cc
index 48a336e..5f66a62 100644
--- a/device_info_unittest.cc
+++ b/device_info_unittest.cc
@@ -895,6 +895,11 @@
   EXPECT_EQ(Technology::kCellular, GetDeviceTechnology());
 }
 
+TEST_F(DeviceInfoTechnologyTest, CellularQmiWwan) {
+  CreateInfoSymLink("device/driver", "qmi_wwan");
+  EXPECT_EQ(Technology::kCellular, GetDeviceTechnology());
+}
+
 // Modem with absolute driver path with top-level tty file:
 //   /sys/class/net/dev0/device -> /sys/devices/virtual/0/00
 //   /sys/devices/virtual/0/00/driver -> /drivers/cdc_ether