910e62b5创建于 1月15日历史提交
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_BREADCRUMBS_CORE_BREADCRUMB_MANAGER_OBSERVER_H_
#define COMPONENTS_BREADCRUMBS_CORE_BREADCRUMB_MANAGER_OBSERVER_H_

#include <string>

#include "base/observer_list_types.h"
#include "base/scoped_observation.h"
#include "components/breadcrumbs/core/breadcrumb_manager.h"

namespace breadcrumbs {

class BreadcrumbManagerObserver : public base::CheckedObserver {
 public:
  BreadcrumbManagerObserver(const BreadcrumbManagerObserver&) = delete;
  BreadcrumbManagerObserver& operator=(const BreadcrumbManagerObserver&) =
      delete;

  // Called when a new `event` has been added to the BreadcrumbManager. Similar
  // to `BreadcrumbManager::GetEvents()`, `event` has the timestamp when it was
  // logged prepended to the string passed to `BreadcrumbManager::AddEvent()`.
  virtual void EventAdded(const std::string& event) {}

  // Called when the previous session's events have been retrieved from file and
  // added to the BreadcrumbManager.
  virtual void PreviousSessionEventsAdded() {}

 protected:
  BreadcrumbManagerObserver();
  ~BreadcrumbManagerObserver() override;

 private:
  // Tracks observed BreadcrumbManager and stops observing on destruction.
  base::ScopedObservation<BreadcrumbManager, BreadcrumbManagerObserver>
      breadcrumb_manager_observation_{this};
};

}  // namespace breadcrumbs

#endif  // COMPONENTS_BREADCRUMBS_CORE_BREADCRUMB_MANAGER_OBSERVER_H_