| Index: chrome/common/net/network_change_observer_proxy_unittest.cc
|
| ===================================================================
|
| --- chrome/common/net/network_change_observer_proxy_unittest.cc (revision 50775)
|
| +++ chrome/common/net/network_change_observer_proxy_unittest.cc (working copy)
|
| @@ -1,230 +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.
|
| -
|
| -#include "chrome/common/net/network_change_observer_proxy.h"
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/logging.h"
|
| -#include "base/ref_counted.h"
|
| -#include "chrome/common/net/fake_network_change_notifier_thread.h"
|
| -#include "chrome/common/net/mock_network_change_observer.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace chrome_common_net {
|
| -
|
| -namespace {
|
| -
|
| -// Version of NetworkChangeObserverProxy that records on what thread
|
| -// it was deleted.
|
| -class DeleteCheckingNetworkChangeObserverProxy
|
| - : public NetworkChangeObserverProxy {
|
| - public:
|
| - // *deleting_message_loop_ must be NULL. It is set to a non-NULL
|
| - // *value when this object is deleted.
|
| - DeleteCheckingNetworkChangeObserverProxy(
|
| - NetworkChangeNotifierThread* source_thread,
|
| - MessageLoop* target_message_loop,
|
| - MessageLoop** deleting_message_loop)
|
| - : NetworkChangeObserverProxy(source_thread, target_message_loop),
|
| - deleting_message_loop_(deleting_message_loop) {
|
| - CHECK(deleting_message_loop_);
|
| - EXPECT_TRUE(*deleting_message_loop_ == NULL);
|
| - }
|
| -
|
| - private:
|
| - virtual ~DeleteCheckingNetworkChangeObserverProxy() {
|
| - *deleting_message_loop_ = MessageLoop::current();
|
| - }
|
| -
|
| - MessageLoop** deleting_message_loop_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DeleteCheckingNetworkChangeObserverProxy);
|
| -};
|
| -
|
| -class NetworkChangeObserverProxyTest : public testing::Test {
|
| - protected:
|
| - NetworkChangeObserverProxyTest() : proxy_deleting_message_loop_(NULL) {}
|
| -
|
| - virtual ~NetworkChangeObserverProxyTest() {}
|
| -
|
| - virtual void SetUp() {
|
| - source_thread_.Start();
|
| - proxy_deleting_message_loop_ = NULL;
|
| - proxy_ = new DeleteCheckingNetworkChangeObserverProxy(
|
| - &source_thread_, &target_message_loop_,
|
| - &proxy_deleting_message_loop_);
|
| - }
|
| -
|
| - // On TearDown, |proxy_| must be released and both source and target
|
| - // must be pumped.
|
| - virtual void TearDown() {
|
| - EXPECT_TRUE(proxy_ == NULL);
|
| - EXPECT_TRUE(proxy_deleting_message_loop_ != NULL);
|
| - source_thread_.Stop();
|
| - }
|
| -
|
| - // Pump any events posted on the source thread.
|
| - void PumpSource() {
|
| - source_thread_.Pump();
|
| - }
|
| -
|
| - // Pump any events posted on the target thread (which is just the
|
| - // main test thread).
|
| - void PumpTarget() {
|
| - target_message_loop_.RunAllPending();
|
| - }
|
| -
|
| - // Trigger an "IP address changed" event on the source network
|
| - // change notifier on the source thread.
|
| - void NotifyIPAddressChange() {
|
| - source_thread_.NotifyIPAddressChange();
|
| - }
|
| -
|
| - FakeNetworkChangeNotifierThread source_thread_;
|
| -
|
| - MessageLoop target_message_loop_;
|
| - MockNetworkChangeObserver target_observer_;
|
| -
|
| - MessageLoop* proxy_deleting_message_loop_;
|
| - scoped_refptr<NetworkChangeObserverProxy> proxy_;
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(NetworkChangeObserverProxyTest);
|
| -};
|
| -
|
| -// Make sure nothing blows up if we don't attach the proxy.
|
| -TEST_F(NetworkChangeObserverProxyTest, DoNothing) {
|
| - EXPECT_CALL(target_observer_, OnIPAddressChanged()).Times(0);
|
| -
|
| - proxy_ = NULL;
|
| - // No need to pump.
|
| -
|
| - EXPECT_EQ(proxy_deleting_message_loop_, &target_message_loop_);
|
| -}
|
| -
|
| -TEST_F(NetworkChangeObserverProxyTest, AttachDetach) {
|
| - EXPECT_CALL(target_observer_, OnIPAddressChanged()).Times(0);
|
| -
|
| - proxy_->Attach(&target_observer_);
|
| - proxy_->Detach();
|
| - proxy_ = NULL;
|
| - PumpSource();
|
| -
|
| - EXPECT_EQ(proxy_deleting_message_loop_, source_thread_.GetMessageLoop());
|
| -}
|
| -
|
| -TEST_F(NetworkChangeObserverProxyTest, AttachDetachReleaseAfterPump) {
|
| - EXPECT_CALL(target_observer_, OnIPAddressChanged()).Times(0);
|
| -
|
| - proxy_->Attach(&target_observer_);
|
| - proxy_->Detach();
|
| - PumpSource();
|
| - proxy_ = NULL;
|
| -
|
| - EXPECT_EQ(proxy_deleting_message_loop_, &target_message_loop_);
|
| -}
|
| -
|
| -TEST_F(NetworkChangeObserverProxyTest, Basic) {
|
| - EXPECT_CALL(target_observer_, OnIPAddressChanged()).Times(1);
|
| -
|
| - proxy_->Attach(&target_observer_);
|
| - NotifyIPAddressChange();
|
| - PumpSource();
|
| - PumpTarget();
|
| - proxy_->Detach();
|
| - proxy_ = NULL;
|
| - PumpSource();
|
| -
|
| - EXPECT_EQ(proxy_deleting_message_loop_, source_thread_.GetMessageLoop());
|
| -}
|
| -
|
| -TEST_F(NetworkChangeObserverProxyTest, Multiple) {
|
| - const int kTimes = 5;
|
| - EXPECT_CALL(target_observer_, OnIPAddressChanged()).Times(kTimes);
|
| -
|
| - proxy_->Attach(&target_observer_);
|
| - for (int i = 0; i < kTimes; ++i) {
|
| - NotifyIPAddressChange();
|
| - }
|
| - PumpSource();
|
| - PumpTarget();
|
| - proxy_->Detach();
|
| - proxy_ = NULL;
|
| - PumpSource();
|
| -
|
| - EXPECT_EQ(proxy_deleting_message_loop_, source_thread_.GetMessageLoop());
|
| -}
|
| -
|
| -TEST_F(NetworkChangeObserverProxyTest, MultipleAttachDetach) {
|
| - const int kTimes = 5;
|
| - EXPECT_CALL(target_observer_, OnIPAddressChanged()).Times(kTimes);
|
| -
|
| - for (int i = 0; i < kTimes; ++i) {
|
| - proxy_->Attach(&target_observer_);
|
| - NotifyIPAddressChange();
|
| - PumpSource();
|
| - PumpTarget();
|
| - proxy_->Detach();
|
| - }
|
| - proxy_ = NULL;
|
| - PumpSource();
|
| -
|
| - EXPECT_EQ(proxy_deleting_message_loop_, source_thread_.GetMessageLoop());
|
| -}
|
| -
|
| -TEST_F(NetworkChangeObserverProxyTest, IgnoresEventPostedAfterDetach) {
|
| - EXPECT_CALL(target_observer_, OnIPAddressChanged()).Times(0);
|
| -
|
| - proxy_->Attach(&target_observer_);
|
| - NotifyIPAddressChange();
|
| - proxy_->Detach();
|
| - proxy_ = NULL;
|
| - PumpSource();
|
| - PumpTarget();
|
| -
|
| - EXPECT_EQ(proxy_deleting_message_loop_, &target_message_loop_);
|
| -}
|
| -
|
| -TEST_F(NetworkChangeObserverProxyTest, IgnoresEventPostedBeforeDetach) {
|
| - EXPECT_CALL(target_observer_, OnIPAddressChanged()).Times(0);
|
| -
|
| - proxy_->Attach(&target_observer_);
|
| - NotifyIPAddressChange();
|
| - PumpSource();
|
| - proxy_->Detach();
|
| - proxy_ = NULL;
|
| - PumpTarget();
|
| - PumpSource();
|
| -
|
| - EXPECT_EQ(proxy_deleting_message_loop_, source_thread_.GetMessageLoop());
|
| -}
|
| -
|
| -TEST_F(NetworkChangeObserverProxyTest, IgnoresEventAfterDetach) {
|
| - EXPECT_CALL(target_observer_, OnIPAddressChanged()).Times(0);
|
| -
|
| - proxy_->Attach(&target_observer_);
|
| - proxy_->Detach();
|
| - proxy_ = NULL;
|
| - NotifyIPAddressChange();
|
| - PumpSource();
|
| -
|
| - EXPECT_EQ(proxy_deleting_message_loop_, source_thread_.GetMessageLoop());
|
| -}
|
| -
|
| -TEST_F(NetworkChangeObserverProxyTest, IgnoresEventBeforeAttach) {
|
| - EXPECT_CALL(target_observer_, OnIPAddressChanged()).Times(0);
|
| -
|
| - NotifyIPAddressChange();
|
| - PumpSource();
|
| - proxy_->Attach(&target_observer_);
|
| - proxy_->Detach();
|
| - proxy_ = NULL;
|
| - PumpSource();
|
| -
|
| - EXPECT_EQ(proxy_deleting_message_loop_, source_thread_.GetMessageLoop());
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -} // namespace chrome_common_net
|
|
|