Index: chrome/test/chromedriver/logging.cc |
diff --git a/chrome/test/chromedriver/logging.cc b/chrome/test/chromedriver/logging.cc |
index eacb53fa094fa6c968b30c340c4bced8075be3f7..71dfbd5659d655ec2381195700ca2ae49b6de5b6 100644 |
--- a/chrome/test/chromedriver/logging.cc |
+++ b/chrome/test/chromedriver/logging.cc |
@@ -15,6 +15,7 @@ |
#include "base/json/json_reader.h" |
#include "base/logging.h" |
#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
#include "base/strings/stringprintf.h" |
#include "base/time/time.h" |
#include "build/build_config.h" |
@@ -271,14 +272,15 @@ bool InitLogging() { |
return logging::InitLogging(logging_settings); |
} |
-Status CreateLogs(const Capabilities& capabilities, |
- const Session* session, |
- ScopedVector<WebDriverLog>* out_logs, |
- ScopedVector<DevToolsEventListener>* out_devtools_listeners, |
- ScopedVector<CommandListener>* out_command_listeners) { |
- ScopedVector<WebDriverLog> logs; |
- ScopedVector<DevToolsEventListener> devtools_listeners; |
- ScopedVector<CommandListener> command_listeners; |
+Status CreateLogs( |
+ const Capabilities& capabilities, |
+ const Session* session, |
+ std::vector<std::unique_ptr<WebDriverLog>>* out_logs, |
+ std::vector<std::unique_ptr<DevToolsEventListener>>* out_devtools_listeners, |
+ std::vector<std::unique_ptr<CommandListener>>* out_command_listeners) { |
+ std::vector<std::unique_ptr<WebDriverLog>> logs; |
+ std::vector<std::unique_ptr<DevToolsEventListener>> devtools_listeners; |
+ std::vector<std::unique_ptr<CommandListener>> command_listeners; |
Log::Level browser_log_level = Log::kWarning; |
const LoggingPrefs& prefs = capabilities.logging_prefs; |
@@ -289,19 +291,18 @@ Status CreateLogs(const Capabilities& capabilities, |
Log::Level level = iter->second; |
if (type == WebDriverLog::kPerformanceType) { |
if (level != Log::kOff) { |
- WebDriverLog* log = new WebDriverLog(type, Log::kAll); |
- logs.push_back(log); |
+ logs.push_back(base::MakeUnique<WebDriverLog>(type, Log::kAll)); |
+ devtools_listeners.push_back(base::MakeUnique<PerformanceLogger>( |
+ logs.back().get(), session, capabilities.perf_logging_prefs)); |
PerformanceLogger* perf_log = |
- new PerformanceLogger(log, session, |
- capabilities.perf_logging_prefs); |
+ static_cast<PerformanceLogger*>(devtools_listeners.back().get()); |
// We use a proxy for |perf_log|'s |CommandListener| interface. |
// Otherwise, |perf_log| would be owned by both session->chrome and |
// |session|, which would lead to memory errors on destruction. |
// 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); |
+ command_listeners.push_back( |
+ base::MakeUnique<CommandListenerProxy>(perf_log)); |
} |
} else if (type == WebDriverLog::kBrowserType) { |
browser_log_level = level; |
@@ -313,12 +314,12 @@ Status CreateLogs(const Capabilities& capabilities, |
} |
} |
// Create "browser" log -- should always exist. |
- WebDriverLog* browser_log = |
- new WebDriverLog(WebDriverLog::kBrowserType, browser_log_level); |
- logs.push_back(browser_log); |
+ logs.push_back(base::MakeUnique<WebDriverLog>(WebDriverLog::kBrowserType, |
+ browser_log_level)); |
// If the level is OFF, don't even bother listening for DevTools events. |
if (browser_log_level != Log::kOff) |
- devtools_listeners.push_back(new ConsoleLogger(browser_log)); |
+ devtools_listeners.push_back( |
+ base::MakeUnique<ConsoleLogger>(logs.back().get())); |
out_logs->swap(logs); |
out_devtools_listeners->swap(devtools_listeners); |