shill: cellular: Remove dependence on provider_db.

The external library |provider_db| is no longer used, as it is superseded by
MobileOperatorInfo.

BUG=chromium:371630
TEST=(1) Run shill_unittests.
     (2) Run network_3GSmokeTest on a few modems.

Change-Id: Ia7099e9b9b6e13b713196272ea8dedf00a962a4b
Reviewed-on: https://chromium-review.googlesource.com/201103
Reviewed-by: Thieu Le <thieule@chromium.org>
Commit-Queue: Prathmesh Prabhu <pprabhu@chromium.org>
Tested-by: Prathmesh Prabhu <pprabhu@chromium.org>
diff --git a/cellular.h b/cellular.h
index 0599d65..7dc3b2a 100644
--- a/cellular.h
+++ b/cellular.h
@@ -22,8 +22,6 @@
 #include "shill/refptr_types.h"
 #include "shill/rpc_task.h"
 
-struct mobile_provider_db;
-
 namespace shill {
 
 class CellularCapability;
diff --git a/cellular_capability_gsm_unittest.cc b/cellular_capability_gsm_unittest.cc
index e654e03..e9f7f62 100644
--- a/cellular_capability_gsm_unittest.cc
+++ b/cellular_capability_gsm_unittest.cc
@@ -82,10 +82,6 @@
         dynamic_cast<DeviceMockAdaptor *>(cellular_->adaptor());
   }
 
-  void InitProviderDB() {
-    modem_info_.SetProviderDB(kTestMobileProviderDBPath);
-  }
-
   void InvokeEnable(bool enable, Error *error,
                     const ResultCallback &callback, int timeout) {
     callback.Run(Error());
diff --git a/cellular_capability_universal.cc b/cellular_capability_universal.cc
index 7b80646..b5378cc 100644
--- a/cellular_capability_universal.cc
+++ b/cellular_capability_universal.cc
@@ -138,7 +138,6 @@
       registration_state_(MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN),
       current_capabilities_(MM_MODEM_CAPABILITY_NONE),
       access_technologies_(MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN),
-      home_provider_info_(NULL),
       resetting_(false),
       subscription_state_(kSubscriptionStateUnknown),
       reset_done_(false),
diff --git a/cellular_capability_universal.h b/cellular_capability_universal.h
index 928c9e4..eb3d24a 100644
--- a/cellular_capability_universal.h
+++ b/cellular_capability_universal.h
@@ -417,7 +417,6 @@
   Cellular::Operator serving_operator_;
   std::string spn_;
   std::string operator_id_;
-  mobile_provider *home_provider_info_;
   std::string desired_network_;
 
   // Properties.
diff --git a/cellular_unittest.cc b/cellular_unittest.cc
index 0f6a4c6..ef6e259 100644
--- a/cellular_unittest.cc
+++ b/cellular_unittest.cc
@@ -197,10 +197,6 @@
     device_->set_serving_operator_info(mock_serving_operator_info_);
   }
 
-  void InitProviderDB() {
-    modem_info_.SetProviderDB(kTestMobileProviderDBPath);
-  }
-
   void InvokeEnable(bool enable, Error *error,
                     const ResultCallback &callback, int timeout) {
     callback.Run(Error());
@@ -678,7 +674,6 @@
 }
 
 TEST_F(CellularTest, StartGSMRegister) {
-  InitProviderDB();
   SetMockMobileOperatorInfoObjects();
   EXPECT_CALL(*proxy_, Enable(true, _, _, CellularCapability::kTimeoutEnable))
       .WillOnce(Invoke(this, &CellularTest::InvokeEnable));
diff --git a/mock_modem_info.cc b/mock_modem_info.cc
index c93d034..83da1b9 100644
--- a/mock_modem_info.cc
+++ b/mock_modem_info.cc
@@ -54,12 +54,4 @@
   }
 }
 
-void MockModemInfo::SetProviderDB(const char *provider_db_path) {
-  mobile_provider_db *provider_db =
-      mobile_provider_open_db(provider_db_path);
-  ASSERT_TRUE(provider_db);
-  // Assumes ownership.
-  set_mobile_provider_db(provider_db);
-}
-
 }  // namespace shill
diff --git a/mock_modem_info.h b/mock_modem_info.h
index a96a1bb..f62e89c 100644
--- a/mock_modem_info.h
+++ b/mock_modem_info.h
@@ -37,10 +37,6 @@
   // The following are always replaced by mocks: pending_activation_store.
   void SetMockMembers();
 
