task_logger.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/sync_file_system/task_logger.h"
6
7#include "base/stl_util.h"
8
9namespace sync_file_system {
10
11namespace {
12const size_t kMaxLogSize = 500;
13}  // namespace
14
15typedef TaskLogger::TaskLog TaskLog;
16
17TaskLogger::TaskLog::TaskLog() {}
18TaskLogger::TaskLog::~TaskLog() {}
19
20TaskLogger::TaskLogger() {}
21
22TaskLogger::~TaskLogger() {
23  ClearLog();
24}
25
26void TaskLogger::RecordLog(scoped_ptr<TaskLog> log) {
27  if (log_history_.size() >= kMaxLogSize) {
28    delete log_history_.front();
29    log_history_.pop_front();
30  }
31
32  log_history_.push_back(log.release());
33
34  FOR_EACH_OBSERVER(Observer, observers_,
35                    OnLogRecorded(*log_history_.back()));
36}
37
38void TaskLogger::ClearLog() {
39  STLDeleteContainerPointers(log_history_.begin(), log_history_.end());
40  log_history_.clear();
41}
42
43void TaskLogger::AddObserver(Observer* observer) {
44  observers_.AddObserver(observer);
45}
46
47void TaskLogger::RemoveObserver(Observer* observer) {
48  observers_.RemoveObserver(observer);
49}
50
51const TaskLogger::LogList& TaskLogger::GetLog() const {
52  return log_history_;
53}
54
55}  // namespace sync_file_system
56