• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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