diff options
author | isherman@chromium.org <isherman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-09 19:53:12 +0000 |
---|---|---|
committer | isherman@chromium.org <isherman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-09 19:53:12 +0000 |
commit | 448ca4d158a5547a97889e9e62f2140e358cc53c (patch) | |
tree | b5149ea8d7b0a274125acb3b8fd6af58b67a66ef /chrome_frame/metrics_service.cc | |
parent | 8c4e706367695df184d560ff80824fbdb92440c3 (diff) | |
download | chromium_src-448ca4d158a5547a97889e9e62f2140e358cc53c.zip chromium_src-448ca4d158a5547a97889e9e62f2140e358cc53c.tar.gz chromium_src-448ca4d158a5547a97889e9e62f2140e358cc53c.tar.bz2 |
[ChromeFrame] Upload metrics data to both the XML and the protocol buffer pipeline.
BUG=126223
TEST=ChromeFrame metrics should be uploaded to the protocol buffer server.
Review URL: https://chromiumcodereview.appspot.com/10379005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136100 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/metrics_service.cc')
-rw-r--r-- | chrome_frame/metrics_service.cc | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/chrome_frame/metrics_service.cc b/chrome_frame/metrics_service.cc index eefc3ee..640e02e 100644 --- a/chrome_frame/metrics_service.cc +++ b/chrome_frame/metrics_service.cc @@ -71,8 +71,6 @@ using base::Time; using base::TimeDelta; using base::win::ScopedComPtr; -static const char kMetricsType[] = "application/vnd.mozilla.metrics.bz2"; - // The first UMA upload occurs after this interval. static const int kInitialUMAUploadTimeoutMilliSeconds = 30000; @@ -106,13 +104,15 @@ class ChromeFrameMetricsDataUploader : public BSCBImpl { } static HRESULT ChromeFrameMetricsDataUploader::UploadDataHelper( - const std::string& upload_data) { + const std::string& upload_data, + const std::string& server_url, + const std::string& mime_type) { CComObject<ChromeFrameMetricsDataUploader>* data_uploader = NULL; CComObject<ChromeFrameMetricsDataUploader>::CreateInstance(&data_uploader); DCHECK(data_uploader != NULL); data_uploader->AddRef(); - HRESULT hr = data_uploader->UploadData(upload_data); + HRESULT hr = data_uploader->UploadData(upload_data, server_url, mime_type); if (FAILED(hr)) { DLOG(ERROR) << "Failed to initialize ChromeFrame UMA data uploader: Err" << hr; @@ -121,7 +121,9 @@ class ChromeFrameMetricsDataUploader : public BSCBImpl { return hr; } - HRESULT UploadData(const std::string& upload_data) { + HRESULT UploadData(const std::string& upload_data, + const std::string& server_url, + const std::string& mime_type) { if (upload_data.empty()) { NOTREACHED() << "Invalid upload data"; return E_INVALIDARG; @@ -146,10 +148,10 @@ class ChromeFrameMetricsDataUploader : public BSCBImpl { RewindStream(cache_stream_); - BrowserDistribution* dist = BrowserDistribution::GetSpecificDistribution( - BrowserDistribution::CHROME_FRAME); - server_url_ = dist->GetStatsServerURL(); + server_url_ = ASCIIToWide(server_url); + mime_type_ = mime_type; DCHECK(!server_url_.empty()); + DCHECK(!mime_type_.empty()); hr = CreateURLMoniker(NULL, server_url_.c_str(), upload_moniker_.Receive()); @@ -185,7 +187,7 @@ class ChromeFrameMetricsDataUploader : public BSCBImpl { "Content-Type: %s\r\n" "%s\r\n", base::Int64ToString(upload_data_size_).c_str(), - kMetricsType, + mime_type_.c_str(), http_utils::GetDefaultUserAgentHeaderWithCFTag().c_str()); *additional_headers = reinterpret_cast<wchar_t*>( @@ -230,6 +232,7 @@ class ChromeFrameMetricsDataUploader : public BSCBImpl { private: std::wstring server_url_; + std::string mime_type_; size_t upload_data_size_; ScopedComPtr<IStream> cache_stream_; ScopedComPtr<IMoniker> upload_moniker_; @@ -405,20 +408,13 @@ void MetricsService::MakePendingLog() { if (log_manager_.has_staged_log()) return; - switch (state_) { - case INITIALIZED: // We should be further along by now. - DCHECK(false); - return; - - case ACTIVE: - StopRecording(true); - StartRecording(); - break; - - default: - DCHECK(false); - return; + if (state_ != ACTIVE) { + NOTREACHED(); + return; } + + StopRecording(true); + StartRecording(); } bool MetricsService::TransmissionPermitted() const { @@ -427,8 +423,6 @@ bool MetricsService::TransmissionPermitted() const { return user_permits_upload_; } -// TODO(isherman): Update this to log to the protobuf server as well... -// http://crbug.com/109817 bool MetricsService::UploadData() { DCHECK_EQ(thread_, base::PlatformThread::CurrentId()); @@ -447,7 +441,10 @@ bool MetricsService::UploadData() { if (log_manager_.has_staged_log()) { HRESULT hr = ChromeFrameMetricsDataUploader::UploadDataHelper( - log_manager_.staged_log_text().xml); + log_manager_.staged_log_text().xml, kServerUrlXml, kMimeTypeXml); + DCHECK(SUCCEEDED(hr)); + hr = ChromeFrameMetricsDataUploader::UploadDataHelper( + log_manager_.staged_log_text().proto, kServerUrlProto, kMimeTypeProto); DCHECK(SUCCEEDED(hr)); log_manager_.DiscardStagedLog(); } else { |