diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-18 03:25:49 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-18 03:25:49 +0000 |
commit | 6ef3e8a35240974505302343ae3a4691cea74f6f (patch) | |
tree | cd956fc85e2b5f37b58f6d0ad2b6a05579c9c25e | |
parent | 91a7ab6a2451184e1fb53171b47acc51f0ed5b28 (diff) | |
download | chromium_src-6ef3e8a35240974505302343ae3a4691cea74f6f.zip chromium_src-6ef3e8a35240974505302343ae3a4691cea74f6f.tar.gz chromium_src-6ef3e8a35240974505302343ae3a4691cea74f6f.tar.bz2 |
record UMA histogram for different bookmark launch types
for now, only record on windows.
BUG=97141
TEST=none
Review URL: http://codereview.chromium.org/8231035
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@106023 0039d316-1c4b-4281-b951-d872f2087c98
12 files changed, 78 insertions, 8 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit.cc b/chrome/browser/autocomplete/autocomplete_edit.cc index 525b260..989045c 100644 --- a/chrome/browser/autocomplete/autocomplete_edit.cc +++ b/chrome/browser/autocomplete/autocomplete_edit.cc @@ -17,6 +17,7 @@ #include "chrome/browser/autocomplete/autocomplete_popup_view.h" #include "chrome/browser/autocomplete/keyword_provider.h" #include "chrome/browser/autocomplete/search_provider.h" +#include "chrome/browser/bookmarks/bookmark_utils.h" #include "chrome/browser/command_updater.h" #include "chrome/browser/extensions/extension_omnibox_api.h" #include "chrome/browser/google/google_url_tracker.h" @@ -569,6 +570,9 @@ void AutocompleteEditModel::OpenMatch(const AutocompleteMatch& match, match.transition, alternate_nav_url); } + if (match.starred) + bookmark_utils::RecordBookmarkLaunch(bookmark_utils::LAUNCH_OMNIBOX); + InstantController* instant = controller_->GetInstant(); if (instant && !popup_->IsOpen()) instant->DestroyPreviewContents(); diff --git a/chrome/browser/bookmarks/bookmark_utils.cc b/chrome/browser/bookmarks/bookmark_utils.cc index 0029441..5213d45 100644 --- a/chrome/browser/bookmarks/bookmark_utils.cc +++ b/chrome/browser/bookmarks/bookmark_utils.cc @@ -10,6 +10,7 @@ #include "base/file_path.h" #include "base/i18n/case_conversion.h" #include "base/i18n/string_search.h" +#include "base/metrics/histogram.h" #include "base/string16.h" #include "base/string_number_conversions.h" #include "base/time.h" @@ -768,4 +769,13 @@ void RemoveAllBookmarks(BookmarkModel* model, const GURL& url) { } } +void RecordBookmarkLaunch(BookmarkLaunchLocation location) { +#if defined(OS_WIN) + // TODO(estade): do this on other platforms too. For now it's compiled out + // so that stats from platforms for which this is incompletely implemented + // don't mix in with Windows, where it should be implemented exhaustively. + UMA_HISTOGRAM_ENUMERATION("Bookmarks.LaunchLocation", location, LAUNCH_LIMIT); +#endif +} + } // namespace bookmark_utils diff --git a/chrome/browser/bookmarks/bookmark_utils.h b/chrome/browser/bookmarks/bookmark_utils.h index 9cd73f7..84de9d2 100644 --- a/chrome/browser/bookmarks/bookmark_utils.h +++ b/chrome/browser/bookmarks/bookmark_utils.h @@ -239,6 +239,30 @@ void RemoveAllBookmarks(BookmarkModel* model, const GURL& url); // value. extern int num_urls_before_prompting; +// This enum is used for the Bookmarks.LaunchLocation histogram. +enum BookmarkLaunchLocation { + LAUNCH_ATTACHED_BAR = 0, + LAUNCH_DETACHED_BAR, + // 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. + LAUNCH_BAR_SUBFOLDER, + LAUNCH_CONTEXT_MENU, + + // Bookmarks menu within wrench menu. + LAUNCH_WRENCH_MENU, + // Bookmark manager. + LAUNCH_MANAGER, + // Autocomplete suggestion. + LAUNCH_OMNIBOX, + + LAUNCH_LIMIT // Keep this last. +}; + +// Records the launch of a bookmark for UMA purposes. +void RecordBookmarkLaunch(BookmarkLaunchLocation location); + } // namespace bookmark_utils #endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_UTILS_H_ diff --git a/chrome/browser/extensions/extension_bookmark_manager_api.cc b/chrome/browser/extensions/extension_bookmark_manager_api.cc index 10da193..8fb6e80 100644 --- a/chrome/browser/extensions/extension_bookmark_manager_api.cc +++ b/chrome/browser/extensions/extension_bookmark_manager_api.cc @@ -480,3 +480,8 @@ bool CanEditBookmarkManagerFunction::RunImpl() { profile_->GetPrefs()->GetBoolean(prefs::kEditBookmarksEnabled))); return true; } + +bool RecordLaunchBookmarkFunction::RunImpl() { + bookmark_utils::RecordBookmarkLaunch(bookmark_utils::LAUNCH_MANAGER); + return true; +} diff --git a/chrome/browser/extensions/extension_bookmark_manager_api.h b/chrome/browser/extensions/extension_bookmark_manager_api.h index 0f02d59..f17b815 100644 --- a/chrome/browser/extensions/extension_bookmark_manager_api.h +++ b/chrome/browser/extensions/extension_bookmark_manager_api.h @@ -138,4 +138,12 @@ class CanEditBookmarkManagerFunction : public BookmarksFunction { DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.canEdit"); }; +class RecordLaunchBookmarkFunction : public BookmarksFunction { + public: + virtual bool RunImpl() OVERRIDE; + + private: + DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.recordLaunch") +}; + #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_BOOKMARK_MANAGER_API_H_ diff --git a/chrome/browser/resources/bookmark_manager/js/main.js b/chrome/browser/resources/bookmark_manager/js/main.js index 86210bb..ff5f848 100644 --- a/chrome/browser/resources/bookmark_manager/js/main.js +++ b/chrome/browser/resources/bookmark_manager/js/main.js @@ -246,6 +246,7 @@ list.addEventListener('dblclick', function(e) { // folder part. list.addEventListener('urlClicked', function(e) { getLinkController().openUrlFromEvent(e.url, e.originalEvent); + chrome.experimental.bookmarkManager.recordLaunch(); }); $('term').onsearch = function(e) { @@ -1415,6 +1416,7 @@ function openBookmarks(kind) { addNodes(v); }); getLinkController().openUrls(urls, kind); + chrome.experimental.bookmarkManager.recordLaunch(); }); } diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc index 2d3c10f..743ae14 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc @@ -1070,6 +1070,10 @@ void BookmarkBarView::ButtonPressed(views::Button* sender, bookmark_utils::OpenAll(GetWidget()->GetNativeWindow(), profile, page_navigator_, node, disposition_from_event_flags); } + + bookmark_utils::RecordBookmarkLaunch(IsDetached() ? + bookmark_utils::LAUNCH_DETACHED_BAR : + bookmark_utils::LAUNCH_ATTACHED_BAR); UserMetrics::RecordAction(UserMetricsAction("ClickedBookmarkBarURLButton")); } diff --git a/chrome/browser/ui/views/bookmarks/bookmark_context_menu_controller_views.cc b/chrome/browser/ui/views/bookmarks/bookmark_context_menu_controller_views.cc index 35fae7e..41e9cd6 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_context_menu_controller_views.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_context_menu_controller_views.cc @@ -116,6 +116,7 @@ void BookmarkContextMenuControllerViews::ExecuteCommand(int id) { bookmark_utils::OpenAll(parent_widget_->GetNativeWindow(), profile_, navigator_, selection_, initial_disposition); + bookmark_utils::RecordBookmarkLaunch(bookmark_utils::LAUNCH_CONTEXT_MENU); break; } diff --git a/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc b/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc index 966f0d9..8f1ed27 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc @@ -40,7 +40,8 @@ BookmarkMenuController::BookmarkMenuController(Profile* profile, for_drop_(false), bookmark_bar_(NULL) { menu_delegate_->Init(this, NULL, node, start_child_index, - BookmarkMenuDelegate::HIDE_OTHER_FOLDER); + BookmarkMenuDelegate::HIDE_OTHER_FOLDER, + bookmark_utils::LAUNCH_BAR_SUBFOLDER); menu_runner_.reset(new views::MenuRunner(menu_delegate_->menu())); } diff --git a/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc b/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc index 6799a4e..74d5611 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc @@ -51,11 +51,13 @@ BookmarkMenuDelegate::~BookmarkMenuDelegate() { profile_->GetBookmarkModel()->RemoveObserver(this); } -void BookmarkMenuDelegate::Init(views::MenuDelegate* real_delegate, - MenuItemView* parent, - const BookmarkNode* node, - int start_child_index, - ShowOptions show_options) { +void BookmarkMenuDelegate::Init( + views::MenuDelegate* real_delegate, + MenuItemView* parent, + const BookmarkNode* node, + int start_child_index, + ShowOptions show_options, + bookmark_utils::BookmarkLaunchLocation location) { profile_->GetBookmarkModel()->AddObserver(this); real_delegate_ = real_delegate; if (parent) { @@ -78,6 +80,8 @@ void BookmarkMenuDelegate::Init(views::MenuDelegate* real_delegate, } else { menu_ = CreateMenu(node, start_child_index, show_options); } + + location_ = location; } void BookmarkMenuDelegate::SetPageNavigator(PageNavigator* navigator) { @@ -123,6 +127,7 @@ void BookmarkMenuDelegate::ExecuteCommand(int id, int mouse_event_flags) { bookmark_utils::OpenAll(parent_->GetNativeWindow(), profile_, page_navigator_, selection, initial_disposition); + bookmark_utils::RecordBookmarkLaunch(location_); } bool BookmarkMenuDelegate::GetDropFormats( diff --git a/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.h b/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.h index ef4330d..479cbe9 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.h +++ b/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.h @@ -11,6 +11,7 @@ #include "chrome/browser/bookmarks/base_bookmark_model_observer.h" #include "chrome/browser/bookmarks/bookmark_node_data.h" +#include "chrome/browser/bookmarks/bookmark_utils.h" #include "chrome/browser/ui/views/bookmarks/bookmark_context_menu.h" #include "views/controls/menu/menu_delegate.h" @@ -56,7 +57,8 @@ class BookmarkMenuDelegate : public BaseBookmarkModelObserver, views::MenuItemView* parent, const BookmarkNode* node, int start_child_index, - ShowOptions show_options); + ShowOptions show_options, + bookmark_utils::BookmarkLaunchLocation); // Sets the PageNavigator. void SetPageNavigator(PageNavigator* navigator); @@ -184,6 +186,9 @@ class BookmarkMenuDelegate : public BaseBookmarkModelObserver, // Is the model being changed? bool is_mutating_model_; + // The location where this bookmark menu will be displayed (for UMA). + bookmark_utils::BookmarkLaunchLocation location_; + DISALLOW_COPY_AND_ASSIGN(BookmarkMenuDelegate); }; diff --git a/chrome/browser/ui/views/wrench_menu.cc b/chrome/browser/ui/views/wrench_menu.cc index df5c398..64e5ede 100644 --- a/chrome/browser/ui/views/wrench_menu.cc +++ b/chrome/browser/ui/views/wrench_menu.cc @@ -885,5 +885,6 @@ void WrenchMenu::CreateBookmarkMenu() { first_bookmark_command_id_)); bookmark_menu_delegate_->Init( this, bookmark_menu_, model->bookmark_bar_node(), 0, - BookmarkMenuDelegate::SHOW_OTHER_FOLDER); + BookmarkMenuDelegate::SHOW_OTHER_FOLDER, + bookmark_utils::LAUNCH_WRENCH_MENU); } |