shill: cellular: Instantiate and propagate CellularOperatorInfo object.
BUG=chrome-os-partner:11985
TEST=Build and run unit tests.
Change-Id: I7bf5d20a15eefe18f92951780f059bf5559bba5d
Reviewed-on: https://gerrit.chromium.org/gerrit/37362
Reviewed-by: Thieu Le <thieule@chromium.org>
Commit-Ready: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
diff --git a/cellular.cc b/cellular.cc
index 05ed26a..dd387dd 100644
--- a/cellular.cc
+++ b/cellular.cc
@@ -97,6 +97,7 @@
const string &owner,
const string &service,
const string &path,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db,
ProxyFactory *proxy_factory)
: Device(control_interface,
@@ -113,6 +114,7 @@
dbus_owner_(owner),
dbus_service_(service),
dbus_path_(path),
+ cellular_operator_info_(cellular_operator_info),
provider_db_(provider_db),
proxy_factory_(proxy_factory),
allow_roaming_(false) {
diff --git a/cellular.h b/cellular.h
index 860a10d..11a3684 100644
--- a/cellular.h
+++ b/cellular.h
@@ -23,6 +23,7 @@
namespace shill {
class CellularCapability;
+class CellularOperatorInfo;
class Error;
class ProxyFactory;
@@ -109,6 +110,7 @@
const std::string &owner,
const std::string &service,
const std::string &path,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db,
ProxyFactory *proxy_factory);
virtual ~Cellular();
@@ -150,6 +152,9 @@
bool IsModemRegistered() const;
static bool IsEnabledModemState(ModemState state);
+ CellularOperatorInfo *cellular_operator_info() const {
+ return cellular_operator_info_;
+ }
mobile_provider_db *provider_db() const { return provider_db_; }
const std::string &dbus_owner() const { return dbus_owner_; }
@@ -306,6 +311,7 @@
const std::string dbus_service_; // org.*.ModemManager*
const std::string dbus_path_; // ModemManager.Modem
+ CellularOperatorInfo *cellular_operator_info_;
mobile_provider_db *provider_db_;
ProxyFactory *proxy_factory_;
diff --git a/cellular_capability_cdma_unittest.cc b/cellular_capability_cdma_unittest.cc
index 7deaf90..493e75b 100644
--- a/cellular_capability_cdma_unittest.cc
+++ b/cellular_capability_cdma_unittest.cc
@@ -46,6 +46,7 @@
"",
"",
NULL,
+ NULL,
ProxyFactory::GetInstance())),
proxy_(new MockModemCDMAProxy()),
capability_(NULL) {}
diff --git a/cellular_capability_classic_unittest.cc b/cellular_capability_classic_unittest.cc
index 8678e18..03e81c6 100644
--- a/cellular_capability_classic_unittest.cc
+++ b/cellular_capability_classic_unittest.cc
@@ -72,6 +72,7 @@
"",
"",
NULL,
+ NULL,
&proxy_factory_)) {}
virtual ~CellularCapabilityTest() {
diff --git a/cellular_capability_gsm_unittest.cc b/cellular_capability_gsm_unittest.cc
index 5829ed9..a4e2914 100644
--- a/cellular_capability_gsm_unittest.cc
+++ b/cellular_capability_gsm_unittest.cc
@@ -76,6 +76,7 @@
"",
"",
NULL,
+ NULL,
&proxy_factory_)) {}
virtual ~CellularCapabilityGSMTest() {
diff --git a/cellular_capability_universal_unittest.cc b/cellular_capability_universal_unittest.cc
index 43dc71d..cf0b0c3 100644
--- a/cellular_capability_universal_unittest.cc
+++ b/cellular_capability_universal_unittest.cc
@@ -89,6 +89,7 @@
"",
"",
NULL,
+ NULL,
&proxy_factory_)),
service_(new MockCellularService(&control_,
&dispatcher_,
@@ -809,7 +810,7 @@
MM_MODEM_ACCESS_TECHNOLOGY_GSM | MM_MODEM_ACCESS_TECHNOLOGY_EVDOB,
MM_MODEM_ACCESS_TECHNOLOGY_GSM | MM_MODEM_ACCESS_TECHNOLOGY_1XRTT,
};
- for(size_t i = 0; i < arraysize(gsm_technologies); ++i) {
+ for (size_t i = 0; i < arraysize(gsm_technologies); ++i) {
capability_->access_technologies_ = gsm_technologies[i];
ASSERT_EQ(capability_->GetTypeString(), flimflam::kTechnologyFamilyGsm);
}
@@ -821,7 +822,7 @@
MM_MODEM_ACCESS_TECHNOLOGY_EVDOB | MM_MODEM_ACCESS_TECHNOLOGY_EVDO0,
MM_MODEM_ACCESS_TECHNOLOGY_1XRTT,
};
- for(size_t i = 0; i < arraysize(cdma_technologies); ++i) {
+ for (size_t i = 0; i < arraysize(cdma_technologies); ++i) {
capability_->access_technologies_ = cdma_technologies[i];
ASSERT_EQ(capability_->GetTypeString(), flimflam::kTechnologyFamilyCdma);
}
diff --git a/cellular_service_unittest.cc b/cellular_service_unittest.cc
index ccadc96..e01556a 100644
--- a/cellular_service_unittest.cc
+++ b/cellular_service_unittest.cc
@@ -41,6 +41,7 @@
"",
"",
NULL,
+ NULL,
ProxyFactory::GetInstance())),
service_(new CellularService(&control_, NULL, &metrics_, &manager_,
device_)),
diff --git a/cellular_unittest.cc b/cellular_unittest.cc
index 35bb403..373f6e5 100644
--- a/cellular_unittest.cc
+++ b/cellular_unittest.cc
@@ -73,6 +73,7 @@
"",
"",
NULL,
+ NULL,
ProxyFactory::GetInstance())) {}
virtual ~CellularPropertyTest() {}
@@ -140,6 +141,7 @@
kDBusService,
kDBusPath,
NULL,
+ NULL,
&proxy_factory_)) {}
virtual ~CellularTest() {
diff --git a/mock_cellular.cc b/mock_cellular.cc
index c631a8c..7b19f73 100644
--- a/mock_cellular.cc
+++ b/mock_cellular.cc
@@ -20,11 +20,12 @@
const std::string &owner,
const std::string &service,
const std::string &path,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db,
ProxyFactory *proxy_factory)
: Cellular(control_interface, dispatcher, metrics, manager, link_name,
address, interface_index, type, owner, service, path,
- provider_db, proxy_factory) {}
+ cellular_operator_info, provider_db, proxy_factory) {}
MockCellular::~MockCellular() {}
diff --git a/mock_cellular.h b/mock_cellular.h
index 8b5be05..9f5c381 100644
--- a/mock_cellular.h
+++ b/mock_cellular.h
@@ -27,6 +27,7 @@
const std::string &owner,
const std::string &service,
const std::string &path,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db,
ProxyFactory *proxy_factory);
virtual ~MockCellular();
diff --git a/mock_modem.cc b/mock_modem.cc
index ed9958d..2b4fa26 100644
--- a/mock_modem.cc
+++ b/mock_modem.cc
@@ -13,9 +13,10 @@
EventDispatcher *dispatcher,
Metrics *metrics,
Manager *manager,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db)
: Modem(owner, service, path, control_interface, dispatcher, metrics,
- manager, provider_db) {}
+ manager, cellular_operator_info, provider_db) {}
MockModem::~MockModem() {}
diff --git a/mock_modem.h b/mock_modem.h
index 3f850f9..3be85c8 100644
--- a/mock_modem.h
+++ b/mock_modem.h
@@ -3,7 +3,7 @@
// found in the LICENSE file.
#ifndef SHILL_MOCK_MODEM_H_
-#define SHILL_MOCK_MODEM_H_ 1
+#define SHILL_MOCK_MODEM_H_
#include <string>
@@ -22,6 +22,7 @@
EventDispatcher *dispatcher,
Metrics *metrics,
Manager *manager,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db);
virtual ~MockModem();
diff --git a/modem.cc b/modem.cc
index 053fcdc..7eb301c 100644
--- a/modem.cc
+++ b/modem.cc
@@ -31,6 +31,7 @@
EventDispatcher *dispatcher,
Metrics *metrics,
Manager *manager,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db)
: owner_(owner),
service_(service),
@@ -39,6 +40,7 @@
dispatcher_(dispatcher),
metrics_(metrics),
manager_(manager),
+ cellular_operator_info_(cellular_operator_info),
provider_db_(provider_db),
type_(Cellular::kTypeInvalid),
pending_device_info_(false),
@@ -91,6 +93,7 @@
owner_,
service_,
path_,
+ cellular_operator_info_,
provider_db_,
ProxyFactory::GetInstance());
}
diff --git a/modem.h b/modem.h
index 7b17108..d74061a 100644
--- a/modem.h
+++ b/modem.h
@@ -22,6 +22,7 @@
namespace shill {
+class CellularOperatorInfo;
class ControlInterface;
class EventDispatcher;
class Manager;
@@ -42,8 +43,9 @@
EventDispatcher *dispatcher,
Metrics *metrics,
Manager *manager,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db);
- ~Modem();
+ virtual ~Modem();
// Asynchronously initializes support for the modem.
// If the |properties| are valid and the MAC address is present,
@@ -72,6 +74,9 @@
EventDispatcher *dispatcher() const { return dispatcher_; }
Manager *manager() const { return manager_; }
Metrics *metrics() const { return metrics_; }
+ CellularOperatorInfo *cellular_operator_info() const {
+ return cellular_operator_info_;
+ }
mobile_provider_db *provider_db() const { return provider_db_; }
virtual Cellular *ConstructCellular(const std::string &link_name,
@@ -120,6 +125,7 @@
EventDispatcher *dispatcher_;
Metrics *metrics_;
Manager *manager_;
+ CellularOperatorInfo *cellular_operator_info_;
mobile_provider_db *provider_db_;
std::string link_name_;
Cellular::Type type_;
@@ -141,6 +147,7 @@
EventDispatcher *dispatcher,
Metrics *metrics,
Manager *manager,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db);
virtual ~ModemClassic();
@@ -165,6 +172,7 @@
EventDispatcher *dispatcher,
Metrics *metrics,
Manager *manager,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db);
virtual ~Modem1();
diff --git a/modem_1.cc b/modem_1.cc
index 9d5ef6f..1eea438 100644
--- a/modem_1.cc
+++ b/modem_1.cc
@@ -16,9 +16,11 @@
namespace shill {
namespace {
+
// The default place where the system keeps symbolic links for network device
const char kDefaultNetfilesPath[] = "/sys/class/net";
-} // namespace {}
+
+} // namespace
Modem1::Modem1(const string &owner,
const string &service,
@@ -27,9 +29,10 @@
EventDispatcher *dispatcher,
Metrics *metrics,
Manager *manager,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db)
: Modem(owner, service, path, control_interface, dispatcher, metrics,
- manager, provider_db),
+ manager, cellular_operator_info, provider_db),
netfiles_path_(kDefaultNetfilesPath) {
}
@@ -63,7 +66,7 @@
// FileEnumerator warns that it is a blocking interface; that
// shouldn't be a problem here.
file_util::FileEnumerator netfiles(netfiles_path_,
- false, // don't recurse
+ false, // don't recurse
file_util::FileEnumerator::DIRECTORIES);
for (FilePath link = netfiles.Next(); !link.empty(); link = netfiles.Next()) {
FilePath target;
diff --git a/modem_1_unittest.cc b/modem_1_unittest.cc
index a290ae7..c5b95ee 100644
--- a/modem_1_unittest.cc
+++ b/modem_1_unittest.cc
@@ -61,6 +61,7 @@
&dispatcher_,
&metrics_,
&manager_,
+ static_cast<CellularOperatorInfo *>(NULL),
static_cast<mobile_provider_db *>(NULL))) {}
virtual void SetUp();
virtual void TearDown();
diff --git a/modem_classic.cc b/modem_classic.cc
index bb320ff..2d55e3a 100644
--- a/modem_classic.cc
+++ b/modem_classic.cc
@@ -20,9 +20,10 @@
EventDispatcher *dispatcher,
Metrics *metrics,
Manager *manager,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db)
: Modem(owner, service, path, control_interface, dispatcher, metrics,
- manager, provider_db) {
+ manager, cellular_operator_info, provider_db) {
}
ModemClassic::~ModemClassic() {}
diff --git a/modem_info.cc b/modem_info.cc
index 59aa95e..e6d0139 100644
--- a/modem_info.cc
+++ b/modem_info.cc
@@ -4,28 +4,36 @@
#include "shill/modem_info.h"
+#include <base/file_path.h>
#include <mm/mm-modem.h>
#include <mobile_provider.h>
+#include "shill/cellular_operator_info.h"
#include "shill/logging.h"
#include "shill/modem_manager.h"
using std::string;
-namespace shill {
-
-const char ModemInfo::kCromoService[] = "org.chromium.ModemManager";
-const char ModemInfo::kCromoPath[] = "/org/chromium/ModemManager";
-
// TODO(rochberg): Fix modemmanager-next-interfaces ebuild to include
// these so that we can simply include ModemManager.h and use these
// defines
#define MM_DBUS_PATH "/org/freedesktop/ModemManager1"
#define MM_DBUS_SERVICE "org.freedesktop.ModemManager1"
-const char ModemInfo::kMobileProviderDBPath[] =
+namespace shill {
+
+namespace {
+
+const char kCromoService[] = "org.chromium.ModemManager";
+const char kCromoPath[] = "/org/chromium/ModemManager";
+
+const char kCellularOperatorInfoPath[] =
+ "/usr/share/shill/cellular_operator_info";
+const char kMobileProviderDBPath[] =
"/usr/share/mobile-broadband-provider-info/serviceproviders.bfd";
+} // namespace
+
ModemInfo::ModemInfo(ControlInterface *control_interface,
EventDispatcher *dispatcher,
Metrics *metrics,
@@ -44,6 +52,9 @@
}
void ModemInfo::Start() {
+ cellular_operator_info_.reset(new CellularOperatorInfo(glib_));
+ cellular_operator_info_->Load(FilePath(kCellularOperatorInfoPath));
+
// 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());
@@ -56,6 +67,7 @@
}
void ModemInfo::Stop() {
+ cellular_operator_info_.reset();
mobile_provider_close_db(provider_db_);
provider_db_ = NULL;
modem_managers_.reset();
@@ -78,6 +90,7 @@
metrics_,
manager_,
glib_,
+ cellular_operator_info_.get(),
provider_db_);
modem_managers_.push_back(manager); // Passes ownership.
manager->Start();
diff --git a/modem_info.h b/modem_info.h
index 18faeb3..f8596e9 100644
--- a/modem_info.h
+++ b/modem_info.h
@@ -2,11 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef SHILL_MODEM_INFO_
-#define SHILL_MODEM_INFO_
+#ifndef SHILL_MODEM_INFO_H_
+#define SHILL_MODEM_INFO_H_
#include <string>
+#include <base/memory/scoped_ptr.h>
#include <base/memory/scoped_vector.h>
#include <gtest/gtest_prod.h> // for FRIEND_TEST
@@ -14,6 +15,7 @@
namespace shill {
+class CellularOperatorInfo;
class ControlInterface;
class EventDispatcher;
class GLib;
@@ -43,10 +45,6 @@
typedef ScopedVector<ModemManager> ModemManagers;
- static const char kCromoService[];
- static const char kCromoPath[];
- static const char kMobileProviderDBPath[];
-
// Register and start new ModemManagers
template <class mm> void RegisterModemManager(const std::string &service,
const std::string &path);
@@ -58,6 +56,7 @@
Manager *manager_;
GLib *glib_;
+ scoped_ptr<CellularOperatorInfo> cellular_operator_info_;
std::string provider_db_path_; // For testing.
mobile_provider_db *provider_db_; // Database instance owned by |this|.
@@ -66,4 +65,4 @@
} // namespace shill
-#endif // SHILL_MODEM_INFO_
+#endif // SHILL_MODEM_INFO_H_
diff --git a/modem_manager.cc b/modem_manager.cc
index 2144f01..89a5ea3 100644
--- a/modem_manager.cc
+++ b/modem_manager.cc
@@ -7,6 +7,7 @@
#include <base/stl_util.h>
#include <mm/mm-modem.h>
+#include "shill/cellular_operator_info.h"
#include "shill/error.h"
#include "shill/logging.h"
#include "shill/modem.h"
@@ -26,6 +27,7 @@
Metrics *metrics,
Manager *manager,
GLib *glib,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db)
: proxy_factory_(ProxyFactory::GetInstance()),
service_(service),
@@ -36,6 +38,7 @@
metrics_(metrics),
manager_(manager),
glib_(glib),
+ cellular_operator_info_(cellular_operator_info),
provider_db_(provider_db) {}
ModemManager::~ModemManager() {
@@ -119,22 +122,25 @@
}
// ModemManagerClassic
-ModemManagerClassic::ModemManagerClassic(const string &service,
- const string &path,
- ControlInterface *control_interface,
- EventDispatcher *dispatcher,
- Metrics *metrics,
- Manager *manager,
- GLib *glib,
- mobile_provider_db *provider_db) :
- ModemManager(service,
- path,
- control_interface,
- dispatcher,
- metrics,
- manager,
- glib,
- provider_db) {}
+ModemManagerClassic::ModemManagerClassic(
+ const string &service,
+ const string &path,
+ ControlInterface *control_interface,
+ EventDispatcher *dispatcher,
+ Metrics *metrics,
+ Manager *manager,
+ GLib *glib,
+ CellularOperatorInfo *cellular_operator_info,
+ mobile_provider_db *provider_db)
+ : ModemManager(service,
+ path,
+ control_interface,
+ dispatcher,
+ metrics,
+ manager,
+ glib,
+ cellular_operator_info,
+ provider_db) {}
ModemManagerClassic::~ModemManagerClassic() {}
@@ -161,6 +167,7 @@
dispatcher(),
metrics(),
manager(),
+ cellular_operator_info(),
provider_db()));
RecordAddedModem(modem);
InitModemClassic(modem);
diff --git a/modem_manager.h b/modem_manager.h
index ad5d3ae..89f6b40 100644
--- a/modem_manager.h
+++ b/modem_manager.h
@@ -23,8 +23,8 @@
namespace shill {
+class CellularOperatorInfo;
class ControlInterface;
-
class DBusObjectManagerProxyInterface;
class DBusPropertiesProxyInterface;
class EventDispatcher;
@@ -46,6 +46,7 @@
Metrics *metrics,
Manager *manager,
GLib *glib,
+ CellularOperatorInfo *cellular_operator_info_,
mobile_provider_db *provider_db);
virtual ~ModemManager();
@@ -69,6 +70,9 @@
const std::string &service() const { return service_; }
const std::string &path() const { return path_; }
ProxyFactory *proxy_factory() const { return proxy_factory_; }
+ CellularOperatorInfo *cellular_operator_info() const {
+ return cellular_operator_info_;
+ }
mobile_provider_db *provider_db() const { return provider_db_; }
// Connect/Disconnect to a modem manager service.
@@ -126,6 +130,7 @@
Metrics *metrics_;
Manager *manager_;
GLib *glib_;
+ CellularOperatorInfo *cellular_operator_info_;
mobile_provider_db *provider_db_;
DISALLOW_COPY_AND_ASSIGN(ModemManager);
@@ -140,6 +145,7 @@
Metrics *metrics,
Manager *manager,
GLib *glib,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db);
virtual ~ModemManagerClassic();
@@ -173,6 +179,7 @@
Metrics *metrics,
Manager *manager,
GLib *glib,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db);
virtual ~ModemManager1();
diff --git a/modem_manager_1.cc b/modem_manager_1.cc
index 9d116db..6357d13 100644
--- a/modem_manager_1.cc
+++ b/modem_manager_1.cc
@@ -27,6 +27,7 @@
Metrics *metrics,
Manager *manager,
GLib *glib,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db)
: ModemManager(service,
path,
@@ -35,6 +36,7 @@
metrics,
manager,
glib,
+ cellular_operator_info,
provider_db),
weak_ptr_factory_(this) {}
@@ -76,6 +78,7 @@
dispatcher(),
metrics(),
manager(),
+ cellular_operator_info(),
provider_db()));
RecordAddedModem(modem1);
InitModem1(modem1, properties);
diff --git a/modem_manager_unittest.cc b/modem_manager_unittest.cc
index f61aaa5..4266737 100644
--- a/modem_manager_unittest.cc
+++ b/modem_manager_unittest.cc
@@ -40,6 +40,7 @@
Metrics *metrics,
Manager *manager,
GLib *glib,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db)
: ModemManager(service,
path,
@@ -48,6 +49,7 @@
metrics,
manager,
glib,
+ cellular_operator_info,
provider_db) {}
virtual ~ModemManagerCore() {}
@@ -65,8 +67,10 @@
virtual void SetUp() {
modem_.reset(new StrictModem(
kOwner, kService, kModemPath, &control_interface_, &dispatcher_,
- &metrics_, &manager_, static_cast<mobile_provider_db *>(NULL)));
+ &metrics_, &manager_, static_cast<CellularOperatorInfo *>(NULL),
+ static_cast<mobile_provider_db *>(NULL)));
}
+
protected:
static const char kService[];
static const char kPath[];
@@ -98,6 +102,7 @@
&metrics_,
&manager_,
&glib_,
+ NULL,
NULL) {}
virtual void TearDown() {
@@ -173,6 +178,7 @@
Metrics *metrics,
Manager *manager,
GLib *glib,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db) :
ModemManagerClassic(service,
path,
@@ -181,6 +187,7 @@
metrics,
manager,
glib,
+ cellular_operator_info,
provider_db) {}
MOCK_METHOD1(InitModemClassic, void(shared_ptr<ModemClassic>));
};
@@ -196,6 +203,7 @@
&metrics_,
&manager_,
&glib_,
+ NULL,
NULL),
proxy_(new MockModemManagerProxy()),
proxy_factory_(this) {
@@ -256,6 +264,7 @@
Metrics *metrics,
Manager *manager,
GLib *glib,
+ CellularOperatorInfo *cellular_operator_info,
mobile_provider_db *provider_db) :
ModemManager1(service,
path,
@@ -264,6 +273,7 @@
metrics,
manager,
glib,
+ cellular_operator_info,
provider_db) {}
MOCK_METHOD2(InitModem1, void(shared_ptr<Modem1>,
const DBusInterfaceToProperties &));
@@ -281,6 +291,7 @@
&metrics_,
&manager_,
&glib_,
+ NULL,
NULL),
proxy_(new MockDBusObjectManagerProxy()),
proxy_factory_(this) {
diff --git a/modem_unittest.cc b/modem_unittest.cc
index 5023e45..5648122 100644
--- a/modem_unittest.cc
+++ b/modem_unittest.cc
@@ -75,6 +75,7 @@
&dispatcher_,
&metrics_,
&manager_,
+ static_cast<CellularOperatorInfo *>(NULL),
static_cast<mobile_provider_db *>(NULL))) {}
virtual void SetUp();
virtual void TearDown();
@@ -170,6 +171,7 @@
kOwner,
kService,
kPath,
+ static_cast<CellularOperatorInfo *>(NULL),
static_cast<mobile_provider_db *>(NULL),
ProxyFactory::GetInstance());