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

Side by Side Diff: chrome/test/chromedriver/logging.cc

Issue 2743013002: Add webdriver endpoint to send custom debugger commands (Closed)
Patch Set: Adding stub, quick code reorg Created 3 years, 7 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
« no previous file with comments | « chrome/test/chromedriver/logging.h ('k') | chrome/test/chromedriver/server/http_handler.cc » ('j') | 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/test/chromedriver/logging.h" 5 #include "chrome/test/chromedriver/logging.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <stdio.h> 9 #include <stdio.h>
10 10
11 #include <memory> 11 #include <memory>
12 #include <utility> 12 #include <utility>
13 13
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/json/json_reader.h" 15 #include "base/json/json_reader.h"
16 #include "base/logging.h" 16 #include "base/logging.h"
17 #include "base/macros.h" 17 #include "base/macros.h"
18 #include "base/memory/ptr_util.h" 18 #include "base/memory/ptr_util.h"
19 #include "base/strings/stringprintf.h" 19 #include "base/strings/stringprintf.h"
20 #include "base/time/time.h" 20 #include "base/time/time.h"
21 #include "build/build_config.h" 21 #include "build/build_config.h"
22 #include "chrome/test/chromedriver/capabilities.h" 22 #include "chrome/test/chromedriver/capabilities.h"
23 #include "chrome/test/chromedriver/chrome/console_logger.h" 23 #include "chrome/test/chromedriver/chrome/console_logger.h"
24 #include "chrome/test/chromedriver/chrome/status.h" 24 #include "chrome/test/chromedriver/chrome/status.h"
25 #include "chrome/test/chromedriver/command_listener_proxy.h" 25 #include "chrome/test/chromedriver/command_listener_proxy.h"
26 #include "chrome/test/chromedriver/devtools_events_logger.h"
26 #include "chrome/test/chromedriver/performance_logger.h" 27 #include "chrome/test/chromedriver/performance_logger.h"
27 #include "chrome/test/chromedriver/session.h" 28 #include "chrome/test/chromedriver/session.h"
28 29
29 #if defined(OS_POSIX) 30 #if defined(OS_POSIX)
30 #include <fcntl.h> 31 #include <fcntl.h>
31 #include <unistd.h> 32 #include <unistd.h>
32 #endif 33 #endif
33 34
34 35
35 namespace { 36 namespace {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 session_log->AddEntry(level, message); 125 session_log->AddEntry(level, message);
125 126
126 return true; 127 return true;
127 } 128 }
128 129
129 } // namespace 130 } // namespace
130 131
131 const char WebDriverLog::kBrowserType[] = "browser"; 132 const char WebDriverLog::kBrowserType[] = "browser";
132 const char WebDriverLog::kDriverType[] = "driver"; 133 const char WebDriverLog::kDriverType[] = "driver";
133 const char WebDriverLog::kPerformanceType[] = "performance"; 134 const char WebDriverLog::kPerformanceType[] = "performance";
135 const char WebDriverLog::kDevToolsType[] = "devtools";
134 136
135 bool WebDriverLog::NameToLevel(const std::string& name, Log::Level* out_level) { 137 bool WebDriverLog::NameToLevel(const std::string& name, Log::Level* out_level) {
136 for (size_t i = 0; i < arraysize(kNameToLevel); ++i) { 138 for (size_t i = 0; i < arraysize(kNameToLevel); ++i) {
137 if (name == kNameToLevel[i].name) { 139 if (name == kNameToLevel[i].name) {
138 *out_level = kNameToLevel[i].level; 140 *out_level = kNameToLevel[i].level;
139 return true; 141 return true;
140 } 142 }
141 } 143 }
142 return false; 144 return false;
143 } 145 }
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 PerformanceLogger* perf_log = 299 PerformanceLogger* perf_log =
298 static_cast<PerformanceLogger*>(devtools_listeners.back().get()); 300 static_cast<PerformanceLogger*>(devtools_listeners.back().get());
299 // We use a proxy for |perf_log|'s |CommandListener| interface. 301 // We use a proxy for |perf_log|'s |CommandListener| interface.
300 // Otherwise, |perf_log| would be owned by both session->chrome and 302 // Otherwise, |perf_log| would be owned by both session->chrome and
301 // |session|, which would lead to memory errors on destruction. 303 // |session|, which would lead to memory errors on destruction.
302 // session->chrome will own |perf_log|, and |session| will own |proxy|. 304 // session->chrome will own |perf_log|, and |session| will own |proxy|.
303 // session->command_listeners (the proxy) will be destroyed first. 305 // session->command_listeners (the proxy) will be destroyed first.
304 command_listeners.push_back( 306 command_listeners.push_back(
305 base::MakeUnique<CommandListenerProxy>(perf_log)); 307 base::MakeUnique<CommandListenerProxy>(perf_log));
306 } 308 }
309 } else if (type == WebDriverLog::kDevToolsType) {
310 logs.push_back(base::MakeUnique<WebDriverLog>(type, Log::kAll));
311 devtools_listeners.push_back(
312 base::MakeUnique<DevToolsEventsLogger>(
313 logs.back().get(),
314 capabilities.devtools_events_logging_prefs.get()));
307 } else if (type == WebDriverLog::kBrowserType) { 315 } else if (type == WebDriverLog::kBrowserType) {
308 browser_log_level = level; 316 browser_log_level = level;
309 } else if (type != WebDriverLog::kDriverType) { 317 } else if (type != WebDriverLog::kDriverType) {
310 // Driver "should" ignore unrecognized log types, per Selenium tests. 318 // Driver "should" ignore unrecognized log types, per Selenium tests.
311 // For example the Java client passes the "client" log type in the caps, 319 // For example the Java client passes the "client" log type in the caps,
312 // which the server should never provide. 320 // which the server should never provide.
313 LOG(WARNING) << "Ignoring unrecognized log type: " << type; 321 LOG(WARNING) << "Ignoring unrecognized log type: " << type;
314 } 322 }
315 } 323 }
316 // Create "browser" log -- should always exist. 324 // Create "browser" log -- should always exist.
317 logs.push_back(base::MakeUnique<WebDriverLog>(WebDriverLog::kBrowserType, 325 logs.push_back(base::MakeUnique<WebDriverLog>(WebDriverLog::kBrowserType,
318 browser_log_level)); 326 browser_log_level));
319 // If the level is OFF, don't even bother listening for DevTools events. 327 // If the level is OFF, don't even bother listening for DevTools events.
320 if (browser_log_level != Log::kOff) 328 if (browser_log_level != Log::kOff)
321 devtools_listeners.push_back( 329 devtools_listeners.push_back(
322 base::MakeUnique<ConsoleLogger>(logs.back().get())); 330 base::MakeUnique<ConsoleLogger>(logs.back().get()));
323 331
324 out_logs->swap(logs); 332 out_logs->swap(logs);
325 out_devtools_listeners->swap(devtools_listeners); 333 out_devtools_listeners->swap(devtools_listeners);
326 out_command_listeners->swap(command_listeners); 334 out_command_listeners->swap(command_listeners);
327 return Status(kOk); 335 return Status(kOk);
328 } 336 }
OLDNEW
« no previous file with comments | « chrome/test/chromedriver/logging.h ('k') | chrome/test/chromedriver/server/http_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698