Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: webkit/support/webkit_support.cc

Issue 3030018: webkit_support: Move the logger initialization code so that it is... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/support/webkit_support.h" 5 #include "webkit/support/webkit_support.h"
6 6
7 #include "base/at_exit.h" 7 #include "base/at_exit.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/debug_util.h" 9 #include "base/debug_util.h"
10 #include "base/file_path.h" 10 #include "base/file_path.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 using WebKit::WebCString; 44 using WebKit::WebCString;
45 using WebKit::WebFrame; 45 using WebKit::WebFrame;
46 using WebKit::WebMediaPlayerClient; 46 using WebKit::WebMediaPlayerClient;
47 using WebKit::WebPlugin; 47 using WebKit::WebPlugin;
48 using WebKit::WebPluginParams; 48 using WebKit::WebPluginParams;
49 using WebKit::WebString; 49 using WebKit::WebString;
50 using WebKit::WebURL; 50 using WebKit::WebURL;
51 51
52 namespace { 52 namespace {
53 53
54 // All fatal log messages (e.g. DCHECK failures) imply unit test failures
55 void UnitTestAssertHandler(const std::string& str) {
56 FAIL() << str;
57 }
58
59 void InitLogging(bool enable_gp_fault_error_box) {
60 logging::SetLogAssertHandler(UnitTestAssertHandler);
61
62 #if defined(OS_WIN)
63 if (!::IsDebuggerPresent()) {
64 UINT new_flags = SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX;
65 if (!enable_gp_fault_error_box)
66 new_flags |= SEM_NOGPFAULTERRORBOX;
67
68 // Preserve existing error mode, as discussed at
69 // http://blogs.msdn.com/oldnewthing/archive/2004/07/27/198410.aspx
70 UINT existing_flags = SetErrorMode(new_flags);
71 SetErrorMode(existing_flags | new_flags);
72 }
73 #endif
74
75 FilePath log_filename;
76 PathService::Get(base::DIR_EXE, &log_filename);
77 log_filename = log_filename.AppendASCII("DumpRenderTree.log");
78 logging::InitLogging(
79 log_filename.value().c_str(),
80 // Only log to a file. This prevents debugging output from disrupting
81 // whether or not we pass.
82 logging::LOG_ONLY_TO_FILE,
83 // We might have multiple DumpRenderTree processes going at once.
84 logging::LOCK_LOG_FILE,
85 logging::DELETE_OLD_LOG_FILE);
86
87 // We want process and thread IDs because we may have multiple processes.
88 const bool kProcessId = true;
89 const bool kThreadId = true;
90 const bool kTimestamp = true;
91 const bool kTickcount = true;
92 logging::SetLogItems(kProcessId, kThreadId, !kTimestamp, kTickcount);
93 }
94
54 class TestEnvironment { 95 class TestEnvironment {
55 public: 96 public:
56 explicit TestEnvironment(bool unit_test_mode) { 97 explicit TestEnvironment(bool unit_test_mode) {
57 if (!unit_test_mode) 98 if (!unit_test_mode) {
58 at_exit_manager_.reset(new base::AtExitManager); 99 at_exit_manager_.reset(new base::AtExitManager);
100 InitLogging(false);
101 }
59 main_message_loop_.reset(new MessageLoopForUI); 102 main_message_loop_.reset(new MessageLoopForUI);
60 // TestWebKitClient must be instantiated after the MessageLoopForUI. 103 // TestWebKitClient must be instantiated after the MessageLoopForUI.
61 webkit_client_.reset(new TestWebKitClient(unit_test_mode)); 104 webkit_client_.reset(new TestWebKitClient(unit_test_mode));
62 } 105 }
63 106
64 ~TestEnvironment() { 107 ~TestEnvironment() {
65 SimpleResourceLoaderBridge::Shutdown(); 108 SimpleResourceLoaderBridge::Shutdown();
66 } 109 }
67 110
68 TestWebKitClient* webkit_client() { return webkit_client_.get(); } 111 TestWebKitClient* webkit_client() { return webkit_client_.get(); }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 FilePath basePath; 148 FilePath basePath;
106 PathService::Get(base::DIR_SOURCE_ROOT, &basePath); 149 PathService::Get(base::DIR_SOURCE_ROOT, &basePath);
107 if (file_util::PathExists(basePath.Append(FILE_PATH_LITERAL("chrome")))) { 150 if (file_util::PathExists(basePath.Append(FILE_PATH_LITERAL("chrome")))) {
108 return basePath.Append(FILE_PATH_LITERAL("third_party/WebKit")); 151 return basePath.Append(FILE_PATH_LITERAL("third_party/WebKit"));
109 } else { 152 } else {
110 // WebKit/WebKit/chromium/ -> WebKit/ 153 // WebKit/WebKit/chromium/ -> WebKit/
111 return basePath.Append(FILE_PATH_LITERAL("../..")); 154 return basePath.Append(FILE_PATH_LITERAL("../.."));
112 } 155 }
113 } 156 }
114 157
115 // All fatal log messages (e.g. DCHECK failures) imply unit test failures
116 void UnitTestAssertHandler(const std::string& str) {
117 FAIL() << str;
118 }
119
120 void InitLogging(bool enable_gp_fault_error_box) {
121 logging::SetLogAssertHandler(UnitTestAssertHandler);
122
123 #if defined(OS_WIN)
124 if (!::IsDebuggerPresent()) {
125 UINT new_flags = SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX;
126 if (!enable_gp_fault_error_box)
127 new_flags |= SEM_NOGPFAULTERRORBOX;
128
129 // Preserve existing error mode, as discussed at
130 // http://blogs.msdn.com/oldnewthing/archive/2004/07/27/198410.aspx
131 UINT existing_flags = SetErrorMode(new_flags);
132 SetErrorMode(existing_flags | new_flags);
133 }
134 #endif
135
136 FilePath log_filename;
137 PathService::Get(base::DIR_EXE, &log_filename);
138 log_filename = log_filename.AppendASCII("DumpRenderTree.log");
139 logging::InitLogging(
140 log_filename.value().c_str(),
141 // Only log to a file. This prevents debugging output from disrupting
142 // whether or not we pass.
143 logging::LOG_ONLY_TO_FILE,
144 // We might have multiple DumpRenderTree processes going at once.
145 logging::LOCK_LOG_FILE,
146 logging::DELETE_OLD_LOG_FILE);
147
148 // We want process and thread IDs because we may have multiple processes.
149 const bool kProcessId = true;
150 const bool kThreadId = true;
151 const bool kTimestamp = true;
152 const bool kTickcount = true;
153 logging::SetLogItems(kProcessId, kThreadId, !kTimestamp, kTickcount);
154 }
155
156 } // namespace 158 } // namespace
157 159
158 namespace webkit_support { 160 namespace webkit_support {
159 161
160 static TestEnvironment* test_environment; 162 static TestEnvironment* test_environment;
161 163
162 static void SetUpTestEnvironmentImpl(bool unit_test_mode) { 164 static void SetUpTestEnvironmentImpl(bool unit_test_mode) {
163 base::EnableInProcessStackDumping(); 165 base::EnableInProcessStackDumping();
164 base::EnableTerminationOnHeapCorruption(); 166 base::EnableTerminationOnHeapCorruption();
165 167
166 // Initialize the singleton CommandLine with fixed values. Some code refer to 168 // Initialize the singleton CommandLine with fixed values. Some code refer to
167 // CommandLine::ForCurrentProcess(). We don't use the actual command-line 169 // CommandLine::ForCurrentProcess(). We don't use the actual command-line
168 // arguments of DRT to avoid unexpected behavior change. 170 // arguments of DRT to avoid unexpected behavior change.
169 // 171 //
170 // webkit/glue/webmediaplayer_impl.cc checks --enable-openmax. 172 // webkit/glue/webmediaplayer_impl.cc checks --enable-openmax.
171 // webkit/glue/plugin/plugin_list_posix.cc checks --debug-plugin-loading. 173 // webkit/glue/plugin/plugin_list_posix.cc checks --debug-plugin-loading.
172 // webkit/glue/plugin/plugin_list_win.cc checks --old-wmp. 174 // webkit/glue/plugin/plugin_list_win.cc checks --old-wmp.
173 // If DRT needs these flags, specify them in the following kFixedArguments. 175 // If DRT needs these flags, specify them in the following kFixedArguments.
174 const char* kFixedArguments[] = {"DumpRenderTree"}; 176 const char* kFixedArguments[] = {"DumpRenderTree"};
175 CommandLine::Init(arraysize(kFixedArguments), kFixedArguments); 177 CommandLine::Init(arraysize(kFixedArguments), kFixedArguments);
176 178
177 InitLogging(false);
178
179 webkit_support::BeforeInitialize(); 179 webkit_support::BeforeInitialize();
180 webkit_support::test_environment = new TestEnvironment(unit_test_mode); 180 webkit_support::test_environment = new TestEnvironment(unit_test_mode);
181 webkit_support::AfterInitialize(); 181 webkit_support::AfterInitialize();
182 if (!unit_test_mode) { 182 if (!unit_test_mode) {
183 // Load ICU data tables. This has to run after TestEnvironment is created 183 // Load ICU data tables. This has to run after TestEnvironment is created
184 // because on Linux, we need base::AtExitManager. 184 // because on Linux, we need base::AtExitManager.
185 icu_util::Initialize(); 185 icu_util::Initialize();
186 } 186 }
187 } 187 }
188 188
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 if (!webkit_glue::GetExeDirectory(&dirExe)) { 444 if (!webkit_glue::GetExeDirectory(&dirExe)) {
445 DCHECK(false); 445 DCHECK(false);
446 return WebURL(); 446 return WebURL();
447 } 447 }
448 FilePath devToolsPath = dirExe.AppendASCII( 448 FilePath devToolsPath = dirExe.AppendASCII(
449 "resources/inspector/devtools.html"); 449 "resources/inspector/devtools.html");
450 return net::FilePathToFileURL(devToolsPath); 450 return net::FilePathToFileURL(devToolsPath);
451 } 451 }
452 452
453 } // namespace webkit_support 453 } // namespace webkit_support
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698