Remove COMPOSITOR_2 flag, old compositor code.
[chromium-blink-merge.git] / chrome / test / unit / chrome_test_suite.cc
blob09e184d338f622edbe678a05cd0196b19911e529
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.
5 #include "chrome/test/unit/chrome_test_suite.h"
7 #include "app/app_paths.h"
8 #include "base/command_line.h"
9 #include "base/mac/scoped_nsautorelease_pool.h"
10 #include "base/metrics/stats_table.h"
11 #include "base/process_util.h"
12 #include "base/stringprintf.h"
13 #include "base/utf_string_conversions.h"
14 #include "chrome/browser/browser_process.h"
15 #include "chrome/common/chrome_constants.h"
16 #include "chrome/common/chrome_content_client.h"
17 #include "chrome/common/chrome_paths.h"
18 #include "chrome/common/url_constants.h"
19 #include "chrome/test/testing_browser_process.h"
20 #include "content/common/content_paths.h"
21 #include "net/base/net_errors.h"
22 #include "ui/base/resource/resource_bundle.h"
23 #include "ui/base/ui_base_paths.h"
24 #if defined(TOOLKIT_VIEWS)
25 #include "views/view.h"
26 #endif
28 #if defined(OS_MACOSX)
29 #include "base/mac/mac_util.h"
30 #include "content/common/chrome_application_mac.h"
31 #endif
33 #if defined(OS_POSIX)
34 #include "base/shared_memory.h"
35 #endif
37 static void RemoveSharedMemoryFile(const std::string& filename) {
38 // Stats uses SharedMemory under the hood. On posix, this results in a file
39 // on disk.
40 #if defined(OS_POSIX)
41 base::SharedMemory memory;
42 memory.Delete(filename);
43 #endif
46 LocalHostResolverProc::LocalHostResolverProc()
47 : HostResolverProc(NULL) {
50 LocalHostResolverProc::~LocalHostResolverProc() {
53 int LocalHostResolverProc::Resolve(const std::string& host,
54 net::AddressFamily address_family,
55 net::HostResolverFlags host_resolver_flags,
56 net::AddressList* addrlist,
57 int* os_error) {
58 const char* kLocalHostNames[] = {"localhost", "127.0.0.1", "::1"};
59 bool local = false;
61 if (host == net::GetHostName()) {
62 local = true;
63 } else {
64 for (size_t i = 0; i < arraysize(kLocalHostNames); i++)
65 if (host == kLocalHostNames[i]) {
66 local = true;
67 break;
71 // To avoid depending on external resources and to reduce (if not preclude)
72 // network interactions from tests, we simulate failure for non-local DNS
73 // queries, rather than perform them.
74 // If you really need to make an external DNS query, use
75 // net::RuleBasedHostResolverProc and its AllowDirectLookup method.
76 if (!local) {
77 DVLOG(1) << "To avoid external dependencies, simulating failure for "
78 "external DNS lookup of " << host;
79 return net::ERR_NOT_IMPLEMENTED;
82 return ResolveUsingPrevious(host, address_family, host_resolver_flags,
83 addrlist, os_error);
86 ChromeTestSuite::ChromeTestSuite(int argc, char** argv)
87 : base::TestSuite(argc, argv),
88 stats_table_(NULL) {
91 ChromeTestSuite::~ChromeTestSuite() {
94 void ChromeTestSuite::Initialize() {
95 #if defined(OS_MACOSX)
96 chrome_application_mac::RegisterCrApp();
97 #endif
99 base::mac::ScopedNSAutoreleasePool autorelease_pool;
101 base::TestSuite::Initialize();
103 // Initialize the content client which that code uses to talk to Chrome.
104 content::SetContentClient(&chrome_content_client_);
105 content::GetContentClient()->set_browser(&chrome_browser_content_client_);
107 chrome::RegisterChromeSchemes();
108 host_resolver_proc_ = new LocalHostResolverProc();
109 scoped_host_resolver_proc_.Init(host_resolver_proc_.get());
111 chrome::RegisterPathProvider();
112 app::RegisterPathProvider();
113 content::RegisterPathProvider();
114 ui::RegisterPathProvider();
115 g_browser_process = new TestingBrowserProcess;
117 if (!browser_dir_.empty()) {
118 PathService::Override(base::DIR_EXE, browser_dir_);
119 PathService::Override(base::DIR_MODULE, browser_dir_);
122 #if defined(OS_MACOSX)
123 // Look in the framework bundle for resources.
124 FilePath path;
125 PathService::Get(base::DIR_EXE, &path);
126 path = path.Append(chrome::kFrameworkName);
127 base::mac::SetOverrideAppBundlePath(path);
128 #endif
130 // Force unittests to run using en-US so if we test against string
131 // output, it'll pass regardless of the system language.
132 ResourceBundle::InitSharedInstance("en-US");
133 FilePath resources_pack_path;
134 PathService::Get(base::DIR_MODULE, &resources_pack_path);
135 resources_pack_path =
136 resources_pack_path.Append(FILE_PATH_LITERAL("resources.pak"));
137 ResourceBundle::AddDataPackToSharedInstance(resources_pack_path);
139 // initialize the global StatsTable for unit_tests (make sure the file
140 // doesn't exist before opening it so the test gets a clean slate)
141 stats_filename_ = "unit_tests";
142 std::string pid_string = base::StringPrintf("-%d", base::GetCurrentProcId());
143 stats_filename_ += pid_string;
144 RemoveSharedMemoryFile(stats_filename_);
145 stats_table_ = new base::StatsTable(stats_filename_, 20, 200);
146 base::StatsTable::set_current(stats_table_);
148 #if defined(TOOLKIT_VIEWS) && defined(OS_LINUX)
149 // Turn of GPU compositing in browser during unit tests.
150 views::View::set_use_acceleration_when_possible(false);
151 #endif
154 void ChromeTestSuite::Shutdown() {
155 ResourceBundle::CleanupSharedInstance();
157 #if defined(OS_MACOSX)
158 base::mac::SetOverrideAppBundle(NULL);
159 #endif
161 delete g_browser_process;
162 g_browser_process = NULL;
164 // Tear down shared StatsTable; prevents unit_tests from leaking it.
165 base::StatsTable::set_current(NULL);
166 delete stats_table_;
167 RemoveSharedMemoryFile(stats_filename_);
169 base::TestSuite::Shutdown();