Index: chrome/common/net/network_change_observer_proxy.h |
=================================================================== |
--- chrome/common/net/network_change_observer_proxy.h (revision 50775) |
+++ chrome/common/net/network_change_observer_proxy.h (working copy) |
@@ -1,114 +0,0 @@ |
-// Copyright (c) 2010 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_COMMON_NET_NETWORK_CHANGE_OBSERVER_PROXY_H_ |
-#define CHROME_COMMON_NET_NETWORK_CHANGE_OBSERVER_PROXY_H_ |
- |
-// NetworkChangeObserverProxy is a class that listens to a |
-// NetworkChangeNotifier on one thread (the source thread, which is |
-// usually the Chrome IO thread) and emits events to a target observer |
-// on another thread (the target thread). |
-// |
-// How to use: |
-// |
-// In the target thread, create the observer proxy: |
-// |
-// NetworkChangeNotifierThread* source_thread = ...; |
-// NetworkChangeObserverProxy* proxy = |
-// new NetworkChangeObserverProxy(source_thread, |
-// MessageLoop::current()); |
-// |
-// Both source_thread and its owned NetworkChangeNotifier must be |
-// guaranteed to outlive the target (current) thread. |
-// |
-// Then, attach the target observer: |
-// |
-// proxy->Attach(target_observer); |
-// |
-// target_observer will then begin to receive events on the target |
-// thread. |
-// |
-// If you call Attach(), you *must* call Detach() before releasing: |
-// |
-// proxy->Detach(); |
-// proxy->Release(); // omit if proxy is a scoped_refptr |
-// proxy = NULL; |
-// |
-// The proxy may be destroyed on either the source or the target |
-// thread (depending on which one ends up holding the last reference). |
- |
-#include "base/basictypes.h" |
-#include "base/message_loop.h" |
-#include "base/ref_counted.h" |
-#include "net/base/network_change_notifier.h" |
- |
-namespace chrome_common_net { |
- |
-class NetworkChangeNotifierThread; |
- |
-// TODO(akalin): Remove use of private inheritance. |
-class NetworkChangeObserverProxy |
- : public base::RefCountedThreadSafe<NetworkChangeObserverProxy>, |
- private net::NetworkChangeNotifier::Observer { |
- public: |
- // All public methods (including the constructor) must be called on |
- // the target thread. |
- |
- // Does not take ownership of any arguments. |
- NetworkChangeObserverProxy( |
- const NetworkChangeNotifierThread* source_thread, |
- MessageLoop* target_message_loop); |
- |
- // After this method is called, |target_observer| will start |
- // receiving events on the target thread. Once called, Detach() |
- // must be called before releasing and you cannot call Attach() |
- // again until you have done so. Does not take ownership of |
- // |target_observer|. |
- void Attach(net::NetworkChangeNotifier::Observer* target_observer); |
- |
- // After this method is called, the target observer will stop |
- // receiving events. You can call Attach() again after this method |
- // is called. |
- void Detach(); |
- |
- protected: |
- // May be called on either the source or the target thread. Marked |
- // protected instead of private so that this class can be subclassed |
- // for unit tests. |
- virtual ~NetworkChangeObserverProxy(); |
- |
- private: |
- friend class base::RefCountedThreadSafe<NetworkChangeObserverProxy>; |
- |
- // Adds ourselves as an observer of |
- // |source_network_change_notifier_|. Must be called on the source |
- // thread. |
- void Observe(); |
- |
- // Removes ourselves as an observer of |
- // |source_network_change_notifier_|. Must be called on the source |
- // thread. |
- void Unobserve(); |
- |
- // net::NetworkChangeNotifier::Observer implementation. |
- // |
- // Called on the source thread. Posts |
- // TargetObserverOnIPAddressChanged() on the target thread. |
- virtual void OnIPAddressChanged(); |
- |
- // Called on the target thread. Invokes OnIPAddressChanged() on |
- // |target_observer_|. |
- void TargetObserverOnIPAddressChanged(); |
- |
- const NetworkChangeNotifierThread* source_thread_; |
- MessageLoop* const target_message_loop_; |
- // |target_observer_| is used only by the target thread. |
- net::NetworkChangeNotifier::Observer* target_observer_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NetworkChangeObserverProxy); |
-}; |
- |
-} // namespace chrome_common_net |
- |
-#endif // CHROME_COMMON_NET_NETWORK_CHANGE_OBSERVER_PROXY_H_ |