1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_DOWNLOAD_DOWNLOAD_STATS_H_
6#define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_STATS_H_
7
8#include "content/public/browser/download_danger_type.h"
9
10// Record the total number of items and the number of in-progress items showing
11// in the shelf when it closes.  Set |autoclose| to true when the shelf is
12// closing itself, false when the user explicitly closed it.
13void RecordDownloadShelfClose(int size, int in_progress, bool autoclose);
14
15// Used for counting UMA stats. Similar to content's
16// download_stats::DownloadCountTypes but from the chrome layer.
17enum ChromeDownloadCountTypes {
18  // Stale enum values left around os that values passed to UMA don't
19  // change.
20  CHROME_DOWNLOAD_COUNT_UNUSED_0 = 0,
21  CHROME_DOWNLOAD_COUNT_UNUSED_1,
22  CHROME_DOWNLOAD_COUNT_UNUSED_2,
23  CHROME_DOWNLOAD_COUNT_UNUSED_3,
24
25  // A download *would* have been initiated, but it was blocked
26  // by the DownloadThrottlingResourceHandler.
27  CHROME_DOWNLOAD_COUNT_BLOCKED_BY_THROTTLING,
28
29  CHROME_DOWNLOAD_COUNT_TYPES_LAST_ENTRY
30};
31
32// Used for counting UMA stats. Similar to content's
33// download_stats::DownloadInitiattionSources but from the chrome layer.
34enum ChromeDownloadSource {
35  // The download was initiated by navigating to a URL (e.g. by user click).
36  DOWNLOAD_INITIATED_BY_NAVIGATION = 0,
37
38  // The download was initiated by invoking a context menu within a page.
39  DOWNLOAD_INITIATED_BY_CONTEXT_MENU,
40
41  // The download was initiated by the WebStore installer.
42  DOWNLOAD_INITIATED_BY_WEBSTORE_INSTALLER,
43
44  // The download was initiated by the ImageBurner (cros).
45  DOWNLOAD_INITIATED_BY_IMAGE_BURNER,
46
47  // The download was initiated by the plugin installer.
48  DOWNLOAD_INITIATED_BY_PLUGIN_INSTALLER,
49
50  // The download was initiated by the PDF plugin..
51  DOWNLOAD_INITIATED_BY_PDF_SAVE,
52
53  // The download was initiated by chrome.downloads.download().
54  DOWNLOAD_INITIATED_BY_EXTENSION,
55
56  CHROME_DOWNLOAD_SOURCE_LAST_ENTRY,
57};
58
59// How a download was opened. Note that a download could be opened multiple
60// times.
61enum ChromeDownloadOpenMethod {
62  // The download was opened using the platform handler. There was no special
63  // handling for this download.
64  DOWNLOAD_OPEN_METHOD_DEFAULT_PLATFORM = 0,
65
66  // The download was opened using the browser bypassing the system handler.
67  DOWNLOAD_OPEN_METHOD_DEFAULT_BROWSER,
68
69  // The user chose to open the download using the system handler even though
70  // the preferred method was to open the download using the browser.
71  DOWNLOAD_OPEN_METHOD_USER_PLATFORM,
72
73  DOWNLOAD_OPEN_METHOD_LAST_ENTRY
74};
75
76// Increment one of the above counts.
77void RecordDownloadCount(ChromeDownloadCountTypes type);
78
79// Record initiation of a download from a specific source.
80void RecordDownloadSource(ChromeDownloadSource source);
81
82// Record that a download warning was shown.
83void RecordDangerousDownloadWarningShown(
84    content::DownloadDangerType danger_type);
85
86// Record that the user opened the confirmation dialog for a dangerous download.
87void RecordOpenedDangerousConfirmDialog(
88    content::DownloadDangerType danger_type);
89
90// Record how a download was opened.
91void RecordDownloadOpenMethod(ChromeDownloadOpenMethod open_method);
92
93#endif  // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_STATS_H_
94