diff options
author | ygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-22 10:35:11 +0000 |
---|---|---|
committer | ygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-22 10:35:11 +0000 |
commit | c4e31cf2ce7a1d8f6424c475e742c12286860c3c (patch) | |
tree | cbd3bde04954000749f9c5e878c500c14775c148 | |
parent | 8e4dafff431b9d65c57a77a767d99d3f6edd8df5 (diff) | |
download | chromium_src-c4e31cf2ce7a1d8f6424c475e742c12286860c3c.zip chromium_src-c4e31cf2ce7a1d8f6424c475e742c12286860c3c.tar.gz chromium_src-c4e31cf2ce7a1d8f6424c475e742c12286860c3c.tar.bz2 |
Refactoring of the NetworkPortalDetector. Observers of the
NetworkPortalDetector explicitly unsubscribe themselves during
destruction.
BUG=302812
TEST=unit_tests:NetworkPortalDetector*
Review URL: https://codereview.chromium.org/26657004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@230096 0039d316-1c4b-4281-b951-d872f2087c98
18 files changed, 168 insertions, 175 deletions
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc index 95cd810..e5559b1 100644 --- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc +++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc @@ -570,6 +570,26 @@ void ChromeBrowserMainPartsChromeos::PostProfileInit() { UserManager::Get()->RestoreActiveSessions(); } + // Initialize the network portal detector for Chrome OS. The network + // portal detector starts to listen for notifications from + // NetworkStateHandler and initiates captive portal detection for + // active networks. Shoule be called before call to + // OptionallyRunChromeOSLoginManager, because it depends on + // NetworkPortalDetector. + NetworkPortalDetector::Initialize(); + { + NetworkPortalDetector* detector = NetworkPortalDetector::Get(); +#if defined(GOOGLE_CHROME_BUILD) + bool is_official_build = true; +#else + bool is_official_build = false; +#endif + // Enable portal detector if EULA was previously accepted or if + // this is an unofficial build. + if (!is_official_build || StartupUtils::IsEulaAccepted()) + detector->Enable(true); + } + // Tests should be able to tune login manager before showing it. // Thus only show login manager in normal (non-testing) mode. if (!parameters().ui_task || @@ -588,23 +608,6 @@ void ChromeBrowserMainPartsChromeos::PostProfileInit() { peripheral_battery_observer_.reset(new PeripheralBatteryObserver()); - // Initialize the network portal detector for Chrome OS. The network portal - // detector starts to listen for notifications from NetworkStateHandler and - // initiates captive portal detection for active networks. - NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance(); - if (NetworkPortalDetector::IsEnabledInCommandLine() && detector) { - detector->Init(); -#if defined(GOOGLE_CHROME_BUILD) - bool is_official_build = true; -#else - bool is_official_build = false; -#endif - // Enable portal detector if EULA was previously accepted or if - // this is an unofficial build. - if (!is_official_build || StartupUtils::IsEulaAccepted()) - detector->Enable(true); - } - display_configuration_observer_.reset( new DisplayConfigurationObserver()); @@ -680,10 +683,6 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() { if (NetworkChangeNotifierFactoryChromeos::GetInstance()) NetworkChangeNotifierFactoryChromeos::GetInstance()->Shutdown(); - NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance(); - if (NetworkPortalDetector::IsEnabledInCommandLine() && detector) - detector->Shutdown(); - // Destroy UI related classes before destroying services that they may // depend on. data_promo_notification_.reset(); @@ -750,6 +749,12 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() { // http://crbug.com/243364). ChromeBrowserMainPartsLinux::PostMainMessageLoopRun(); + // Called after + // ChromeBrowserMainPartsLinux::PostMainMessageLoopRun() to be + // executed after execution of chrome::CloseAsh(), because some + // parts of WebUI depends on NetworkPortalDetector. + NetworkPortalDetector::Shutdown(); + UserManager::Destroy(); } diff --git a/chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc b/chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc index 671b19c..043a536 100644 --- a/chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc +++ b/chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc @@ -96,8 +96,7 @@ LocallyManagedUserCreationScreen::~LocallyManagedUserCreationScreen() { actor_->SetDelegate(NULL); if (image_decoder_.get()) image_decoder_->set_delegate(NULL); - if (NetworkPortalDetector::GetInstance()) - NetworkPortalDetector::GetInstance()->RemoveObserver(this); + NetworkPortalDetector::Get()->RemoveObserver(this); } void LocallyManagedUserCreationScreen::PrepareToShow() { @@ -116,9 +115,8 @@ void LocallyManagedUserCreationScreen::Show() { actor_->ShowIntroPage(); } - NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance(); - if (detector && !on_error_screen_) - detector->AddAndFireObserver(this); + if (!on_error_screen_) + NetworkPortalDetector::Get()->AddAndFireObserver(this); on_error_screen_ = false; } @@ -161,9 +159,8 @@ void LocallyManagedUserCreationScreen::ShowInitialScreen() { void LocallyManagedUserCreationScreen::Hide() { if (actor_) actor_->Hide(); - NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance(); - if (detector && !on_error_screen_) - detector->RemoveObserver(this); + if (!on_error_screen_) + NetworkPortalDetector::Get()->RemoveObserver(this); } std::string LocallyManagedUserCreationScreen::GetName() const { diff --git a/chrome/browser/chromeos/login/managed/supervised_user_creation_browsertest.cc b/chrome/browser/chromeos/login/managed/supervised_user_creation_browsertest.cc index 4d3aade..def99d6 100644 --- a/chrome/browser/chromeos/login/managed/supervised_user_creation_browsertest.cc +++ b/chrome/browser/chromeos/login/managed/supervised_user_creation_browsertest.cc @@ -15,7 +15,7 @@ #include "chrome/browser/chromeos/login/login_manager_test.h" #include "chrome/browser/chromeos/login/startup_utils.h" #include "chrome/browser/chromeos/login/webui_login_view.h" -#include "chrome/browser/chromeos/net/network_portal_detector_stub.h" +#include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" #include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h" #include "chrome/browser/managed_mode/managed_user_registration_utility.h" #include "chrome/browser/managed_mode/managed_user_registration_utility_stub.h" @@ -46,7 +46,7 @@ class SupervisedUserTest : public chromeos::LoginManagerTest { protected: SupervisedUserTest() : LoginManagerTest(true), mock_async_method_caller_(NULL), - network_portal_detector_stub_(NULL), + network_portal_detector_(NULL), registration_utility_stub_(NULL) { } @@ -70,15 +70,14 @@ class SupervisedUserTest : public chromeos::LoginManagerTest { // Setup network portal detector to return online state for both // ethernet and wifi networks. Ethernet is an active network by // default. - network_portal_detector_stub_ = - static_cast<NetworkPortalDetectorStub*>( - NetworkPortalDetector::GetInstance()); + network_portal_detector_ = new NetworkPortalDetectorTestImpl(); + NetworkPortalDetector::InitializeForTesting(network_portal_detector_); NetworkPortalDetector::CaptivePortalState online_state; online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; online_state.response_code = 204; - network_portal_detector_stub_->SetDefaultNetworkPathForTesting( + network_portal_detector_->SetDefaultNetworkPathForTesting( kStubEthernetServicePath); - network_portal_detector_stub_->SetDetectionResultsForTesting( + network_portal_detector_->SetDetectionResultsForTesting( kStubEthernetServicePath, online_state); } @@ -93,6 +92,10 @@ class SupervisedUserTest : public chromeos::LoginManagerTest { LoginManagerTest::TearDown(); } + virtual void TearDownInProcessBrowserTestFixture() OVERRIDE { + NetworkPortalDetector::Shutdown(); + } + void JSEval(const std::string& script) { EXPECT_TRUE(content::ExecuteScript(web_contents(), script)); } @@ -126,7 +129,7 @@ class SupervisedUserTest : public chromeos::LoginManagerTest { protected: cryptohome::MockAsyncMethodCaller* mock_async_method_caller_; - NetworkPortalDetectorStub* network_portal_detector_stub_; + NetworkPortalDetectorTestImpl* network_portal_detector_; ManagedUserRegistrationUtilityStub* registration_utility_stub_; scoped_ptr<ScopedTestingManagedUserRegistrationUtility> scoped_utility_; diff --git a/chrome/browser/chromeos/login/oauth2_login_verifier.cc b/chrome/browser/chromeos/login/oauth2_login_verifier.cc index 64f21d6..dca159f 100644 --- a/chrome/browser/chromeos/login/oauth2_login_verifier.cc +++ b/chrome/browser/chromeos/login/oauth2_login_verifier.cc @@ -62,7 +62,7 @@ void OAuth2LoginVerifier::VerifyProfileTokens(Profile* profile) { // portal. const NetworkState* default_network = NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); - NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance(); + NetworkPortalDetector* detector = NetworkPortalDetector::Get(); NetworkPortalDetector::CaptivePortalState state = detector->GetCaptivePortalState(default_network); if (!default_network || diff --git a/chrome/browser/chromeos/login/screens/update_screen.cc b/chrome/browser/chromeos/login/screens/update_screen.cc index 240bd8f..8e4b07a 100644 --- a/chrome/browser/chromeos/login/screens/update_screen.cc +++ b/chrome/browser/chromeos/login/screens/update_screen.cc @@ -115,8 +115,7 @@ UpdateScreen::UpdateScreen( UpdateScreen::~UpdateScreen() { DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this); - if (NetworkPortalDetector::GetInstance()) - NetworkPortalDetector::GetInstance()->RemoveObserver(this); + NetworkPortalDetector::Get()->RemoveObserver(this); GetInstanceSet().erase(this); if (actor_) actor_->SetDelegate(NULL); @@ -253,12 +252,11 @@ void UpdateScreen::OnPortalDetectionCompleted( state.status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE) && is_first_detection_notification_) { is_first_detection_notification_ = false; - NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance(); base::MessageLoop::current()->PostTask( FROM_HERE, base::Bind( base::IgnoreResult(&NetworkPortalDetector::StartDetectionIfIdle), - base::Unretained(detector))); + base::Unretained(NetworkPortalDetector::Get()))); return; } is_first_detection_notification_ = false; @@ -284,12 +282,10 @@ void UpdateScreen::OnPortalDetectionCompleted( } void UpdateScreen::StartNetworkCheck() { - NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance(); - // If portal detector is enabled and portal detection before AU is // allowed, initiate network state check. Otherwise, directly // proceed to update. - if (!NetworkPortalDetector::IsEnabledInCommandLine() || !detector || + if (!NetworkPortalDetector::Get()->IsEnabled() || !IsBlockingUpdateEnabledInCommandLine()) { StartUpdateCheck(); return; @@ -297,7 +293,7 @@ void UpdateScreen::StartNetworkCheck() { state_ = STATE_FIRST_PORTAL_CHECK; is_first_detection_notification_ = true; is_first_portal_notification_ = true; - detector->AddAndFireObserver(this); + NetworkPortalDetector::Get()->AddAndFireObserver(this); } void UpdateScreen::CancelUpdate() { @@ -330,8 +326,7 @@ void UpdateScreen::PrepareToShow() { void UpdateScreen::ExitUpdate(UpdateScreen::ExitReason reason) { DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this); - if (NetworkPortalDetector::GetInstance()) - NetworkPortalDetector::GetInstance()->RemoveObserver(this); + NetworkPortalDetector::Get()->RemoveObserver(this); switch (reason) { case REASON_UPDATE_CANCELED: @@ -483,9 +478,7 @@ ErrorScreen* UpdateScreen::GetErrorScreen() { } void UpdateScreen::StartUpdateCheck() { - NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance(); - if (detector) - detector->RemoveObserver(this); + NetworkPortalDetector::Get()->RemoveObserver(this); if (state_ == STATE_ERROR) HideErrorMessage(); state_ = STATE_UPDATE; diff --git a/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc index f025c94..55915ab 100644 --- a/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc @@ -10,7 +10,7 @@ #include "chrome/browser/chromeos/login/wizard_controller.h" #include "chrome/browser/chromeos/login/wizard_in_process_browser_test.h" #include "chrome/browser/chromeos/net/network_portal_detector.h" -#include "chrome/browser/chromeos/net/network_portal_detector_stub.h" +#include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" #include "chromeos/chromeos_switches.h" #include "chromeos/dbus/fake_dbus_thread_manager.h" #include "chromeos/dbus/fake_update_engine_client.h" @@ -37,7 +37,7 @@ class UpdateScreenTest : public WizardInProcessBrowserTest { public: UpdateScreenTest() : WizardInProcessBrowserTest("update"), fake_update_engine_client_(NULL), - network_portal_detector_stub_(NULL) { + network_portal_detector_(NULL) { } protected: @@ -53,9 +53,8 @@ class UpdateScreenTest : public WizardInProcessBrowserTest { // Setup network portal detector to return online state for both // ethernet and wifi networks. Ethernet is an active network by // default. - network_portal_detector_stub_ = - static_cast<NetworkPortalDetectorStub*>( - NetworkPortalDetector::GetInstance()); + network_portal_detector_ = new NetworkPortalDetectorTestImpl(); + NetworkPortalDetector::InitializeForTesting(network_portal_detector_); NetworkPortalDetector::CaptivePortalState online_state; online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; online_state.response_code = 204; @@ -87,27 +86,28 @@ class UpdateScreenTest : public WizardInProcessBrowserTest { } virtual void TearDownInProcessBrowserTestFixture() OVERRIDE { + NetworkPortalDetector::Shutdown(); WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture(); DBusThreadManager::Shutdown(); } void SetDefaultNetworkPath(const std::string& service_path) { - DCHECK(network_portal_detector_stub_); - network_portal_detector_stub_->SetDefaultNetworkPathForTesting( + DCHECK(network_portal_detector_); + network_portal_detector_->SetDefaultNetworkPathForTesting( service_path); } void SetDetectionResults( const std::string& service_path, const NetworkPortalDetector::CaptivePortalState& state) { - DCHECK(network_portal_detector_stub_); - network_portal_detector_stub_->SetDetectionResultsForTesting(service_path, - state); + DCHECK(network_portal_detector_); + network_portal_detector_->SetDetectionResultsForTesting(service_path, + state); } void NotifyPortalDetectionCompleted() { - DCHECK(network_portal_detector_stub_); - network_portal_detector_stub_->NotifyObserversForTesting(); + DCHECK(network_portal_detector_); + network_portal_detector_->NotifyObserversForTesting(); } FakeUpdateEngineClient* fake_update_engine_client_; @@ -115,7 +115,7 @@ class UpdateScreenTest : public WizardInProcessBrowserTest { scoped_ptr<MockErrorScreenActor> mock_error_screen_actor_; scoped_ptr<MockErrorScreen> mock_error_screen_; UpdateScreen* update_screen_; - NetworkPortalDetectorStub* network_portal_detector_stub_; + NetworkPortalDetectorTestImpl* network_portal_detector_; private: DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest); diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc index 61a6556..84c9500 100644 --- a/chrome/browser/chromeos/login/wizard_controller.cc +++ b/chrome/browser/chromeos/login/wizard_controller.cc @@ -620,9 +620,7 @@ void WizardController::PerformPostEulaActions() { NetworkStateHandler::kDefaultCheckPortalList); host_->CheckForAutoEnrollment(); host_->PrewarmAuthentication(); - NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance(); - if (NetworkPortalDetector::IsEnabledInCommandLine() && detector) - detector->Enable(true); + NetworkPortalDetector::Get()->Enable(true); } void WizardController::PerformPostUpdateActions() { diff --git a/chrome/browser/chromeos/net/network_portal_detector.cc b/chrome/browser/chromeos/net/network_portal_detector.cc index 1f7bf5d..11d4074 100644 --- a/chrome/browser/chromeos/net/network_portal_detector.cc +++ b/chrome/browser/chromeos/net/network_portal_detector.cc @@ -8,7 +8,7 @@ #include "base/logging.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chromeos/net/network_portal_detector_impl.h" -#include "chrome/browser/chromeos/net/network_portal_detector_stub.h" +#include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" #include "chrome/common/chrome_switches.h" #include "chromeos/chromeos_switches.h" @@ -17,47 +17,82 @@ namespace chromeos { namespace { NetworkPortalDetector* g_network_portal_detector = NULL; +bool g_network_portal_detector_set_for_testing = false; bool IsTestMode() { return CommandLine::ForCurrentProcess()->HasSwitch(::switches::kTestType); } -} // namespace - -NetworkPortalDetector::NetworkPortalDetector() { +bool IsEnabledInCommandLine() { + return !CommandLine::ForCurrentProcess()->HasSwitch( + switches::kDisableChromeCaptivePortalDetector); } -NetworkPortalDetector::~NetworkPortalDetector() { +// Stub implementation of NetworkPortalDetector. +class NetworkPortalDetectorStubImpl : public NetworkPortalDetector { + protected: + // NetworkPortalDetector implementation: + virtual void AddObserver(Observer* /* observer */) OVERRIDE {} + virtual void AddAndFireObserver(Observer* observer) OVERRIDE { + if (observer) + observer->OnPortalDetectionCompleted(NULL, CaptivePortalState()); + } + virtual void RemoveObserver(Observer* /* observer */) OVERRIDE {} + virtual CaptivePortalState GetCaptivePortalState( + const NetworkState* /* network */) OVERRIDE { + return CaptivePortalState(); + } + virtual bool IsEnabled() OVERRIDE { return false; } + virtual void Enable(bool /* start_detection */) OVERRIDE {} + virtual bool StartDetectionIfIdle() OVERRIDE { return false; } + virtual void EnableLazyDetection() OVERRIDE {} + virtual void DisableLazyDetection() OVERRIDE {} +}; + +} // namespace + +void NetworkPortalDetector::InitializeForTesting( + NetworkPortalDetector* network_portal_detector) { + CHECK(!g_network_portal_detector) + << "NetworkPortalDetector::InitializeForTesting() is called after " + << "Initialize()"; + CHECK(network_portal_detector); + g_network_portal_detector = network_portal_detector; + g_network_portal_detector_set_for_testing = true; } // static -NetworkPortalDetector* NetworkPortalDetector::CreateInstance() { - DCHECK(!g_network_portal_detector); - CHECK(NetworkPortalDetector::IsEnabledInCommandLine()); - if (IsTestMode()) { - g_network_portal_detector = new NetworkPortalDetectorStub(); +void NetworkPortalDetector::Initialize() { + if (g_network_portal_detector_set_for_testing) + return; + CHECK(!g_network_portal_detector) + << "NetworkPortalDetector::Initialize() is called twice"; + if (!IsEnabledInCommandLine() || IsTestMode()) { + g_network_portal_detector = new NetworkPortalDetectorStubImpl(); } else { CHECK(g_browser_process); CHECK(g_browser_process->system_request_context()); g_network_portal_detector = new NetworkPortalDetectorImpl( g_browser_process->system_request_context()); } - return g_network_portal_detector; } // static -NetworkPortalDetector* NetworkPortalDetector::GetInstance() { - if (!NetworkPortalDetector::IsEnabledInCommandLine()) - return NULL; - if (!g_network_portal_detector) - return CreateInstance(); - return g_network_portal_detector; +void NetworkPortalDetector::Shutdown() { + CHECK(g_network_portal_detector || g_network_portal_detector_set_for_testing) + << "NetworkPortalDetectorImpl::Shutdown() is called " + << "without previous call to Initialize()"; + if (g_network_portal_detector) { + delete g_network_portal_detector; + g_network_portal_detector = NULL; + } } // static -bool NetworkPortalDetector::IsEnabledInCommandLine() { - return !CommandLine::ForCurrentProcess()->HasSwitch( - switches::kDisableChromeCaptivePortalDetector); +NetworkPortalDetector* NetworkPortalDetector::Get() { + CHECK(g_network_portal_detector) + << "NetworkPortalDetector::Get() called before Initialize()"; + return g_network_portal_detector; } } // namespace chromeos diff --git a/chrome/browser/chromeos/net/network_portal_detector.h b/chrome/browser/chromeos/net/network_portal_detector.h index dd15575..9568b53 100644 --- a/chrome/browser/chromeos/net/network_portal_detector.h +++ b/chrome/browser/chromeos/net/network_portal_detector.h @@ -53,9 +53,6 @@ class NetworkPortalDetector { virtual ~Observer() {} }; - virtual void Init() = 0; - virtual void Shutdown() = 0; - // Adds |observer| to the observers list. virtual void AddObserver(Observer* observer) = 0; @@ -100,18 +97,24 @@ class NetworkPortalDetector { // Dizables lazy detection mode. virtual void DisableLazyDetection() = 0; + // Initializes network portal detector for testing. The + // |network_portal_detector| will be owned by the internal pointer + // and deleted by Shutdown(). + static void InitializeForTesting( + NetworkPortalDetector* network_portal_detector); + // Creates an instance of the NetworkPortalDetector. - static NetworkPortalDetector* CreateInstance(); + static void Initialize(); - // Gets the instance of the NetworkPortalDetector. - static NetworkPortalDetector* GetInstance(); + // Deletes the instance of the NetworkPortalDetector. + static void Shutdown(); - // Returns true is NetworkPortalDetector service is enabled in command line. - static bool IsEnabledInCommandLine(); + // Gets the instance of the NetworkPortalDetector. + static NetworkPortalDetector* Get(); protected: - NetworkPortalDetector(); - virtual ~NetworkPortalDetector(); + NetworkPortalDetector() {} + virtual ~NetworkPortalDetector() {} private: DISALLOW_COPY_AND_ASSIGN(NetworkPortalDetector); diff --git a/chrome/browser/chromeos/net/network_portal_detector_impl.cc b/chrome/browser/chromeos/net/network_portal_detector_impl.cc index c8c454f..0088b91 100644 --- a/chrome/browser/chromeos/net/network_portal_detector_impl.cc +++ b/chrome/browser/chromeos/net/network_portal_detector_impl.cc @@ -71,7 +71,8 @@ std::string CaptivePortalStatusString( NetworkPortalDetectorImpl::NetworkPortalDetectorImpl( const scoped_refptr<net::URLRequestContextGetter>& request_context) - : test_url_(CaptivePortalDetector::kDefaultURL), + : state_(STATE_IDLE), + test_url_(CaptivePortalDetector::kDefaultURL), enabled_(false), weak_ptr_factory_(this), attempt_count_(0), @@ -91,20 +92,12 @@ NetworkPortalDetectorImpl::NetworkPortalDetectorImpl( registrar_.Add(this, chrome::NOTIFICATION_AUTH_CANCELLED, content::NotificationService::AllSources()); -} - -NetworkPortalDetectorImpl::~NetworkPortalDetectorImpl() { -} -void NetworkPortalDetectorImpl::Init() { - DCHECK(CalledOnValidThread()); - - state_ = STATE_IDLE; NetworkHandler::Get()->network_state_handler()->AddObserver( this, FROM_HERE); } -void NetworkPortalDetectorImpl::Shutdown() { +NetworkPortalDetectorImpl::~NetworkPortalDetectorImpl() { DCHECK(CalledOnValidThread()); detection_task_.Cancel(); diff --git a/chrome/browser/chromeos/net/network_portal_detector_impl.h b/chrome/browser/chromeos/net/network_portal_detector_impl.h index cf0c4e9..9c7b68e 100644 --- a/chrome/browser/chromeos/net/network_portal_detector_impl.h +++ b/chrome/browser/chromeos/net/network_portal_detector_impl.h @@ -47,8 +47,6 @@ class NetworkPortalDetectorImpl virtual ~NetworkPortalDetectorImpl(); // NetworkPortalDetector implementation: - virtual void Init() OVERRIDE; - virtual void Shutdown() OVERRIDE; virtual void AddObserver(Observer* observer) OVERRIDE; virtual void AddAndFireObserver(Observer* observer) OVERRIDE; virtual void RemoveObserver(Observer* observer) OVERRIDE; diff --git a/chrome/browser/chromeos/net/network_portal_detector_impl_unittest.cc b/chrome/browser/chromeos/net/network_portal_detector_impl_unittest.cc index 8f3c18a..42e1657 100644 --- a/chrome/browser/chromeos/net/network_portal_detector_impl_unittest.cc +++ b/chrome/browser/chromeos/net/network_portal_detector_impl_unittest.cc @@ -50,7 +50,6 @@ class NetworkPortalDetectorImplTest profile_.reset(new TestingProfile()); network_portal_detector_.reset( new NetworkPortalDetectorImpl(profile_->GetRequestContext())); - network_portal_detector_->Init(); network_portal_detector_->Enable(false); set_detector(network_portal_detector_->captive_portal_detector_.get()); @@ -60,7 +59,7 @@ class NetworkPortalDetectorImplTest } virtual void TearDown() { - network_portal_detector_->Shutdown(); + network_portal_detector_.reset(); profile_.reset(); NetworkHandler::Shutdown(); DBusThreadManager::Shutdown(); diff --git a/chrome/browser/chromeos/net/network_portal_detector_stub.cc b/chrome/browser/chromeos/net/network_portal_detector_test_impl.cc index 2fd08aa..473f0d70 100644 --- a/chrome/browser/chromeos/net/network_portal_detector_stub.cc +++ b/chrome/browser/chromeos/net/network_portal_detector_test_impl.cc @@ -1,19 +1,19 @@ -// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/net/network_portal_detector_stub.h" +#include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" #include "chromeos/network/network_state.h" namespace chromeos { -NetworkPortalDetectorStub::NetworkPortalDetectorStub() {} +NetworkPortalDetectorTestImpl::NetworkPortalDetectorTestImpl() {} -NetworkPortalDetectorStub::~NetworkPortalDetectorStub() { +NetworkPortalDetectorTestImpl::~NetworkPortalDetectorTestImpl() { } -void NetworkPortalDetectorStub::SetDefaultNetworkPathForTesting( +void NetworkPortalDetectorTestImpl::SetDefaultNetworkPathForTesting( const std::string& service_path) { if (service_path.empty()) default_network_.reset(); @@ -21,14 +21,14 @@ void NetworkPortalDetectorStub::SetDefaultNetworkPathForTesting( default_network_.reset(new NetworkState(service_path)); } -void NetworkPortalDetectorStub::SetDetectionResultsForTesting( +void NetworkPortalDetectorTestImpl::SetDetectionResultsForTesting( const std::string& service_path, const CaptivePortalState& state) { if (!service_path.empty()) portal_state_map_[service_path] = state; } -void NetworkPortalDetectorStub::NotifyObserversForTesting() { +void NetworkPortalDetectorTestImpl::NotifyObserversForTesting() { CaptivePortalState state; if (default_network_ && portal_state_map_.count(default_network_->path())) { @@ -38,18 +38,12 @@ void NetworkPortalDetectorStub::NotifyObserversForTesting() { OnPortalDetectionCompleted(default_network_.get(), state)); } -void NetworkPortalDetectorStub::Init() { -} - -void NetworkPortalDetectorStub::Shutdown() { -} - -void NetworkPortalDetectorStub::AddObserver(Observer* observer) { +void NetworkPortalDetectorTestImpl::AddObserver(Observer* observer) { if (observer && !observers_.HasObserver(observer)) observers_.AddObserver(observer); } -void NetworkPortalDetectorStub::AddAndFireObserver(Observer* observer) { +void NetworkPortalDetectorTestImpl::AddAndFireObserver(Observer* observer) { AddObserver(observer); if (!observer) return; @@ -64,34 +58,34 @@ void NetworkPortalDetectorStub::AddAndFireObserver(Observer* observer) { } } -void NetworkPortalDetectorStub::RemoveObserver(Observer* observer) { +void NetworkPortalDetectorTestImpl::RemoveObserver(Observer* observer) { if (observer) observers_.RemoveObserver(observer); } NetworkPortalDetector::CaptivePortalState -NetworkPortalDetectorStub::GetCaptivePortalState( +NetworkPortalDetectorTestImpl::GetCaptivePortalState( const chromeos::NetworkState* network) { if (!network || !portal_state_map_.count(network->path())) return CaptivePortalState(); return portal_state_map_[network->path()]; } -bool NetworkPortalDetectorStub::IsEnabled() { +bool NetworkPortalDetectorTestImpl::IsEnabled() { return true; } -void NetworkPortalDetectorStub::Enable(bool start_detection) { +void NetworkPortalDetectorTestImpl::Enable(bool start_detection) { } -bool NetworkPortalDetectorStub::StartDetectionIfIdle() { +bool NetworkPortalDetectorTestImpl::StartDetectionIfIdle() { return false; } -void NetworkPortalDetectorStub::EnableLazyDetection() { +void NetworkPortalDetectorTestImpl::EnableLazyDetection() { } -void NetworkPortalDetectorStub::DisableLazyDetection() { +void NetworkPortalDetectorTestImpl::DisableLazyDetection() { } } // namespace chromeos diff --git a/chrome/browser/chromeos/net/network_portal_detector_stub.h b/chrome/browser/chromeos/net/network_portal_detector_test_impl.h index 9494109..9d6f9ba 100644 --- a/chrome/browser/chromeos/net/network_portal_detector_stub.h +++ b/chrome/browser/chromeos/net/network_portal_detector_test_impl.h @@ -1,9 +1,9 @@ -// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_STUB_H_ -#define CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_STUB_H_ +#ifndef CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_TEST_IMPL_H_ +#define CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_TEST_IMPL_H_ #include <string> @@ -16,10 +16,10 @@ namespace chromeos { -class NetworkPortalDetectorStub : public NetworkPortalDetector { +class NetworkPortalDetectorTestImpl : public NetworkPortalDetector { public: - NetworkPortalDetectorStub(); - virtual ~NetworkPortalDetectorStub(); + NetworkPortalDetectorTestImpl(); + virtual ~NetworkPortalDetectorTestImpl(); void SetDefaultNetworkPathForTesting(const std::string& service_path); void SetDetectionResultsForTesting(const std::string& service_path, @@ -27,8 +27,6 @@ class NetworkPortalDetectorStub : public NetworkPortalDetector { void NotifyObserversForTesting(); // NetworkPortalDetector implementation: - virtual void Init() OVERRIDE; - virtual void Shutdown() OVERRIDE; virtual void AddObserver(Observer* observer) OVERRIDE; virtual void AddAndFireObserver(Observer* observer) OVERRIDE; virtual void RemoveObserver(Observer* observer) OVERRIDE; @@ -49,9 +47,9 @@ class NetworkPortalDetectorStub : public NetworkPortalDetector { scoped_ptr<NetworkState> default_network_; CaptivePortalStateMap portal_state_map_; - DISALLOW_COPY_AND_ASSIGN(NetworkPortalDetectorStub); + DISALLOW_COPY_AND_ASSIGN(NetworkPortalDetectorTestImpl); }; } // namespace chromeos -#endif // CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_STUB_H_ +#endif // CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_TEST_IMPL_H_ diff --git a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc index cddd932..8724a7b 100644 --- a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc @@ -27,22 +27,6 @@ const char kJsScreenPath[] = "login.ErrorMessageScreen"; namespace chromeos { -namespace { - -void EnableLazyDetection() { - NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance(); - if (NetworkPortalDetector::IsEnabledInCommandLine() && detector) - detector->EnableLazyDetection(); -} - -void DisableLazyDetection() { - NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance(); - if (NetworkPortalDetector::IsEnabledInCommandLine() && detector) - detector->DisableLazyDetection(); -} - -} // namespace - ErrorScreenHandler::ErrorScreenHandler( const scoped_refptr<NetworkStateInformer>& network_state_informer) : BaseScreenHandler(kJsScreenPath), @@ -63,7 +47,7 @@ void ErrorScreenHandler::Show(OobeDisplay::Screen parent_screen, parent_screen_ = parent_screen; ShowScreen(OobeUI::kScreenErrorMessage, params); NetworkErrorShown(); - EnableLazyDetection(); + NetworkPortalDetector::Get()->EnableLazyDetection(); LOG(WARNING) << "Offline message is displayed"; } @@ -73,7 +57,7 @@ void ErrorScreenHandler::Hide() { std::string screen_name; if (GetScreenName(parent_screen_, &screen_name)) ShowScreen(screen_name.c_str(), NULL); - DisableLazyDetection(); + NetworkPortalDetector::Get()->DisableLazyDetection(); LOG(WARNING) << "Offline message is hidden"; } diff --git a/chrome/browser/ui/webui/chromeos/login/network_state_informer.cc b/chrome/browser/ui/webui/chromeos/login/network_state_informer.cc index a7381db..115f545 100644 --- a/chrome/browser/ui/webui/chromeos/login/network_state_informer.cc +++ b/chrome/browser/ui/webui/chromeos/login/network_state_informer.cc @@ -41,10 +41,9 @@ NetworkStateInformer::State GetStateForDefaultNetwork() { if (!network) return NetworkStateInformer::OFFLINE; - if (NetworkPortalDetector::IsEnabledInCommandLine() && - NetworkPortalDetector::GetInstance()) { + if (NetworkPortalDetector::Get()->IsEnabled()) { NetworkPortalDetector::CaptivePortalState state = - NetworkPortalDetector::GetInstance()->GetCaptivePortalState(network); + NetworkPortalDetector::Get()->GetCaptivePortalState(network); NetworkPortalDetector::CaptivePortalStatus status = state.status; if (status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN && NetworkState::StateIsConnecting(network->connection_state())) { @@ -90,10 +89,7 @@ NetworkStateInformer::~NetworkStateInformer() { NetworkHandler::Get()->network_state_handler()->RemoveObserver( this, FROM_HERE); } - if (NetworkPortalDetector::IsEnabledInCommandLine() && - NetworkPortalDetector::GetInstance()) { - NetworkPortalDetector::GetInstance()->RemoveObserver(this); - } + NetworkPortalDetector::Get()->RemoveObserver(this); } void NetworkStateInformer::Init() { @@ -101,10 +97,7 @@ void NetworkStateInformer::Init() { NetworkHandler::Get()->network_state_handler()->AddObserver( this, FROM_HERE); - if (NetworkPortalDetector::IsEnabledInCommandLine() && - NetworkPortalDetector::GetInstance()) { - NetworkPortalDetector::GetInstance()->AddAndFireObserver(this); - } + NetworkPortalDetector::Get()->AddAndFireObserver(this); registrar_.Add(this, chrome::NOTIFICATION_LOGIN_PROXY_CHANGED, diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc index 9a85f0a..1d65c13 100644 --- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc @@ -240,7 +240,7 @@ std::string GetNetworkName(const std::string& service_path) { // Returns captive portal state for a network by its service path. NetworkPortalDetector::CaptivePortalState GetCaptivePortalState( const std::string& service_path) { - NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance(); + NetworkPortalDetector* detector = NetworkPortalDetector::Get(); const NetworkState* network = NetworkHandler::Get()->network_state_handler()-> GetNetworkState(service_path); if (!detector || !network) diff --git a/chrome/chrome_browser_chromeos.gypi b/chrome/chrome_browser_chromeos.gypi index 9e52c09..56b5875 100644 --- a/chrome/chrome_browser_chromeos.gypi +++ b/chrome/chrome_browser_chromeos.gypi @@ -633,8 +633,8 @@ 'browser/chromeos/net/network_portal_detector.h', 'browser/chromeos/net/network_portal_detector_impl.cc', 'browser/chromeos/net/network_portal_detector_impl.h', - 'browser/chromeos/net/network_portal_detector_stub.cc', - 'browser/chromeos/net/network_portal_detector_stub.h', + 'browser/chromeos/net/network_portal_detector_test_impl.cc', + 'browser/chromeos/net/network_portal_detector_test_impl.h', 'browser/chromeos/net/onc_utils.cc', 'browser/chromeos/net/onc_utils.h', 'browser/chromeos/net/proxy_config_handler.cc', |