summaryrefslogtreecommitdiffstats
path: root/net/base/network_change_notifier_mac.h
diff options
context:
space:
mode:
authorwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-21 21:08:35 +0000
committerwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-21 21:08:35 +0000
commit100d5fb906712b03495b961c35f9c9b21381a74a (patch)
tree284b84c9e6baba6da57427243a8b7729f67cb132 /net/base/network_change_notifier_mac.h
parent92683b5a068ab7c7f58251dbee9b047314977bae (diff)
downloadchromium_src-100d5fb906712b03495b961c35f9c9b21381a74a.zip
chromium_src-100d5fb906712b03495b961c35f9c9b21381a74a.tar.gz
chromium_src-100d5fb906712b03495b961c35f9c9b21381a74a.tar.bz2
Detects network changes. Only for Mac OS X so far. Hooks up TCPClientSocketPool to flush idle sockets on IP address change.
BUG=http://crbug.com/26156 TEST=Run chrome with both network cable and wireless on. Go to www.google.com, twice. Verify second time via chrome://net-internals that the second request did not need a TCP_CONNECT_JOB, since we reused idle sockets. Unplug network cable. This should flush idle sockets. Go back to www.google.com. Check chrome://net-internals. Verify that there is a TCP_CONNECT_JOB for that request, because there was no idle socket to reuse. Review URL: http://codereview.chromium.org/460149 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35107 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/network_change_notifier_mac.h')
-rw-r--r--net/base/network_change_notifier_mac.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/net/base/network_change_notifier_mac.h b/net/base/network_change_notifier_mac.h
new file mode 100644
index 0000000..cbf0128f
--- /dev/null
+++ b/net/base/network_change_notifier_mac.h
@@ -0,0 +1,51 @@
+// Copyright (c) 2009 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 NET_BASE_NETWORK_CHANGE_NOTIFIER_MAC_H_
+#define NET_BASE_NETWORK_CHANGE_NOTIFIER_MAC_H_
+
+#include "base/basictypes.h"
+#include "base/ref_counted.h"
+#include "base/scoped_ptr.h"
+#include "net/base/network_change_notifier.h"
+#include "net/base/network_change_notifier_helper.h"
+
+namespace base {
+class Thread;
+} // namespace base
+
+namespace net {
+
+class NetworkChangeNotifierMac : public NetworkChangeNotifier {
+ public:
+ NetworkChangeNotifierMac();
+
+ void OnIPAddressChanged() { helper_.OnIPAddressChanged(); }
+
+ // NetworkChangeNotifier methods:
+
+ virtual void AddObserver(Observer* observer) {
+ helper_.AddObserver(observer);
+ }
+
+ virtual void RemoveObserver(Observer* observer) {
+ helper_.RemoveObserver(observer);
+ }
+
+ private:
+ friend class base::RefCounted<NetworkChangeNotifierMac>;
+
+ virtual ~NetworkChangeNotifierMac();
+
+ // Receives the OS X network change notifications on this thread.
+ const scoped_ptr<base::Thread> notifier_thread_;
+
+ internal::NetworkChangeNotifierHelper helper_;
+
+ DISALLOW_COPY_AND_ASSIGN(NetworkChangeNotifierMac);
+};
+
+} // namespace net
+
+#endif // NET_BASE_NETWORK_CHANGE_NOTIFIER_MAC_H_