-  // Create a new provider_db and set it in ModemInfo.
-  // ModemInfo takes ownership.
-  void SetProviderDB(const char *provider_db_path);
-
   // Accessors for mock objects
   MockPendingActivationStore* mock_pending_activation_store() const {
     return mock_pending_activation_store_;
diff --git a/modem.h b/modem.h
index 213ae59..ccd92d8 100644
--- a/modem.h
+++ b/modem.h
@@ -19,8 +19,6 @@
 #include "shill/modem_info.h"
 #include "shill/refptr_types.h"
 
-struct mobile_provider_db;
-
 namespace shill {
 
 class ProxyFactory;
diff --git a/modem_info.cc b/modem_info.cc
index eee6266..ce7478e 100644
--- a/modem_info.cc
+++ b/modem_info.cc
@@ -18,13 +18,6 @@
 
 namespace shill {
 
-namespace {
-
-const char kMobileProviderDBPath[] =
-    "/usr/share/mobile-broadband-provider-info/serviceproviders.bfd";
-
-}  // namespace
-
 ModemInfo::ModemInfo(ControlInterface *control_interface,
                      EventDispatcher *dispatcher,
                      Metrics *metrics,
@@ -34,9 +27,7 @@
       dispatcher_(dispatcher),
       metrics_(metrics),
       manager_(manager),
-      glib_(glib),
-      provider_db_path_(kMobileProviderDBPath),
-      provider_db_(NULL) {}
+      glib_(glib) {}
 
 ModemInfo::~ModemInfo() {
   Stop();
@@ -47,12 +38,6 @@
   pending_activation_store_->InitStorage(manager_->glib(),
       manager_->storage_path());
 
-  // TODO(petkov): Consider initializing the mobile provider database lazily
-  // only if a GSM modem needs to be registered.
-  provider_db_ = mobile_provider_open_db(provider_db_path_.c_str());
-  PLOG_IF(WARNING, !provider_db_)
-      << "Unable to load mobile provider database: ";
-
   RegisterModemManager(new ModemManagerClassic(cromo::kCromoServiceName,
                                                cromo::kCromoServicePath,
                                                this));
@@ -64,9 +49,6 @@
 
 void ModemInfo::Stop() {
   pending_activation_store_.reset();
-  if(provider_db_)
-    mobile_provider_close_db(provider_db_);
-  provider_db_ = NULL;
   modem_managers_.clear();
 }
 
diff --git a/modem_info.h b/modem_info.h
index c25a94a..8d75846 100644
--- a/modem_info.h
+++ b/modem_info.h
@@ -11,8 +11,6 @@
 #include <base/memory/scoped_vector.h>
 #include <gtest/gtest_prod.h>  // for FRIEND_TEST
 
-struct mobile_provider_db;
-
 namespace shill {
 
 class ControlInterface;
@@ -46,7 +44,6 @@
   PendingActivationStore *pending_activation_store() const {
     return pending_activation_store_.get();
   }
-  mobile_provider_db *provider_db() const { return provider_db_; }
 
  protected:
   // Write accessors for unit-tests.
@@ -67,9 +64,6 @@
   }
   void set_pending_activation_store(
       PendingActivationStore *pending_activation_store);
-  void set_mobile_provider_db(mobile_provider_db *provider_db) {
-    provider_db_ = provider_db;
-  }
 
  private:
   friend class ModemInfoTest;
@@ -90,8 +84,6 @@
 
   // Post-payment activation state of the modem.
   scoped_ptr<PendingActivationStore> pending_activation_store_;
-  std::string provider_db_path_;  // For testing.
-  mobile_provider_db *provider_db_;  // Database instance owned by |this|.
 
   DISALLOW_COPY_AND_ASSIGN(ModemInfo);
 };
diff --git a/modem_info_unittest.cc b/modem_info_unittest.cc
index e4bb46c..4325dbe 100644
--- a/modem_info_unittest.cc
+++ b/modem_info_unittest.cc
@@ -40,8 +40,6 @@
   }
 
  protected:
-  static const char kTestMobileProviderDBPath[];
-
   MockGLib glib_;
   MockControl control_interface_;
   EventDispatcher dispatcher_;
@@ -51,32 +49,21 @@
   ModemInfo modem_info_;
 };
 
-const char ModemInfoTest::kTestMobileProviderDBPath[] =
-    "provider_db_unittest.bfd";
-
 TEST_F(ModemInfoTest, StartStop) {
   EXPECT_EQ(0, modem_info_.modem_managers_.size());
   EXPECT_CALL(*dbus_service_proxy_,
               GetNameOwner("org.chromium.ModemManager", _, _, _));
   EXPECT_CALL(*dbus_service_proxy_,
               GetNameOwner("org.freedesktop.ModemManager1", _, _, _));
-  modem_info_.provider_db_path_ = kTestMobileProviderDBPath;
   modem_info_.Start();
   EXPECT_EQ(2, modem_info_.modem_managers_.size());
-  EXPECT_TRUE(modem_info_.provider_db_);
-  EXPECT_TRUE(mobile_provider_lookup_by_name(modem_info_.provider_db_, "AT&T"));
-  EXPECT_FALSE(mobile_provider_lookup_by_name(modem_info_.provider_db_, "xyz"));
   modem_info_.Stop();
   EXPECT_EQ(0, modem_info_.modem_managers_.size());
-  EXPECT_FALSE(modem_info_.provider_db_);
 }
 
 TEST_F(ModemInfoTest, RegisterModemManager) {
   static const char kService[] = "some.dbus.service";
   EXPECT_CALL(*dbus_service_proxy_, GetNameOwner(kService, _, _, _));
-  // Passes ownership of the database.
-  modem_info_.provider_db_ = mobile_provider_open_db(kTestMobileProviderDBPath);
-  EXPECT_TRUE(modem_info_.provider_db_);
   modem_info_.RegisterModemManager(
       new ModemManagerClassic(kService, "/dbus/service/path", &modem_info_));
   ASSERT_EQ(1, modem_info_.modem_managers_.size());
diff --git a/modem_manager.h b/modem_manager.h
index 361cb80..c22d5d8 100644
--- a/modem_manager.h
+++ b/modem_manager.h
@@ -20,8 +20,6 @@
 #include "shill/glib.h"
 #include "shill/modem_info.h"
 
-struct mobile_provider_db;
-
 namespace shill {
 
 class DBusNameWatcher;
diff --git a/shill.gyp b/shill.gyp
index c8201c6..78d1c2b 100644
--- a/shill.gyp
+++ b/shill.gyp
@@ -208,11 +208,6 @@
           'dependencies': [
             '../common-mk/external_dependencies.gyp:modemmanager-dbus-proxies',
           ],
-          'link_settings': {
-            'libraries': [
-              '-lmobile-provider'
-            ],
-          },
           'variables': {
             'deps': [
               'ModemManager',