Home | History | Annotate | Download | only in test
      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