summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos
diff options
context:
space:
mode:
authorxusydoc@chromium.org <xusydoc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-30 03:09:04 +0000
committerxusydoc@chromium.org <xusydoc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-30 03:09:04 +0000
commit3fb63aefda36c25de37d1b2cb37defc5d16b91e8 (patch)
tree7c8e404fefef0339fd29717c0abad5a2352f6e8a /chrome/browser/chromeos
parenta09922d5ca5c7e2ef98c4620ba55332a564f9f2e (diff)
downloadchromium_src-3fb63aefda36c25de37d1b2cb37defc5d16b91e8.zip
chromium_src-3fb63aefda36c25de37d1b2cb37defc5d16b91e8.tar.gz
chromium_src-3fb63aefda36c25de37d1b2cb37defc5d16b91e8.tar.bz2
Revert 164756 - Added NetworkPortalDetector.
BUG=134206 TEST=Manual tests on an Alex device. Review URL: https://chromiumcodereview.appspot.com/10981067 TBR=ygorshenin@chromium.org Review URL: https://codereview.chromium.org/11346026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164822 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos')
-rw-r--r--chrome/browser/chromeos/chrome_browser_main_chromeos.cc11
-rw-r--r--chrome/browser/chromeos/net/network_portal_detector.cc217
-rw-r--r--chrome/browser/chromeos/net/network_portal_detector.h110
-rw-r--r--chrome/browser/chromeos/proxy_config_service_impl.cc28
-rw-r--r--chrome/browser/chromeos/proxy_config_service_impl.h5
5 files changed, 10 insertions, 361 deletions
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
index 8c1a5c3..2f1b741 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -43,7 +43,6 @@
#include "chrome/browser/chromeos/memory/oom_priority_manager.h"
#include "chrome/browser/chromeos/net/cros_network_change_notifier_factory.h"
#include "chrome/browser/chromeos/net/network_change_notifier_chromeos.h"
-#include "chrome/browser/chromeos/net/network_portal_detector.h"
#include "chrome/browser/chromeos/power/brightness_observer.h"
#include "chrome/browser/chromeos/power/output_observer.h"
#include "chrome/browser/chromeos/power/power_button_observer.h"
@@ -476,13 +475,6 @@ void ChromeBrowserMainPartsChromeos::PostProfileInit() {
removable_device_notifications_ =
new chromeos::RemovableDeviceNotificationsCros();
- // Initialize the network portal detector for Chrome OS. The network
- // portal detector starts to listen for notifications from
- // NetworkLibrary about changes in the NetworkManager and initiates
- // captive portal detection for active networks.
- if (chromeos::NetworkPortalDetector::GetInstance())
- chromeos::NetworkPortalDetector::GetInstance()->Init();
-
chromeos::NotifyDisplayLocalStatePrefChanged();
ChromeBrowserMainPartsLinux::PostProfileInit();
@@ -550,9 +542,6 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() {
if (chromeos::CrosNetworkChangeNotifierFactory::GetInstance())
chromeos::CrosNetworkChangeNotifierFactory::GetInstance()->Shutdown();
- if (chromeos::NetworkPortalDetector::GetInstance())
- chromeos::NetworkPortalDetector::GetInstance()->Shutdown();
-
// Tell DeviceSettingsService to stop talking to session_manager.
chromeos::DeviceSettingsService::Get()->Shutdown();
diff --git a/chrome/browser/chromeos/net/network_portal_detector.cc b/chrome/browser/chromeos/net/network_portal_detector.cc
deleted file mode 100644
index d36b0ab..0000000
--- a/chrome/browser/chromeos/net/network_portal_detector.cc
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright (c) 2012 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.h"
-
-#include "base/bind.h"
-#include "base/logging.h"
-#include "chrome/browser/chromeos/cros/cros_library.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "content/public/browser/browser_thread.h"
-#include "grit/generated_resources.h"
-#include "ui/base/l10n/l10n_util.h"
-
-using captive_portal::CaptivePortalDetector;
-
-namespace chromeos {
-
-namespace {
-
-std::string CaptivePortalStateString(
- NetworkPortalDetector::CaptivePortalState state) {
- switch (state) {
- case NetworkPortalDetector::CAPTIVE_PORTAL_STATE_UNKNOWN:
- return l10n_util::GetStringUTF8(
- IDS_CHROMEOS_CAPTIVE_PORTAL_STATE_UNKNOWN);
- case NetworkPortalDetector::CAPTIVE_PORTAL_STATE_OFFLINE:
- return l10n_util::GetStringUTF8(
- IDS_CHROMEOS_CAPTIVE_PORTAL_STATE_OFFLINE);
- case NetworkPortalDetector::CAPTIVE_PORTAL_STATE_ONLINE:
- return l10n_util::GetStringUTF8(IDS_CHROMEOS_CAPTIVE_PORTAL_STATE_ONLINE);
- case NetworkPortalDetector::CAPTIVE_PORTAL_STATE_PORTAL:
- return l10n_util::GetStringUTF8(IDS_CHROMEOS_CAPTIVE_PORTAL_STATE_PORTAL);
- }
- return l10n_util::GetStringUTF8(
- IDS_CHROMEOS_CAPTIVE_PORTAL_STATE_UNRECOGNIZED);
-}
-
-NetworkPortalDetector* g_network_portal_detector = NULL;
-
-} // namespace
-
-NetworkPortalDetector::NetworkPortalDetector()
- : test_url_(CaptivePortalDetector::kDefaultURL) {
- Profile* profile = ProfileManager::GetDefaultProfile();
- DCHECK(profile);
- captive_portal_detector_.reset(
- new CaptivePortalDetector(profile->GetRequestContext()));
-}
-
-NetworkPortalDetector::~NetworkPortalDetector() {
-}
-
-void NetworkPortalDetector::Init() {
- DCHECK(CalledOnValidThread());
-
- state_ = STATE_IDLE;
- chromeos::NetworkLibrary* network_library =
- chromeos::CrosLibrary::Get()->GetNetworkLibrary();
- network_library->AddNetworkManagerObserver(this);
-}
-
-void NetworkPortalDetector::Shutdown() {
- DCHECK(CalledOnValidThread());
-
- captive_portal_detector_->Cancel();
- observers_.Clear();
- chromeos::NetworkLibrary* network_library =
- chromeos::CrosLibrary::Get()->GetNetworkLibrary();
- network_library->RemoveNetworkManagerObserver(this);
-}
-
-void NetworkPortalDetector::AddObserver(Observer* observer) {
- DCHECK(CalledOnValidThread());
- if (!observers_.HasObserver(observer))
- observers_.AddObserver(observer);
-}
-
-void NetworkPortalDetector::RemoveObserver(Observer* observer) {
- DCHECK(CalledOnValidThread());
- observers_.RemoveObserver(observer);
-}
-
-NetworkPortalDetector::CaptivePortalState
-NetworkPortalDetector::GetCaptivePortalState(const Network* network) {
- if (!network)
- return CAPTIVE_PORTAL_STATE_UNKNOWN;
- CaptivePortalStateMap::const_iterator it =
- captive_portal_state_map_.find(network->unique_id());
- if (it == captive_portal_state_map_.end())
- return CAPTIVE_PORTAL_STATE_UNKNOWN;
- return it->second;
-}
-
-void NetworkPortalDetector::OnNetworkManagerChanged(NetworkLibrary* cros) {
- DCHECK(CalledOnValidThread());
-
- // Suppose that if there are no active network, then unique id is
- // empty and connection state is unknown.
- std::string new_active_network_id;
- ConnectionState connection_state = STATE_UNKNOWN;
- const Network* active_network = cros->active_network();
- if (active_network) {
- new_active_network_id = active_network->unique_id();
- connection_state = active_network->connection_state();
- }
-
- if (active_network_id_ != new_active_network_id) {
- active_network_id_ = new_active_network_id;
- if (IsCheckingForPortal()) {
- // Network is changed, so detection results will be incorrect.
- state_ = STATE_CHECKING_FOR_PORTAL_NETWORK_CHANGED;
- } else if (Network::IsConnectedState(connection_state)) {
- // Start captive portal detection, if possible.
- DetectCaptivePortal();
- }
- } else if (!IsCheckingForPortal() &&
- Network::IsConnectedState(connection_state)) {
- DCHECK(active_network);
- // Initiate Captive Portal detection only if network's captive
- // portal state is unknown (e.g. for freshly created networks) or offline.
- CaptivePortalState state = GetCaptivePortalState(active_network);
- if (state == CAPTIVE_PORTAL_STATE_UNKNOWN ||
- state == CAPTIVE_PORTAL_STATE_OFFLINE) {
- DetectCaptivePortal();
- }
- }
-}
-
-// static
-NetworkPortalDetector* NetworkPortalDetector::CreateInstance() {
- DCHECK(!g_network_portal_detector);
- g_network_portal_detector = new NetworkPortalDetector();
- return g_network_portal_detector;
-}
-
-// static
-NetworkPortalDetector* NetworkPortalDetector::GetInstance() {
- if (!g_network_portal_detector)
- return CreateInstance();
- return g_network_portal_detector;
-}
-
-void NetworkPortalDetector::DetectCaptivePortal() {
- state_ = STATE_CHECKING_FOR_PORTAL;
- captive_portal_detector_->DetectCaptivePortal(
- test_url_,
- base::Bind(&NetworkPortalDetector::OnPortalDetectionCompleted,
- base::Unretained(this)));
-}
-
-void NetworkPortalDetector::OnPortalDetectionCompleted(
- const CaptivePortalDetector::Results& results) {
- DCHECK(CalledOnValidThread());
-
- DCHECK(IsCheckingForPortal());
-
- NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary();
- const Network* active_network = cros->active_network();
- if (!active_network)
- return;
-
- if (state_ == STATE_CHECKING_FOR_PORTAL_NETWORK_CHANGED) {
- // Can't use detection results, because network was changed. So
- // retry portal detection for the active network or, if possible.
- if (Network::IsConnectedState(active_network->connection_state()) &&
- GetCaptivePortalState(active_network) ==
- CAPTIVE_PORTAL_STATE_UNKNOWN) {
- DetectCaptivePortal();
- }
- return;
- }
-
- state_ = STATE_IDLE;
-
- switch (results.result) {
- case captive_portal::RESULT_NO_RESPONSE:
- SetCaptivePortalState(active_network, CAPTIVE_PORTAL_STATE_OFFLINE);
- break;
- case captive_portal::RESULT_INTERNET_CONNECTED:
- SetCaptivePortalState(active_network, CAPTIVE_PORTAL_STATE_ONLINE);
- break;
- case captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL:
- SetCaptivePortalState(active_network, CAPTIVE_PORTAL_STATE_PORTAL);
- break;
- default:
- break;
- }
-}
-
-bool NetworkPortalDetector::IsCheckingForPortal() const {
- return state_ == STATE_CHECKING_FOR_PORTAL ||
- state_ == STATE_CHECKING_FOR_PORTAL_NETWORK_CHANGED;
-}
-
-void NetworkPortalDetector::SetCaptivePortalState(const Network* network,
- CaptivePortalState state) {
- DCHECK(network);
- CaptivePortalStateMap::const_iterator it =
- captive_portal_state_map_.find(network->unique_id());
- if (it == captive_portal_state_map_.end() ||
- it->second != state) {
- VLOG(2) << "Updating Chrome Captive Portal state: "
- << "network=" << network->unique_id() << ", "
- << "state=" << CaptivePortalStateString(state);
- captive_portal_state_map_[network->unique_id()] = state;
- NotifyPortalStateChanged(network, state);
- }
-}
-
-void NetworkPortalDetector::NotifyPortalStateChanged(const Network* network,
- CaptivePortalState state) {
- FOR_EACH_OBSERVER(Observer, observers_, OnPortalStateChanged(network, state));
-}
-
-} // namespace chromeos
diff --git a/chrome/browser/chromeos/net/network_portal_detector.h b/chrome/browser/chromeos/net/network_portal_detector.h
deleted file mode 100644
index a80798b..0000000
--- a/chrome/browser/chromeos/net/network_portal_detector.h
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright (c) 2012 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_H_
-#define CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_H_
-
-#include <string>
-
-#include "base/hash_tables.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/observer_list.h"
-#include "base/threading/non_thread_safe.h"
-#include "chrome/browser/captive_portal/captive_portal_detector.h"
-#include "chrome/browser/chromeos/cros/network_library.h"
-#include "googleurl/src/gurl.h"
-
-namespace chromeos {
-
-// This class handles all notifications about network changes from
-// NetworkLibrary and delegates portal detection for the active
-// network to CaptivePortalService.
-class NetworkPortalDetector
- : public base::NonThreadSafe,
- public chromeos::NetworkLibrary::NetworkManagerObserver {
- public:
- enum CaptivePortalState {
- CAPTIVE_PORTAL_STATE_UNKNOWN = 0,
- CAPTIVE_PORTAL_STATE_OFFLINE = 1,
- CAPTIVE_PORTAL_STATE_ONLINE = 2,
- CAPTIVE_PORTAL_STATE_PORTAL = 3,
- };
-
- class Observer {
- public:
- // Called when portal state is changed for |network|.
- virtual void OnPortalStateChanged(const Network* network,
- CaptivePortalState state) = 0;
-
- protected:
- virtual ~Observer() {}
- };
-
- NetworkPortalDetector();
- virtual ~NetworkPortalDetector();
-
- void Init();
- void Shutdown();
- void AddObserver(Observer* observer);
- void RemoveObserver(Observer* observer);
-
- CaptivePortalState GetCaptivePortalState(const chromeos::Network* network);
-
- // NetworkLibrary::NetworkManagerObserver implementation:
- virtual void OnNetworkManagerChanged(chromeos::NetworkLibrary* cros) OVERRIDE;
-
- // Creates an instance of the NetworkPortalDetector.
- static NetworkPortalDetector* CreateInstance();
-
- // Gets the instance of the NetworkPortalDetector.
- static NetworkPortalDetector* GetInstance();
-
- private:
- typedef std::string NetworkId;
- typedef base::hash_map<NetworkId, CaptivePortalState> CaptivePortalStateMap;
-
- enum State {
- // No portal check is running.
- STATE_IDLE,
- // Portal check is in progress.
- STATE_CHECKING_FOR_PORTAL,
- // Portal check is in progress, but other portal detection request
- // is pending.
- STATE_CHECKING_FOR_PORTAL_NETWORK_CHANGED,
- };
-
- // Initiates Captive Portal detection. If currently portal detection
- // in in progress, then delays portal detection.
- void DetectCaptivePortal();
-
- // Called by CaptivePortalDetector when detection completes.
- void OnPortalDetectionCompleted(
- const captive_portal::CaptivePortalDetector::Results& results);
-
- // Returns true if portal check is in progress.
- bool IsCheckingForPortal() const;
-
- // Stores captive portal state for a |network|.
- void SetCaptivePortalState(const Network* network,
- CaptivePortalState state);
-
- // Notifies observers that portal state is changed for a |network|.
- void NotifyPortalStateChanged(const Network* network,
- CaptivePortalState state);
-
- std::string active_network_id_;
- State state_;
- CaptivePortalStateMap captive_portal_state_map_;
- ObserverList<Observer> observers_;
-
- // URL that returns a 204 response code when connected to the Internet.
- GURL test_url_;
-
- // Detector for checking active network for a portal state.
- scoped_ptr<captive_portal::CaptivePortalDetector> captive_portal_detector_;
-};
-
-} // namespace chromeos
-
-#endif // CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_H_
diff --git a/chrome/browser/chromeos/proxy_config_service_impl.cc b/chrome/browser/chromeos/proxy_config_service_impl.cc
index 3b20231..03228db 100644
--- a/chrome/browser/chromeos/proxy_config_service_impl.cc
+++ b/chrome/browser/chromeos/proxy_config_service_impl.cc
@@ -562,20 +562,6 @@ void ProxyConfigServiceImpl::OnNetworkChanged(NetworkLibrary* network_lib,
}
// static
-bool ProxyConfigServiceImpl::ParseProxyConfig(const Network* network,
- net::ProxyConfig* proxy_config) {
- if (!network || !proxy_config)
- return false;
- JSONStringValueSerializer serializer(network->proxy_config());
- scoped_ptr<Value> value(serializer.Deserialize(NULL, NULL));
- if (!value.get() || value->GetType() != Value::TYPE_DICTIONARY)
- return false;
- ProxyConfigDictionary proxy_dict(static_cast<DictionaryValue*>(value.get()));
- return PrefProxyConfigTrackerImpl::PrefConfigToNetConfig(proxy_dict,
- proxy_config);
-}
-
-// static
void ProxyConfigServiceImpl::RegisterPrefs(PrefService* pref_service) {
// Use shared proxies default to off. GetUseSharedProxies will return the
// correct value based on pre-login and login.
@@ -729,10 +715,16 @@ void ProxyConfigServiceImpl::DetermineEffectiveConfig(const Network* network,
network_availability = net::ProxyConfigService::CONFIG_VALID;
} else if (!network->proxy_config().empty()) {
// Network is private or shared with user using shared proxies.
- if (ParseProxyConfig(network, &network_config)) {
- VLOG(1) << this << ": using network proxy: "
- << network->proxy_config();
- network_availability = net::ProxyConfigService::CONFIG_VALID;
+ JSONStringValueSerializer serializer(network->proxy_config());
+ scoped_ptr<Value> value(serializer.Deserialize(NULL, NULL));
+ if (value.get() && value->GetType() == Value::TYPE_DICTIONARY) {
+ DictionaryValue* dict = static_cast<DictionaryValue*>(value.get());
+ ProxyConfigDictionary proxy_dict(dict);
+ if (PrefConfigToNetConfig(proxy_dict, &network_config)) {
+ VLOG(1) << this << ": using network proxy: "
+ << network->proxy_config();
+ network_availability = net::ProxyConfigService::CONFIG_VALID;
+ }
}
}
}
diff --git a/chrome/browser/chromeos/proxy_config_service_impl.h b/chrome/browser/chromeos/proxy_config_service_impl.h
index 92df0d0..7f17f306 100644
--- a/chrome/browser/chromeos/proxy_config_service_impl.h
+++ b/chrome/browser/chromeos/proxy_config_service_impl.h
@@ -193,11 +193,6 @@ class ProxyConfigServiceImpl
virtual void OnNetworkChanged(NetworkLibrary* cros,
const Network* network) OVERRIDE;
- // Parse |network| proxy config and store result in |proxy_config|.
- // Returns true if proxy config was successfully parsed.
- static bool ParseProxyConfig(const Network* network,
- net::ProxyConfig* proxy_config);
-
// Register UseShardProxies preference.
static void RegisterPrefs(PrefService* pref_service);