| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 //------------------------------------------------------------------------------ | 5 //------------------------------------------------------------------------------ |
| 6 // Description of the life cycle of a instance of MetricsService. | 6 // Description of the life cycle of a instance of MetricsService. |
| 7 // | 7 // |
| 8 // OVERVIEW | 8 // OVERVIEW |
| 9 // | 9 // |
| 10 // A MetricsService instance is created at ChromeFrame startup in | 10 // A MetricsService instance is created at ChromeFrame startup in |
| (...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 | 412 |
| 413 DCHECK(log_manager_.has_staged_log()); | 413 DCHECK(log_manager_.has_staged_log()); |
| 414 } | 414 } |
| 415 | 415 |
| 416 bool MetricsService::TransmissionPermitted() const { | 416 bool MetricsService::TransmissionPermitted() const { |
| 417 // If the user forbids uploading that's their business, and we don't upload | 417 // If the user forbids uploading that's their business, and we don't upload |
| 418 // anything. | 418 // anything. |
| 419 return user_permits_upload_; | 419 return user_permits_upload_; |
| 420 } | 420 } |
| 421 | 421 |
| 422 // TODO(isherman): Update this to log to the protobuf server as well... |
| 423 // http://crbug.com/109817 |
| 422 bool MetricsService::UploadData() { | 424 bool MetricsService::UploadData() { |
| 423 DCHECK_EQ(thread_, base::PlatformThread::CurrentId()); | 425 DCHECK_EQ(thread_, base::PlatformThread::CurrentId()); |
| 424 | 426 |
| 425 if (!GetInstance()->TransmissionPermitted()) | 427 if (!GetInstance()->TransmissionPermitted()) |
| 426 return false; | 428 return false; |
| 427 | 429 |
| 428 static long currently_uploading = 0; | 430 static long currently_uploading = 0; |
| 429 if (InterlockedCompareExchange(¤tly_uploading, 1, 0)) { | 431 if (InterlockedCompareExchange(¤tly_uploading, 1, 0)) { |
| 430 DVLOG(1) << "Contention for uploading metrics data. Backing off"; | 432 DVLOG(1) << "Contention for uploading metrics data. Backing off"; |
| 431 return false; | 433 return false; |
| 432 } | 434 } |
| 433 | 435 |
| 434 MakePendingLog(); | 436 MakePendingLog(); |
| 435 DCHECK(log_manager_.has_staged_log()); | 437 DCHECK(log_manager_.has_staged_log()); |
| 436 | 438 |
| 437 bool ret = true; | 439 bool ret = true; |
| 438 | 440 |
| 439 if (log_manager_.staged_log_text().empty()) { | 441 if (log_manager_.staged_log_text().empty()) { |
| 440 NOTREACHED() << "Failed to compress log for transmission."; | 442 NOTREACHED() << "Failed to compress log for transmission."; |
| 441 ret = false; | 443 ret = false; |
| 442 } else { | 444 } else { |
| 443 HRESULT hr = ChromeFrameMetricsDataUploader::UploadDataHelper( | 445 HRESULT hr = ChromeFrameMetricsDataUploader::UploadDataHelper( |
| 444 log_manager_.staged_log_text()); | 446 log_manager_.staged_log_text().xml); |
| 445 DCHECK(SUCCEEDED(hr)); | 447 DCHECK(SUCCEEDED(hr)); |
| 446 } | 448 } |
| 447 log_manager_.DiscardStagedLog(); | 449 log_manager_.DiscardStagedLog(); |
| 448 | 450 |
| 449 currently_uploading = 0; | 451 currently_uploading = 0; |
| 450 return ret; | 452 return ret; |
| 451 } | 453 } |
| 452 | 454 |
| 453 // static | 455 // static |
| 454 std::string MetricsService::GetVersionString() { | 456 std::string MetricsService::GetVersionString() { |
| 455 chrome::VersionInfo version_info; | 457 chrome::VersionInfo version_info; |
| 456 if (version_info.is_valid()) { | 458 if (version_info.is_valid()) { |
| 457 std::string version = version_info.Version(); | 459 std::string version = version_info.Version(); |
| 458 // Add the -F extensions to ensure that UMA data uploaded by ChromeFrame | 460 // Add the -F extensions to ensure that UMA data uploaded by ChromeFrame |
| 459 // lands in the ChromeFrame bucket. | 461 // lands in the ChromeFrame bucket. |
| 460 version += "-F"; | 462 version += "-F"; |
| 461 if (!version_info.IsOfficialBuild()) | 463 if (!version_info.IsOfficialBuild()) |
| 462 version.append("-devel"); | 464 version.append("-devel"); |
| 463 return version; | 465 return version; |
| 464 } else { | 466 } else { |
| 465 NOTREACHED() << "Unable to retrieve version string."; | 467 NOTREACHED() << "Unable to retrieve version string."; |
| 466 } | 468 } |
| 467 | 469 |
| 468 return std::string(); | 470 return std::string(); |
| 469 } | 471 } |
| OLD | NEW |