| OLD | NEW |
| 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 <stdio.h> | 7 #include <stdio.h> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 VLOG(1) << "Log type '" << type_ << "' lost " | 143 VLOG(1) << "Log type '" << type_ << "' lost " |
| 144 << entries_->GetSize() << " entries on destruction"; | 144 << entries_->GetSize() << " entries on destruction"; |
| 145 } | 145 } |
| 146 | 146 |
| 147 scoped_ptr<base::ListValue> WebDriverLog::GetAndClearEntries() { | 147 scoped_ptr<base::ListValue> WebDriverLog::GetAndClearEntries() { |
| 148 scoped_ptr<base::ListValue> ret(entries_.release()); | 148 scoped_ptr<base::ListValue> ret(entries_.release()); |
| 149 entries_.reset(new base::ListValue()); | 149 entries_.reset(new base::ListValue()); |
| 150 return ret.Pass(); | 150 return ret.Pass(); |
| 151 } | 151 } |
| 152 | 152 |
| 153 std::string WebDriverLog::GetFirstErrorMessage() const { |
| 154 for (base::ListValue::iterator it = entries_->begin(); |
| 155 it != entries_->end(); |
| 156 ++it) { |
| 157 base::DictionaryValue* log_entry = NULL; |
| 158 (*it)->GetAsDictionary(&log_entry); |
| 159 if (log_entry != NULL) { |
| 160 std::string level; |
| 161 if (log_entry->GetString("level", &level)) { |
| 162 if (level == kLevelToName[Log::kError]) { |
| 163 std::string message; |
| 164 if (log_entry->GetString("message", &message)) |
| 165 return message; |
| 166 } |
| 167 } |
| 168 } |
| 169 } |
| 170 return std::string(); |
| 171 } |
| 172 |
| 153 void WebDriverLog::AddEntryTimestamped(const base::Time& timestamp, | 173 void WebDriverLog::AddEntryTimestamped(const base::Time& timestamp, |
| 154 Log::Level level, | 174 Log::Level level, |
| 155 const std::string& source, | 175 const std::string& source, |
| 156 const std::string& message) { | 176 const std::string& message) { |
| 157 if (level < min_level_) | 177 if (level < min_level_) |
| 158 return; | 178 return; |
| 159 | 179 |
| 160 scoped_ptr<base::DictionaryValue> log_entry_dict(new base::DictionaryValue()); | 180 scoped_ptr<base::DictionaryValue> log_entry_dict(new base::DictionaryValue()); |
| 161 log_entry_dict->SetDouble("timestamp", | 181 log_entry_dict->SetDouble("timestamp", |
| 162 static_cast<int64>(timestamp.ToJsTime())); | 182 static_cast<int64>(timestamp.ToJsTime())); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 new WebDriverLog(WebDriverLog::kBrowserType, browser_log_level); | 271 new WebDriverLog(WebDriverLog::kBrowserType, browser_log_level); |
| 252 logs.push_back(browser_log); | 272 logs.push_back(browser_log); |
| 253 // If the level is OFF, don't even bother listening for DevTools events. | 273 // If the level is OFF, don't even bother listening for DevTools events. |
| 254 if (browser_log_level != Log::kOff) | 274 if (browser_log_level != Log::kOff) |
| 255 listeners.push_back(new ConsoleLogger(browser_log)); | 275 listeners.push_back(new ConsoleLogger(browser_log)); |
| 256 | 276 |
| 257 out_logs->swap(logs); | 277 out_logs->swap(logs); |
| 258 out_listeners->swap(listeners); | 278 out_listeners->swap(listeners); |
| 259 return Status(kOk); | 279 return Status(kOk); |
| 260 } | 280 } |
| OLD | NEW |