| // 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_DOWNLOAD_DOWNLOAD_STATS_H_ |
| #define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_STATS_H_ |
| |
| #include "build/build_config.h" |
| #include "chrome/browser/download/download_commands.h" |
| #include "chrome/browser/download/download_prompt_status.h" |
| #include "components/download/public/common/download_danger_type.h" |
| #include "components/download/public/common/download_path_reservation_tracker.h" |
| |
| class Profile; |
| |
| // Used for counting UMA stats. Similar to content's |
| // download_stats::DownloadInitiattionSources but from the chrome layer. |
| enum ChromeDownloadSource { |
| // The download was initiated by navigating to a URL (e.g. by user click). |
| DOWNLOAD_INITIATED_BY_NAVIGATION = 0, |
| |
| // The download was initiated by invoking a context menu within a page. |
| DOWNLOAD_INITIATED_BY_CONTEXT_MENU, |
| |
| // Formerly DOWNLOAD_INITIATED_BY_WEBSTORE_INSTALLER. |
| CHROME_DOWNLOAD_SOURCE_UNUSED_2, |
| |
| // Formerly DOWNLOAD_INITIATED_BY_IMAGE_BURNER. |
| CHROME_DOWNLOAD_SOURCE_UNUSED_3, |
| |
| // Formerly DOWNLOAD_INITIATED_BY_PLUGIN_INSTALLER. |
| CHROME_DOWNLOAD_SOURCE_UNUSED_4, |
| |
| // The download was initiated by the PDF plugin. |
| DOWNLOAD_INITIATED_BY_PDF_SAVE, |
| |
| // Formerly DOWNLOAD_INITIATED_BY_EXTENSION. |
| CHROME_DOWNLOAD_SOURCE_UNUSED_6, |
| |
| CHROME_DOWNLOAD_SOURCE_LAST_ENTRY |
| }; |
| |
| // How a download was opened. Note that a download could be opened multiple |
| // times. |
| enum ChromeDownloadOpenMethod { |
| // The download was opened using the platform handler. There was no special |
| // handling for this download. |
| DOWNLOAD_OPEN_METHOD_DEFAULT_PLATFORM = 0, |
| |
| // The download was opened using the browser bypassing the system handler. |
| DOWNLOAD_OPEN_METHOD_DEFAULT_BROWSER, |
| |
| // The user chose to open the download using the system handler even though |
| // the preferred method was to open the download using the browser. |
| DOWNLOAD_OPEN_METHOD_USER_PLATFORM, |
| |
| // The download was opened using a rename handler. |
| DOWNLOAD_OPEN_METHOD_RENAME_HANDLER, |
| |
| // The download was opened with the Media App on ChromeOS. |
| DOWNLOAD_OPEN_METHOD_MEDIA_APP, |
| |
| DOWNLOAD_OPEN_METHOD_LAST_ENTRY |
| }; |
| |
| // Records path generation behavior in download target determination process. |
| // Used in UMA, do not remove, change or reuse existing entries. |
| // Update histograms.xml and enums.xml when adding entries. |
| enum class DownloadPathGenerationEvent { |
| // Use existing virtual path provided to download target determiner. |
| USE_EXISTING_VIRTUAL_PATH = 0, |
| // Use the force path provided to download target determiner. |
| USE_FORCE_PATH, |
| // Use last prompt directory. |
| USE_LAST_PROMPT_DIRECTORY, |
| // Use the default download directory. |
| USE_DEFAULTL_DOWNLOAD_DIRECTORY, |
| // No valid target file path is provided, the download will fail soon. |
| NO_VALID_PATH, |
| |
| COUNT |
| }; |
| |
| // Records reasons that will result in the download being canceled with |
| // DOWNLOAD_INTERRUPT_REASON_USER_CANCELED. |
| // Used in UMA, do not remove, change or reuse existing entries. |
| // Update histograms.xml and enums.xml when adding entries. |
| enum class DownloadCancelReason { |
| // Existed download path after download target determination. |
| kExistingDownloadPath = 0, |
| // Canceled due to download target determiner confirmation result. |
| kTargetConfirmationResult = 1, |
| // Canceled due to no valid virtual path. |
| kNoValidPath = 2, |
| // Canceled due to no insecure download. |
| kInsecureDownload = 3, |
| // Canceled due to failed path reservacation. |
| kFailedPathReservation = 4, |
| // Canceled due to empty local path. |
| kEmptyLocalPath = 5, |
| kMaxValue = kEmptyLocalPath |
| }; |
| |
| // Record initiation of a download from a specific source. |
| void RecordDownloadSource(ChromeDownloadSource source); |
| |
| // Record that a download warning was shown, if the download was dangerous. To |
| // avoid double-logging, it checks DownloadItemModel::WasUIWarningShown() first. |
| // Also records the warning shown by setting WasUIWarningShown to true on the |
| // model. |
| void MaybeRecordDangerousDownloadWarningShown(DownloadUIModel& model); |
| |
| // Record that a download was opened. |
| void RecordDownloadOpen(ChromeDownloadOpenMethod open_method, |
| const std::string& mime_type_string); |
| |
| // Record if the database is available to provide the next download id before |
| // starting all downloads. |
| void RecordDatabaseAvailability(bool is_available); |
| |
| // Record download path generation event in target determination process. |
| void RecordDownloadPathGeneration(DownloadPathGenerationEvent event, |
| bool is_transient); |
| |
| // Record path validation result. |
| void RecordDownloadPathValidation(download::PathValidationResult result, |
| bool is_transient); |
| |
| // Record download cancel reason. |
| void RecordDownloadCancelReason(DownloadCancelReason reason); |
| |
| // Records information related to dragging completed downloads from the |
| // shelf/bubble. Used in UMA. Do not remove, change or reuse existing entries. |
| // Update histograms.xml and enums.xml when adding entries. |
| enum class DownloadDragInfo { |
| // A download starting to be dragged. It is possible the drag-and-drop will |
| // not complete depending on the user's actions. |
| DRAG_STARTED, |
| // As a point of reference for dragged downloads, this represents when a |
| // download completes on the shelf/bubble. This omits downloads that are |
| // immediately removed from the shelf/bubble when they complete. |
| DOWNLOAD_COMPLETE, |
| |
| COUNT |
| }; |
| |
| // Records either when a drag event is initiated by the user or, as a point of |
| // reference, when a download completes on the shelf/bubble. |
| void RecordDownloadShelfDragInfo(DownloadDragInfo drag_info); |
| void RecordDownloadBubbleDragInfo(DownloadDragInfo drag_info); |
| |
| void RecordDownloadStartPerProfileType(Profile* profile); |
| |
| #if BUILDFLAG(IS_ANDROID) |
| // Records whether the download dialog is shown to the user. |
| void RecordDownloadPromptStatus(DownloadPromptStatus status); |
| #endif // BUILDFLAG(IS_ANDROID) |
| |
| enum class DownloadUiContextMenuAction { |
| // Drop down button for download UI context menu is visible |
| kDropDownShown = 0, |
| // Drop down button was pressed |
| kDropDownPressed = 1, |
| kShowInFolderEnabled = 2, |
| kShowInFolderClicked = 3, |
| kOpenWhenCompleteEnabled = 4, |
| kOpenWhenCompleteClicked = 5, |
| kAlwaysOpenTypeEnabled = 6, |
| kAlwaysOpenTypeClicked = 7, |
| kPlatformOpenEnabled = 8, |
| kPlatformOpenClicked = 9, |
| kCancelEnabled = 10, |
| kCancelClicked = 11, |
| kPauseEnabled = 12, |
| kPauseClicked = 13, |
| kResumeEnabled = 14, |
| kResumeClicked = 15, |
| kDiscardEnabled = 16, |
| kDiscardClicked = 17, |
| kKeepEnabled = 18, |
| kKeepClicked = 19, |
| kLearnMoreScanningEnabled = 20, |
| kLearnMoreScanningClicked = 21, |
| kLearnMoreInterruptedEnabled = 22, |
| kLearnMoreInterruptedClicked = 23, |
| kLearnMoreInsecureDownloadEnabled = 24, |
| kLearnMoreInsecureDownloadClicked = 25, |
| kCopyToClipboardEnabled = 26, |
| kCopyToClipboardClicked = 27, |
| // kAnnotateEnabled = 28, |
| // kAnnotateClicked = 29, |
| kDeepScanEnabled = 30, |
| kDeepScanClicked = 31, |
| kBypassDeepScanningEnabled = 32, |
| kBypassDeepScanningClicked = 33, |
| // kReviewEnabled = 34, |
| // kReviewClicked = 35, |
| kNotReached = 36, // Should not be possible to hit |
| kMaxValue = kNotReached |
| }; |
| |
| DownloadUiContextMenuAction DownloadCommandToContextMenuAction( |
| DownloadCommands::Command download_command, |
| bool clicked); |
| |
| #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_STATS_H_ |