Index: chrome/browser/sync_file_system/task_logger.cc |
diff --git a/chrome/browser/sync_file_system/task_logger.cc b/chrome/browser/sync_file_system/task_logger.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cea7cb2a7100ff8a55a8ba8af0fed492af7ab43b |
--- /dev/null |
+++ b/chrome/browser/sync_file_system/task_logger.cc |
@@ -0,0 +1,55 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/sync_file_system/task_logger.h" |
+ |
+#include "base/stl_util.h" |
+ |
+namespace sync_file_system { |
+ |
+namespace { |
+const size_t kMaxLogSize = 500; |
+} // namespace |
+ |
+typedef TaskLogger::TaskLog TaskLog; |
+ |
+TaskLogger::TaskLog::TaskLog() {} |
+TaskLogger::TaskLog::~TaskLog() {} |
+ |
+TaskLogger::TaskLogger() {} |
+ |
+TaskLogger::~TaskLogger() { |
+ ClearLog(); |
+} |
+ |
+void TaskLogger::RecordLog(scoped_ptr<TaskLog> log) { |
+ if (log_history_.size() >= kMaxLogSize) { |
+ delete log_history_.front(); |
+ log_history_.pop_front(); |
+ } |
+ |
+ log_history_.push_back(log.release()); |
+ |
+ FOR_EACH_OBSERVER(Observer, observers_, |
+ OnLogRecorded(*log_history_.back())); |
+} |
+ |
+void TaskLogger::ClearLog() { |
+ STLDeleteContainerPointers(log_history_.begin(), log_history_.end()); |
+ log_history_.clear(); |
+} |
+ |
+void TaskLogger::AddObserver(Observer* observer) { |
+ observers_.AddObserver(observer); |
+} |
+ |
+void TaskLogger::RemoveObserver(Observer* observer) { |
+ observers_.RemoveObserver(observer); |
+} |
+ |
+const std::deque<TaskLog*>& TaskLogger::GetLog() const { |
+ return log_history_; |
+} |
+ |
+} // namespace sync_file_system |