Chromium Code Reviews| Index: chrome/test/chromedriver/logging.cc |
| diff --git a/chrome/test/chromedriver/logging.cc b/chrome/test/chromedriver/logging.cc |
| index c9ddf25c24dd3e49be22855b9dbcf343c11c1a0a..40b8c06b3461e145e2fe2c53e7fa1519bbe7e7e7 100644 |
| --- a/chrome/test/chromedriver/logging.cc |
| +++ b/chrome/test/chromedriver/logging.cc |
| @@ -5,6 +5,7 @@ |
| #include "chrome/test/chromedriver/logging.h" |
| #include <stdio.h> |
| +#include <list> |
|
stgao
2014/07/01 19:02:27
Unused.
johnmoore
2014/07/02 22:17:44
Done.
|
| #include "base/basictypes.h" |
| #include "base/command_line.h" |
| @@ -14,8 +15,9 @@ |
| #include "base/time/time.h" |
| #include "chrome/test/chromedriver/capabilities.h" |
| #include "chrome/test/chromedriver/chrome/console_logger.h" |
| -#include "chrome/test/chromedriver/chrome/performance_logger.h" |
| #include "chrome/test/chromedriver/chrome/status.h" |
| +#include "chrome/test/chromedriver/command_listener_proxy.h" |
| +#include "chrome/test/chromedriver/performance_logger.h" |
| #include "chrome/test/chromedriver/session.h" |
| #if defined(OS_POSIX) |
| @@ -239,9 +241,11 @@ bool InitLogging() { |
| Status CreateLogs(const Capabilities& capabilities, |
| ScopedVector<WebDriverLog>* out_logs, |
| - ScopedVector<DevToolsEventListener>* out_listeners) { |
| + ScopedVector<DevToolsEventListener>* out_devtools_listeners, |
| + ScopedVector<CommandListener>* out_command_listeners) { |
| ScopedVector<WebDriverLog> logs; |
| - ScopedVector<DevToolsEventListener> listeners; |
| + ScopedVector<DevToolsEventListener> devtools_listeners; |
| + ScopedVector<CommandListener> command_listeners; |
| Log::Level browser_log_level = Log::kWarning; |
| const LoggingPrefs& prefs = capabilities.logging_prefs; |
| @@ -254,7 +258,13 @@ Status CreateLogs(const Capabilities& capabilities, |
| if (level != Log::kOff) { |
| WebDriverLog* log = new WebDriverLog(type, Log::kAll); |
| logs.push_back(log); |
| - listeners.push_back(new PerformanceLogger(log)); |
| + PerformanceLogger* perf_log = new PerformanceLogger(log); |
| + // We use a proxy for |perf_log|'s |CommandListener| interface. |
| + // session->chrome will own |perf_log|, and |session| will own |proxy|. |
| + // session->command_listeners (the proxy) will be destroyed first. |
| + CommandListenerProxy* proxy = new CommandListenerProxy(perf_log); |
| + devtools_listeners.push_back(perf_log); |
| + command_listeners.push_back(proxy); |
| } |
| } else if (type == WebDriverLog::kBrowserType) { |
| browser_log_level = level; |
| @@ -271,9 +281,10 @@ Status CreateLogs(const Capabilities& capabilities, |
| logs.push_back(browser_log); |
| // If the level is OFF, don't even bother listening for DevTools events. |
| if (browser_log_level != Log::kOff) |
| - listeners.push_back(new ConsoleLogger(browser_log)); |
| + devtools_listeners.push_back(new ConsoleLogger(browser_log)); |
| out_logs->swap(logs); |
| - out_listeners->swap(listeners); |
| + out_devtools_listeners->swap(devtools_listeners); |
| + out_command_listeners->swap(command_listeners); |
| return Status(kOk); |
| } |