| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 //------------------------------------------------------------------------------ | 6 //------------------------------------------------------------------------------ |
| 7 // Description of the life cycle of a instance of MetricsService. | 7 // Description of the life cycle of a instance of MetricsService. |
| 8 // | 8 // |
| 9 // OVERVIEW | 9 // OVERVIEW |
| 10 // | 10 // |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 } | 115 } |
| 116 return upload_thread; | 116 return upload_thread; |
| 117 } | 117 } |
| 118 }; | 118 }; |
| 119 | 119 |
| 120 // ChromeFrame UMA uploads occur on this thread. This thread is started on the | 120 // ChromeFrame UMA uploads occur on this thread. This thread is started on the |
| 121 // IE UI thread. This thread needs to be stopped on the same thread it was | 121 // IE UI thread. This thread needs to be stopped on the same thread it was |
| 122 // started on. We don't have a good way of achieving this at this point. This | 122 // started on. We don't have a good way of achieving this at this point. This |
| 123 // thread object is currently leaked. | 123 // thread object is currently leaked. |
| 124 // TODO(ananta) | 124 // TODO(ananta) |
| 125 // Fix this. | 125 // TODO(vitalybuka@chromium.org) : Fix this by using MetricsService::Stop() in |
| 126 // appropriate location. |
| 126 base::LazyInstance<base::Thread, UploadThreadInstanceTraits> | 127 base::LazyInstance<base::Thread, UploadThreadInstanceTraits> |
| 127 g_metrics_upload_thread_(base::LINKER_INITIALIZED); | 128 g_metrics_upload_thread_(base::LINKER_INITIALIZED); |
| 128 | 129 |
| 129 Lock g_metrics_service_lock; | 130 Lock g_metrics_service_lock; |
| 130 | 131 |
| 131 extern base::LazyInstance<base::StatisticsRecorder> g_statistics_recorder_; | 132 extern base::LazyInstance<base::StatisticsRecorder> g_statistics_recorder_; |
| 132 | 133 |
| 133 // This class provides HTTP request context information for metrics upload | 134 // This class provides HTTP request context information for metrics upload |
| 134 // requests initiated by ChromeFrame. | 135 // requests initiated by ChromeFrame. |
| 135 class ChromeFrameUploadRequestContext : public URLRequestContext { | 136 class ChromeFrameUploadRequestContext : public URLRequestContext { |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 if (GetInstance()->state_ == ACTIVE) | 403 if (GetInstance()->state_ == ACTIVE) |
| 403 return; | 404 return; |
| 404 | 405 |
| 405 GetInstance()->InitializeMetricsState(); | 406 GetInstance()->InitializeMetricsState(); |
| 406 GetInstance()->SetRecording(true); | 407 GetInstance()->SetRecording(true); |
| 407 GetInstance()->SetReporting(true); | 408 GetInstance()->SetReporting(true); |
| 408 } | 409 } |
| 409 | 410 |
| 410 // static | 411 // static |
| 411 void MetricsService::Stop() { | 412 void MetricsService::Stop() { |
| 412 AutoLock lock(metrics_service_lock_); | 413 { |
| 414 AutoLock lock(metrics_service_lock_); |
| 413 | 415 |
| 414 GetInstance()->SetReporting(false); | 416 GetInstance()->SetReporting(false); |
| 415 GetInstance()->SetRecording(false); | 417 GetInstance()->SetRecording(false); |
| 418 } |
| 419 |
| 420 if (GetInstance()->user_permits_upload_) |
| 421 g_metrics_upload_thread_.Get().Stop(); |
| 416 } | 422 } |
| 417 | 423 |
| 418 void MetricsService::SetRecording(bool enabled) { | 424 void MetricsService::SetRecording(bool enabled) { |
| 419 if (enabled == recording_active_) | 425 if (enabled == recording_active_) |
| 420 return; | 426 return; |
| 421 | 427 |
| 422 if (enabled) { | 428 if (enabled) { |
| 423 if (client_id_.empty()) { | 429 if (client_id_.empty()) { |
| 424 client_id_ = GenerateClientID(); | 430 client_id_ = GenerateClientID(); |
| 425 // Save client id somewhere. | 431 // Save client id somewhere. |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 604 version += "-F"; | 610 version += "-F"; |
| 605 if (!version_info.IsOfficialBuild()) | 611 if (!version_info.IsOfficialBuild()) |
| 606 version.append("-devel"); | 612 version.append("-devel"); |
| 607 return version; | 613 return version; |
| 608 } else { | 614 } else { |
| 609 NOTREACHED() << "Unable to retrieve version string."; | 615 NOTREACHED() << "Unable to retrieve version string."; |
| 610 } | 616 } |
| 611 | 617 |
| 612 return std::string(); | 618 return std::string(); |
| 613 } | 619 } |
| OLD | NEW |