blob: c2fdec397c53ce64d8fedcf6864df90cad42af15 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/metrics/model/bookmark_model_metrics_service.h"
#import "components/bookmarks/browser/bookmark_model.h"
#import "ios/chrome/browser/crash_report/model/crash_keys_helper.h"
BookmarkModelMetricsService::BookmarkModelMetricsService(
bookmarks::BookmarkModel* bookmark_model,
ProfileIOS* profile)
: bookmark_model_(bookmark_model), profile_(profile) {
CHECK(bookmark_model_);
if (bookmark_model_->loaded()) {
UpdateBookmarkNodesCrashKey();
}
bookmark_model_observer_.Observe(bookmark_model_);
}
BookmarkModelMetricsService::~BookmarkModelMetricsService() {
bookmark_model_observer_.Reset();
}
void BookmarkModelMetricsService::UpdateBookmarkNodesCrashKey() {
if (in_extensive_changes_) {
return;
}
crash_keys::SetBookmarkNodesCount(
bookmark_model_->GetTotalNumberOfUrlsAndFoldersIncludingManagedNodes(),
profile_);
}
void BookmarkModelMetricsService::BookmarkNodeAdded(
const bookmarks::BookmarkNode* parent,
size_t index,
bool added_by_user) {
UpdateBookmarkNodesCrashKey();
}
void BookmarkModelMetricsService::BookmarkNodeRemoved(
const bookmarks::BookmarkNode* parent,
size_t old_index,
const bookmarks::BookmarkNode* node,
const std::set<GURL>& removed_urls,
const base::Location& location) {
UpdateBookmarkNodesCrashKey();
}
void BookmarkModelMetricsService::BookmarkModelLoaded(bool ids_reassigned) {
UpdateBookmarkNodesCrashKey();
}
void BookmarkModelMetricsService::BookmarkAllUserNodesRemoved(
const std::set<GURL>& removed_urls,
const base::Location& location) {
UpdateBookmarkNodesCrashKey();
}
void BookmarkModelMetricsService::BookmarkModelBeingDeleted() {
NOTREACHED();
}
void BookmarkModelMetricsService::ExtensiveBookmarkChangesBeginning() {
in_extensive_changes_ = true;
}
void BookmarkModelMetricsService::ExtensiveBookmarkChangesEnded() {
in_extensive_changes_ = false;
UpdateBookmarkNodesCrashKey();
}
void BookmarkModelMetricsService::BookmarkNodeMoved(
const bookmarks::BookmarkNode* old_parent,
size_t old_index,
const bookmarks::BookmarkNode* new_parent,
size_t new_index) {}
void BookmarkModelMetricsService::BookmarkNodeChanged(
const bookmarks::BookmarkNode* node) {}
void BookmarkModelMetricsService::BookmarkNodeFaviconChanged(
const bookmarks::BookmarkNode* node) {}
void BookmarkModelMetricsService::BookmarkNodeChildrenReordered(
const bookmarks::BookmarkNode* node) {}