summaryrefslogtreecommitdiffstats
path: root/chrome_frame/metrics_service.cc
diff options
context:
space:
mode:
authorananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-18 17:05:10 +0000
committerananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-18 17:05:10 +0000
commitf985b9c9f8a3bd0aa21b9717cd7533e8a9335caf (patch)
tree41b06d71c1a85b00f81967bb5e630b7a088b12fe /chrome_frame/metrics_service.cc
parente1296faf59c3d59b9556d626cb02a8ca45e6cd31 (diff)
downloadchromium_src-f985b9c9f8a3bd0aa21b9717cd7533e8a9335caf.zip
chromium_src-f985b9c9f8a3bd0aa21b9717cd7533e8a9335caf.tar.gz
chromium_src-f985b9c9f8a3bd0aa21b9717cd7533e8a9335caf.tar.bz2
The ChromeFrame UMA upload currently occurs every 30 seconds which is incorrect. We should emulate Chrome's upload model
where there is an initial UMA upload followed by subsequent uploads every 30 minutes. The initial chrome frame UMA upload now occurs after 30 seconds followed by one every 10 minutes. Bug=46057 Review URL: http://codereview.chromium.org/2840010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50249 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/metrics_service.cc')
-rw-r--r--chrome_frame/metrics_service.cc26
1 files changed, 20 insertions, 6 deletions
diff --git a/chrome_frame/metrics_service.cc b/chrome_frame/metrics_service.cc
index 85bb0b3..81fc9ef 100644
--- a/chrome_frame/metrics_service.cc
+++ b/chrome_frame/metrics_service.cc
@@ -69,10 +69,11 @@ using base::TimeDelta;
static const char kMetricsType[] =
"Content-Type: application/vnd.mozilla.metrics.bz2\r\n";
-// The delay, in seconds, after startup before sending the first log message.
-static const int kInitialInterlogDuration = 60; // one minute
+// The first UMA upload occurs after this interval.
+static const int kInitialUMAUploadTimeoutMilliSeconds = 30000;
-static const int kUMAUploadTimeoutMilliSeconds = 30000;
+// Default to one UMA upload per 10 mins.
+static const int kMinMilliSecondsPerUMAUpload = 600000;
base::LazyInstance<base::ThreadLocalPointer<MetricsService> >
MetricsService::g_metrics_instance_(base::LINKER_INITIALIZED);
@@ -231,7 +232,9 @@ MetricsService::MetricsService()
reporting_active_(false),
user_permits_upload_(false),
state_(INITIALIZED),
- thread_(NULL) {
+ thread_(NULL),
+ initial_uma_upload_(true),
+ transmission_timer_id_(0) {
}
MetricsService::~MetricsService() {
@@ -319,6 +322,15 @@ void CALLBACK MetricsService::TransmissionTimerProc(HWND window,
DLOG(INFO) << "Transmission timer notified";
DCHECK(GetInstance() != NULL);
GetInstance()->UploadData();
+ if (GetInstance()->initial_uma_upload_) {
+ // If this is the first uma upload by this process then subsequent uma
+ // uploads should occur once every 10 minutes(default).
+ GetInstance()->initial_uma_upload_ = false;
+ DCHECK(GetInstance()->transmission_timer_id_ != 0);
+ SetTimer(NULL, GetInstance()->transmission_timer_id_,
+ kMinMilliSecondsPerUMAUpload,
+ reinterpret_cast<TIMERPROC>(TransmissionTimerProc));
+ }
}
void MetricsService::SetReporting(bool enable) {
@@ -328,8 +340,10 @@ void MetricsService::SetReporting(bool enable) {
if (reporting_active_ != enable) {
reporting_active_ = enable;
if (reporting_active_) {
- SetTimer(NULL, kChromeFrameMetricsTimerId, kUMAUploadTimeoutMilliSeconds,
- reinterpret_cast<TIMERPROC>(TransmissionTimerProc));
+ transmission_timer_id_ =
+ SetTimer(NULL, kChromeFrameMetricsTimerId,
+ kInitialUMAUploadTimeoutMilliSeconds,
+ reinterpret_cast<TIMERPROC>(TransmissionTimerProc));
}
}
}