| 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);
|
|
|