blob: 58a0737d77b0eaa3b44b8be9fe7a6b76b1370ead [file] [log] [blame]
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_STATS_H_
#define CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_STATS_H_
#include "base/time/time.h"
#include "components/profile_metrics/browser_profile_type.h"
class Profile;
namespace bookmarks {
class BookmarkNode;
struct BookmarkNodeData;
} // namespace bookmarks
// This enum is used for the Bookmarks.EntryPoint histogram.
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
enum class BookmarkEntryPoint {
kAccelerator = 0,
kStarGesture = 1,
kStarKey = 2,
kStarMouse = 3,
kMaxValue = kStarMouse
};
// This enum is used for the Bookmarks.LaunchLocation histogram.
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
enum class BookmarkLaunchLocation {
kNone,
kAttachedBar = 0,
// kDetachedBar = 1, (deprecated)
// These two are kind of sub-categories of the bookmark bar. Generally
// a launch from a context menu or subfolder could be classified in one of
// the other two bar buckets, but doing so is difficult because the menus
// don't know of their greater place in Chrome.
kSubfolder = 2,
kContextMenu = 3,
// Bookmarks menu within app menu.
kAppMenu = 4,
// Bookmark manager.
kManager = 5,
// Autocomplete suggestion.
kOmnibox = 6,
// System application menu (e.g. on Mac).
kTopMenu = 7,
// Bookmarks top level folder (i.e. bookmarks bar, other bookmarks) within the
// side panel.
kSidePanelFolder = 8,
// Bookmarks subfolder within the side panel.
kSidePanelSubfolder = 9,
// Reading list tab within the side panel.
kSidePanelPendingList = 10,
// Reading list bubble in the bookmarks bar.
kReadingListDialog = 11,
// Context menu for a bookmark node in the side panel.
kSidePanelContextMenu = 12,
kMaxValue = kSidePanelContextMenu
};
// Captures information related to a bookmark's launch event. Used for metrics
// collection.
struct BookmarkLaunchAction {
// The location of the open action.
BookmarkLaunchLocation location = BookmarkLaunchLocation::kNone;
// The time at which the launch action was initiated.
base::TimeTicks action_time = base::TimeTicks::Now();
};
std::ostream& operator<<(std::ostream& out, const BookmarkLaunchAction& action);
// Records the launch of a bookmark for UMA purposes.
void RecordBookmarkLaunch(BookmarkLaunchLocation location,
profile_metrics::BrowserProfileType profile_type);
// Records the user launching all bookmarks in a folder (via middle-click, etc.)
// for UMA purposes.
void RecordBookmarkFolderLaunch(BookmarkLaunchLocation location);
// Records the user opening a folder of bookmarks for UMA purposes.
void RecordBookmarkFolderOpen(BookmarkLaunchLocation location);
// Records the user opening the apps page for UMA purposes.
void RecordBookmarkAppsPageOpen(BookmarkLaunchLocation location);
// Records that the user edited or renamed a bookmark.
void RecordBookmarkEdited(BookmarkLaunchLocation location);
// Records that the user removed a bookmark.
void RecordBookmarkRemoved(BookmarkLaunchLocation location);
// Records the user adding a bookmark via star action, drag and drop, via
// Bookmark this tab... and Bookmark all tabs... buttons. For the Bookmark
// open tabs... the action is recorded only once and not as many times as
// count of tabs that were bookmarked.
void RecordBookmarksAdded(const Profile* profile);
// Records the user bookmarking all tabs, along with the open tabs count.
void RecordBookmarkAllTabsWithTabsCount(const Profile* profile, int count);
// Records that a bookmark or bookmarks were dropped. Determines the type of
// drop operation based on the data and parent node.
void RecordBookmarkDropped(const bookmarks::BookmarkNodeData& data,
const bookmarks::BookmarkNode* parent_node,
bool is_reorder);
#endif // CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_STATS_H_