1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef NET_TEST_NET_TEST_SUITE_H_ 6 #define NET_TEST_NET_TEST_SUITE_H_ 7 8 #include "base/memory/ref_counted.h" 9 #include "base/test/test_suite.h" 10 #include "build/build_config.h" 11 #include "net/dns/mock_host_resolver.h" 12 13 namespace base { 14 class MessageLoop; 15 } 16 17 namespace net { 18 class NetworkChangeNotifier; 19 } 20 21 class NetTestSuite : public base::TestSuite { 22 public: 23 NetTestSuite(int argc, char** argv); 24 virtual ~NetTestSuite(); 25 26 virtual void Initialize() OVERRIDE; 27 28 virtual void Shutdown() OVERRIDE; 29 30 protected: 31 // This constructor is only accessible to specialized net test 32 // implementations which need to control the creation of an AtExitManager 33 // instance for the duration of the test. 34 NetTestSuite(int argc, char** argv, bool create_at_exit_manager); 35 36 // Called from within Initialize(), but separate so that derived classes 37 // can initialize the NetTestSuite instance only and not 38 // TestSuite::Initialize(). TestSuite::Initialize() performs some global 39 // initialization that can only be done once. 40 void InitializeTestThread(); 41 42 // Same as above, except it does not create a mock 43 // NetworkChangeNotifier. Use this if your test needs to create and 44 // manage its own mock NetworkChangeNotifier, or if your test uses 45 // the production NetworkChangeNotifier. 46 void InitializeTestThreadNoNetworkChangeNotifier(); 47 48 private: 49 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; 50 scoped_ptr<base::MessageLoop> message_loop_; 51 scoped_refptr<net::RuleBasedHostResolverProc> host_resolver_proc_; 52 net::ScopedDefaultHostResolverProc scoped_host_resolver_proc_; 53 }; 54 55 #endif // NET_TEST_NET_TEST_SUITE_H_ 56