15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/metrics/statistics_recorder.h"
64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/test/launcher/unit_test_launcher.h"
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "build/build_config.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "crypto/nss_util.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/socket/client_socket_pool_base.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/socket/ssl_server_socket.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/spdy/spdy_session.h"
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/test/net_test_suite.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/android/jni_android.h"
16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/android/jni_registrar.h"
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/test/test_file_util.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/android/net_jni_registrar.h"
19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "url/android/url_jni_registrar.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if !defined(OS_IOS)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/proxy/proxy_resolver_v8.h"
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using net::internal::ClientSocketPoolBaseHelper;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using net::SpdySession;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main(int argc, char** argv) {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Record histograms, so we can get histograms data in tests.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::StatisticsRecorder::Initialize();
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  const base::android::RegistrationMethod kNetTestRegisteredMethods[] = {
35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    {"NetAndroid", net::android::RegisterJni},
366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    {"TestFileUtil", base::RegisterContentUriTestUtils},
37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    {"UrlAndroid", url::android::RegisterJni},
38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  };
39010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Register JNI bindings for android. Doing it early as the test suite setup
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // may initiate a call to Java.
42010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  base::android::RegisterNativeMethods(
43010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      base::android::AttachCurrentThread(),
44010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      kNetTestRegisteredMethods,
45010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      arraysize(kNetTestRegisteredMethods));
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NetTestSuite test_suite(argc, argv);
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ClientSocketPoolBaseHelper::set_connect_backup_jobs_enabled(false);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // We want to be sure to init NSPR on the main thread.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  crypto::EnsureNSPRInit();
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enable support for SSL server sockets, which must be done while
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // single-threaded.
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::EnableSSLServerSockets();
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if !defined(OS_IOS)
61c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  net::ProxyResolverV8::EnsureIsolateCreated();
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  return base::LaunchUnitTests(
6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      argc, argv, base::Bind(&NetTestSuite::Run,
6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                             base::Unretained(&test_suite)));
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
68