summaryrefslogtreecommitdiffstats
path: root/chromeos
diff options
context:
space:
mode:
authorstevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-16 17:21:46 +0000
committerstevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-16 17:21:46 +0000
commitbadba1ad344a4854a5b78112e1b83934c3dd7781 (patch)
treefd064978d492aa49f8e0859858d40b5902a94cdb /chromeos
parent21aac7ca45e56ae51b50840b5d1fbd7c97b01af4 (diff)
downloadchromium_src-badba1ad344a4854a5b78112e1b83934c3dd7781.zip
chromium_src-badba1ad344a4854a5b78112e1b83934c3dd7781.tar.gz
chromium_src-badba1ad344a4854a5b78112e1b83934c3dd7781.tar.bz2
Add --enable-network-state-handler flag
Adds static Initialize() and Shutdown() metgods for NetworkStateHandler. BUG=none For about_flags: TBR=ben@chromium.org Review URL: https://codereview.chromium.org/11316032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@168232 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r--chromeos/chromeos_switches.cc9
-rw-r--r--chromeos/chromeos_switches.h3
-rw-r--r--chromeos/network/network_state_handler.cc27
-rw-r--r--chromeos/network/network_state_handler.h22
-rw-r--r--chromeos/network/network_state_handler_unittest.cc2
5 files changed, 52 insertions, 11 deletions
diff --git a/chromeos/chromeos_switches.cc b/chromeos/chromeos_switches.cc
index 8cb93ae..69f1c5f 100644
--- a/chromeos/chromeos_switches.cc
+++ b/chromeos/chromeos_switches.cc
@@ -7,14 +7,17 @@
namespace chromeos {
namespace switches {
+// Enables overriding the Chrome OS board type when running on Linux.
+const char kChromeOSReleaseBoard[] = "chromeos-release-board";
+
// Forces the stub implementation of dbus clients.
const char kDbusStub[] = "dbus-stub";
+// Enables the new NetworkStateHandler class.
+const char kEnableNewNetworkHandlers[] = "enable-new-network-handlers";
+
// Sends test messages on first call to RequestUpdate (stub only).
const char kSmsTestMessages[] = "sms-test-messages";
-// Enables overriding the Chrome OS board type when running on Linux.
-const char kChromeOSReleaseBoard[] = "chromeos-release-board";
-
} // namespace switches
} // namespace chromeos
diff --git a/chromeos/chromeos_switches.h b/chromeos/chromeos_switches.h
index 4a7e9f6..565121d 100644
--- a/chromeos/chromeos_switches.h
+++ b/chromeos/chromeos_switches.h
@@ -20,9 +20,10 @@ namespace switches {
// see chromeos::LoginUtil::GetOffTheRecordCommandLine().)
// Please keep alphabetized.
+CHROMEOS_EXPORT extern const char kChromeOSReleaseBoard[];
CHROMEOS_EXPORT extern const char kDbusStub[];
+CHROMEOS_EXPORT extern const char kEnableNewNetworkHandlers[];
CHROMEOS_EXPORT extern const char kSmsTestMessages[];
-CHROMEOS_EXPORT extern const char kChromeOSReleaseBoard[];
} // namespace switches
} // namespace chromeos
diff --git a/chromeos/network/network_state_handler.cc b/chromeos/network/network_state_handler.cc
index 7caf2f7..738d328 100644
--- a/chromeos/network/network_state_handler.cc
+++ b/chromeos/network/network_state_handler.cc
@@ -16,6 +16,8 @@
namespace chromeos {
+static NetworkStateHandler* g_network_state_handler = NULL;
+
NetworkStateHandler::NetworkStateHandler() {
}
@@ -24,11 +26,32 @@ NetworkStateHandler::~NetworkStateHandler() {
STLDeleteContainerPointers(device_list_.begin(), device_list_.end());
}
-void NetworkStateHandler::Init() {
+void NetworkStateHandler::InitShillPropertyHandler() {
shill_property_handler_.reset(new internal::ShillPropertyHandler(this));
shill_property_handler_->Init();
}
+// static
+void NetworkStateHandler::Initialize() {
+ CHECK(!g_network_state_handler);
+ g_network_state_handler = new NetworkStateHandler();
+ g_network_state_handler->InitShillPropertyHandler();
+}
+
+// static
+void NetworkStateHandler::Shutdown() {
+ CHECK(g_network_state_handler);
+ delete g_network_state_handler;
+ g_network_state_handler = NULL;
+}
+
+// static
+NetworkStateHandler* NetworkStateHandler::Get() {
+ CHECK(g_network_state_handler)
+ << "NetworkStateHandler::Get() called before Initialize()";
+ return g_network_state_handler;
+}
+
void NetworkStateHandler::AddObserver(NetworkStateHandlerObserver* observer) {
observers_.AddObserver(observer);
}
@@ -348,7 +371,7 @@ ManagedState* NetworkStateHandler::GetModifiableManagedState(
NetworkStateHandler::ManagedStateList* NetworkStateHandler::GetManagedList(
ManagedState::ManagedType type) {
- switch(type) {
+ switch (type) {
case ManagedState::MANAGED_TYPE_NETWORK:
return &network_list_;
case ManagedState::MANAGED_TYPE_DEVICE:
diff --git a/chromeos/network/network_state_handler.h b/chromeos/network/network_state_handler.h
index 91d54bf..d8c2d3d 100644
--- a/chromeos/network/network_state_handler.h
+++ b/chromeos/network/network_state_handler.h
@@ -28,6 +28,7 @@ namespace chromeos {
class DeviceState;
class NetworkState;
class NetworkStateHandlerObserver;
+class NetworkStateHandlerTest;
// Class for tracking the list of visible networks and their state.
//
@@ -45,11 +46,16 @@ class CHROMEOS_EXPORT NetworkStateHandler
typedef std::vector<ManagedState*> ManagedStateList;
typedef std::vector<const NetworkState*> NetworkStateList;
- NetworkStateHandler();
virtual ~NetworkStateHandler();
- // Initialize ShillPropertyHandler.
- void Init();
+ // Sets the global instance. Must be called before any calls to Get().
+ static void Initialize();
+
+ // Destroys the global instance.
+ static void Shutdown();
+
+ // Gets the global instance. Initialize() must be called first.
+ static NetworkStateHandler* Get();
// Add/remove observers.
void AddObserver(NetworkStateHandlerObserver* observer);
@@ -145,7 +151,15 @@ class CHROMEOS_EXPORT NetworkStateHandler
virtual void ManagedStateListChanged(
ManagedState::ManagedType type) OVERRIDE;
-private:
+ protected:
+ NetworkStateHandler();
+
+ // Called in Initialize(). Called explicitly by tests after adding
+ // test observers.
+ void InitShillPropertyHandler();
+
+ private:
+ friend class NetworkStateHandlerTest;
FRIEND_TEST_ALL_PREFIXES(NetworkStateHandlerTest, NetworkStateHandlerStub);
// Non-const getters for managed entries. These are const so that they can
diff --git a/chromeos/network/network_state_handler_unittest.cc b/chromeos/network/network_state_handler_unittest.cc
index fa68dac..915a187 100644
--- a/chromeos/network/network_state_handler_unittest.cc
+++ b/chromeos/network/network_state_handler_unittest.cc
@@ -115,7 +115,7 @@ class NetworkStateHandlerTest : public testing::Test {
test_observer_.reset(new TestObserver);
network_state_handler_.reset(new NetworkStateHandler);
network_state_handler_->AddObserver(test_observer_.get());
- network_state_handler_->Init();
+ network_state_handler_->InitShillPropertyHandler();
}
protected: