diff options
author | cbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-14 19:51:42 +0000 |
---|---|---|
committer | cbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-14 19:51:42 +0000 |
commit | 812acfce234193ddb58a52c719d9b97e6c58da29 (patch) | |
tree | 94af63495cc24c837c4bcc608fdf740ae94988d0 /chrome/browser/download/download_file_picker.cc | |
parent | 792d2072309597d56a51f81c0b5e297c77d5256f (diff) | |
download | chromium_src-812acfce234193ddb58a52c719d9b97e6c58da29.zip chromium_src-812acfce234193ddb58a52c719d9b97e6c58da29.tar.gz chromium_src-812acfce234193ddb58a52c719d9b97e6c58da29.tar.bz2 |
Instrument how the download file chooser is used.
This lets us see how frequently users override the default filename,.
BUG=114025
TEST=Look at about:histograms after doing a few actions, make sure Download.FilePickerResult is sane.
Review URL: http://codereview.chromium.org/9389012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121916 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/download/download_file_picker.cc')
-rw-r--r-- | chrome/browser/download/download_file_picker.cc | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/chrome/browser/download/download_file_picker.cc b/chrome/browser/download/download_file_picker.cc index 4db364b..5fbe7ae 100644 --- a/chrome/browser/download/download_file_picker.cc +++ b/chrome/browser/download/download_file_picker.cc @@ -4,6 +4,7 @@ #include "chrome/browser/download/download_file_picker.h" +#include "base/metrics/histogram.h" #include "chrome/browser/download/download_prefs.h" #include "chrome/browser/platform_util.h" #include "chrome/browser/profiles/profile.h" @@ -14,12 +15,51 @@ using content::DownloadManager; using content::WebContents; +namespace { + +enum FilePickerResult { + FILE_PICKER_SAME, + FILE_PICKER_DIFFERENT_DIR, + FILE_PICKER_DIFFERENT_NAME, + FILE_PICKER_CANCEL, + FILE_PICKER_MAX, +}; + +// Record how the File Chooser was used during a download. Only record this +// for profiles that do not always prompt for save locations on downloads. +void RecordFilePickerResult(DownloadManager* manager, + FilePickerResult result) { + if (!manager) + return; + const DownloadPrefs* prefs = DownloadPrefs::FromDownloadManager(manager); + if (!prefs) + return; + if (prefs->PromptForDownload()) + return; + UMA_HISTOGRAM_ENUMERATION("Download.FilePickerResult", + result, + FILE_PICKER_MAX); +} + +FilePickerResult ComparePaths(const FilePath& suggested_path, + const FilePath& actual_path) { + if (suggested_path == actual_path) + return FILE_PICKER_SAME; + if (suggested_path.DirName() != actual_path.DirName()) + return FILE_PICKER_DIFFERENT_DIR; + return FILE_PICKER_DIFFERENT_NAME; +} + +} // namespace + DownloadFilePicker::DownloadFilePicker( DownloadManager* download_manager, WebContents* web_contents, const FilePath& suggested_path, void* params) - : download_manager_(download_manager) { + : download_manager_(download_manager), + suggested_path_(suggested_path) { + DCHECK(download_manager_); select_file_dialog_ = SelectFileDialog::Create(this); SelectFileDialog::FileTypeInfo file_type_info; FilePath::StringType extension = suggested_path.Extension(); @@ -53,12 +93,15 @@ void DownloadFilePicker::ManagerGoingDown(DownloadManager* manager) { void DownloadFilePicker::FileSelected(const FilePath& path, int index, void* params) { + FilePickerResult result = ComparePaths(suggested_path_, path); + RecordFilePickerResult(download_manager_, result); if (download_manager_) download_manager_->FileSelected(path, params); delete this; } void DownloadFilePicker::FileSelectionCanceled(void* params) { + RecordFilePickerResult(download_manager_, FILE_PICKER_CANCEL); if (download_manager_) download_manager_->FileSelectionCanceled(params); delete this; |