| Index: chromecast/browser/metrics/cast_metrics_service_client.cc
|
| diff --git a/chromecast/browser/metrics/cast_metrics_service_client.cc b/chromecast/browser/metrics/cast_metrics_service_client.cc
|
| index 21ac10b5a66c214facb511c4095e7f6631907c77..aa6076c82cd97b83d906228407266a7ed949ad20 100644
|
| --- a/chromecast/browser/metrics/cast_metrics_service_client.cc
|
| +++ b/chromecast/browser/metrics/cast_metrics_service_client.cc
|
| @@ -17,8 +17,9 @@
|
| #include "chromecast/base/path_utils.h"
|
| #include "chromecast/base/pref_names.h"
|
| #include "chromecast/base/version.h"
|
| +#include "chromecast/browser/cast_browser_process.h"
|
| +#include "chromecast/browser/cast_content_browser_client.h"
|
| #include "chromecast/browser/metrics/cast_stability_metrics_provider.h"
|
| -#include "chromecast/browser/metrics/platform_metrics_providers.h"
|
| #include "chromecast/public/cast_sys_info.h"
|
| #include "components/metrics/client_info.h"
|
| #include "components/metrics/gpu/gpu_metrics_provider.h"
|
| @@ -94,7 +95,8 @@ void CastMetricsServiceClient::SetMetricsClientId(
|
| const std::string& client_id) {
|
| client_id_ = client_id;
|
| LOG(INFO) << "Metrics client ID set: " << client_id;
|
| - PlatformSetClientID(cast_service_, client_id);
|
| + shell::CastBrowserProcess::GetInstance()->browser_client()->
|
| + SetMetricsClientId(client_id);
|
| }
|
|
|
| void CastMetricsServiceClient::OnRecordingDisabled() {
|
| @@ -110,6 +112,7 @@ void CastMetricsServiceClient::StoreClientInfo(
|
|
|
| scoped_ptr< ::metrics::ClientInfo> CastMetricsServiceClient::LoadClientInfo() {
|
| scoped_ptr< ::metrics::ClientInfo> client_info(new ::metrics::ClientInfo);
|
| + client_info_loaded_ = true;
|
|
|
| // kMetricsIsNewClientID would be missing if either the device was just
|
| // FDR'ed, or it is on pre-v1.2 build.
|
| @@ -125,19 +128,20 @@ scoped_ptr< ::metrics::ClientInfo> CastMetricsServiceClient::LoadClientInfo() {
|
| // else the device was just FDR'ed, pass through.
|
| }
|
|
|
| - const std::string client_id(GetPlatformClientID(cast_service_));
|
| - if (!client_id.empty() && base::IsValidGUID(client_id)) {
|
| - client_info->client_id = client_id;
|
| + // Use "forced" client ID if available.
|
| + if (!force_client_id_.empty() && base::IsValidGUID(force_client_id_)) {
|
| + client_info->client_id = force_client_id_;
|
| return client_info.Pass();
|
| + }
|
| +
|
| + if (force_client_id_.empty()) {
|
| + LOG(WARNING) << "Empty client id from platform,"
|
| + << " assuming this is the first boot up of a new device.";
|
| } else {
|
| - if (client_id.empty()) {
|
| - LOG(WARNING) << "Empty client id from platform,"
|
| - << " assuming this is the first boot up of a new device.";
|
| - } else {
|
| - LOG(ERROR) << "Invalid client id " << client_id << " from platform.";
|
| - }
|
| - return scoped_ptr< ::metrics::ClientInfo>();
|
| + LOG(ERROR) << "Invalid client id from platform: " << force_client_id_
|
| + << " from platform.";
|
| }
|
| + return scoped_ptr< ::metrics::ClientInfo>();
|
| }
|
|
|
| bool CastMetricsServiceClient::IsOffTheRecordSessionActive() {
|
| @@ -258,6 +262,7 @@ CastMetricsServiceClient::CastMetricsServiceClient(
|
| : io_task_runner_(io_task_runner),
|
| pref_service_(pref_service),
|
| cast_service_(nullptr),
|
| + client_info_loaded_(false),
|
| #if defined(OS_LINUX)
|
| external_metrics_(nullptr),
|
| platform_metrics_(nullptr),
|
| @@ -277,6 +282,14 @@ void CastMetricsServiceClient::OnApplicationNotIdle() {
|
| metrics_service_->OnApplicationNotIdle();
|
| }
|
|
|
| +void CastMetricsServiceClient::SetForceClientId(
|
| + const std::string& client_id) {
|
| + DCHECK(force_client_id_.empty());
|
| + DCHECK(!client_info_loaded_)
|
| + << "Force client ID must be set before client info is loaded.";
|
| + force_client_id_ = client_id;
|
| +}
|
| +
|
| void CastMetricsServiceClient::Initialize(CastService* cast_service) {
|
| DCHECK(cast_service);
|
| DCHECK(!cast_service_);
|
| @@ -319,7 +332,8 @@ void CastMetricsServiceClient::Initialize(CastService* cast_service) {
|
| metrics_service_->RegisterMetricsProvider(
|
| scoped_ptr< ::metrics::MetricsProvider>(
|
| new ::metrics::ProfilerMetricsProvider));
|
| - RegisterPlatformMetricsProviders(metrics_service_.get(), cast_service_);
|
| + shell::CastBrowserProcess::GetInstance()->browser_client()->
|
| + RegisterMetricsProviders(metrics_service_.get());
|
|
|
| metrics_service_->InitializeMetricsRecordingState();
|
| #if !defined(OS_ANDROID)
|
|
|