diff options
author | stevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-16 17:21:46 +0000 |
---|---|---|
committer | stevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-16 17:21:46 +0000 |
commit | badba1ad344a4854a5b78112e1b83934c3dd7781 (patch) | |
tree | fd064978d492aa49f8e0859858d40b5902a94cdb /chromeos | |
parent | 21aac7ca45e56ae51b50840b5d1fbd7c97b01af4 (diff) | |
download | chromium_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.cc | 9 | ||||
-rw-r--r-- | chromeos/chromeos_switches.h | 3 | ||||
-rw-r--r-- | chromeos/network/network_state_handler.cc | 27 | ||||
-rw-r--r-- | chromeos/network/network_state_handler.h | 22 | ||||
-rw-r--r-- | chromeos/network/network_state_handler_unittest.cc | 2 |
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: |