breadcrumb_manager_keyed_service.cc 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Copyright 2019 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. #include "components/breadcrumbs/core/breadcrumb_manager_keyed_service.h"
  5. #include "base/strings/stringprintf.h"
  6. #include "components/breadcrumbs/core/breadcrumb_manager.h"
  7. #include "components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h"
  8. #include "components/breadcrumbs/core/breadcrumb_util.h"
  9. namespace breadcrumbs {
  10. void BreadcrumbManagerKeyedService::AddEvent(const std::string& event) {
  11. std::string event_log =
  12. base::StringPrintf("%s%s", browsing_mode_.c_str(), event.c_str());
  13. breadcrumb_manager_->AddEvent(event_log);
  14. }
  15. void BreadcrumbManagerKeyedService::AddObserver(
  16. BreadcrumbManagerObserver* observer) {
  17. breadcrumb_manager_->AddObserver(observer);
  18. }
  19. void BreadcrumbManagerKeyedService::RemoveObserver(
  20. BreadcrumbManagerObserver* observer) {
  21. breadcrumb_manager_->RemoveObserver(observer);
  22. }
  23. const std::list<std::string> BreadcrumbManagerKeyedService::GetEvents(
  24. size_t event_count_limit) const {
  25. return breadcrumb_manager_->GetEvents(event_count_limit);
  26. }
  27. void BreadcrumbManagerKeyedService::StartPersisting(
  28. BreadcrumbPersistentStorageManager* persistent_storage_manager) {
  29. DCHECK(persistent_storage_manager);
  30. if (persistent_storage_manager_)
  31. StopPersisting();
  32. persistent_storage_manager_ = persistent_storage_manager;
  33. persistent_storage_manager_->MonitorBreadcrumbManagerService(this);
  34. }
  35. void BreadcrumbManagerKeyedService::StopPersisting() {
  36. if (!persistent_storage_manager_)
  37. return;
  38. persistent_storage_manager_->StopMonitoringBreadcrumbManagerService(this);
  39. persistent_storage_manager_ = nullptr;
  40. }
  41. BreadcrumbPersistentStorageManager*
  42. BreadcrumbManagerKeyedService::GetPersistentStorageManager() {
  43. return persistent_storage_manager_;
  44. }
  45. BreadcrumbManagerKeyedService::BreadcrumbManagerKeyedService(
  46. bool is_off_the_record)
  47. // Set "I" for Incognito (Chrome branded OffTheRecord implementation) and
  48. // empty string for Normal browsing mode.
  49. : browsing_mode_(is_off_the_record ? "I " : ""),
  50. breadcrumb_manager_(std::make_unique<BreadcrumbManager>(GetStartTime())) {
  51. }
  52. BreadcrumbManagerKeyedService::~BreadcrumbManagerKeyedService() = default;
  53. } // namespace breadcrumbs