cellular: Add error translation for Invalid APN for MM1.

BUG=chromium:286436
TEST=Manually connect to AT&T

Change-Id: Ifc4fe8c2bf101d5bc15a63722539643f97050203
Reviewed-on: https://chromium-review.googlesource.com/168658
Reviewed-by: Arman Uguray <armansito@chromium.org>
Tested-by: Thieu Le <thieule@chromium.org>
Commit-Queue: Thieu Le <thieule@chromium.org>
diff --git a/cellular_error_mm1.cc b/cellular_error_mm1.cc
index 1d5f790..8f9a763 100644
--- a/cellular_error_mm1.cc
+++ b/cellular_error_mm1.cc
@@ -18,15 +18,18 @@
 
 namespace {
 
+const char *kErrorGprsNotSubscribed =
+    MM_MOBILE_EQUIPMENT_ERROR_DBUS_PREFIX ".GprsServiceOptionNotSubscribed";
+
 const char *kErrorIncorrectPassword =
     MM_MOBILE_EQUIPMENT_ERROR_DBUS_PREFIX ".IncorrectPassword";
 
-const char *kErrorSimPuk =
-    MM_MOBILE_EQUIPMENT_ERROR_DBUS_PREFIX ".SimPuk";
-
 const char *kErrorSimPin =
     MM_MOBILE_EQUIPMENT_ERROR_DBUS_PREFIX ".SimPin";
 
+const char *kErrorSimPuk =
+    MM_MOBILE_EQUIPMENT_ERROR_DBUS_PREFIX ".SimPuk";
+
 }  // namespace
 
 // static
@@ -50,6 +53,8 @@
     type = Error::kPinRequired;
   else if (name == kErrorSimPuk)
     type = Error::kPinBlocked;
+  else if (name == kErrorGprsNotSubscribed)
+    type = Error::kInvalidApn;
   else
     type = Error::kOperationFailed;
 
diff --git a/cellular_error_unittest.cc b/cellular_error_unittest.cc
index de10f6c..ee8e56a 100644
--- a/cellular_error_unittest.cc
+++ b/cellular_error_unittest.cc
@@ -35,6 +35,10 @@
 const char kErrorSimPukMM1[] =
     "org.freedesktop.ModemManager1.Error.MobileEquipment.SimPuk";
 
+const char kErrorGprsNotSubscribedMM1[] =
+    "org.freedesktop.ModemManager1.Error.MobileEquipment."
+    "GprsServiceOptionNotSubscribed";
+
 const char kErrorMessage[] = "Some error message.";
 
 }  // namespace
@@ -104,9 +108,9 @@
   EXPECT_EQ(Error::kPinBlocked, shill_error.type());
 
   CellularError::FromMM1DBusError(
-      DBus::Error(kErrorGprsNotSubscribedMM, kErrorMessage),
+      DBus::Error(kErrorGprsNotSubscribedMM1, kErrorMessage),
       &shill_error);
-  EXPECT_EQ(Error::kOperationFailed, shill_error.type());
+  EXPECT_EQ(Error::kInvalidApn, shill_error.type());
 
   CellularError::FromMM1DBusError(
       DBus::Error(kErrorIncorrectPasswordMM, kErrorMessage),