| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "components/metrics/metrics_state_manager.h" | 5 #include "components/metrics/metrics_state_manager.h" |
| 6 | 6 |
| 7 #include <ctype.h> | 7 #include <ctype.h> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 #include "base/prefs/testing_pref_service.h" | 12 #include "base/prefs/testing_pref_service.h" |
| 13 #include "components/metrics/client_info.h" |
| 13 #include "components/metrics/metrics_pref_names.h" | 14 #include "components/metrics/metrics_pref_names.h" |
| 14 #include "components/metrics/metrics_switches.h" | 15 #include "components/metrics/metrics_switches.h" |
| 15 #include "components/variations/caching_permuted_entropy_provider.h" | 16 #include "components/variations/caching_permuted_entropy_provider.h" |
| 16 #include "components/variations/pref_names.h" | 17 #include "components/variations/pref_names.h" |
| 17 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
| 18 | 19 |
| 19 namespace metrics { | 20 namespace metrics { |
| 20 | 21 |
| 21 class MetricsStateManagerTest : public testing::Test { | 22 class MetricsStateManagerTest : public testing::Test { |
| 22 public: | 23 public: |
| 23 MetricsStateManagerTest() : is_metrics_reporting_enabled_(false) { | 24 MetricsStateManagerTest() : is_metrics_reporting_enabled_(false) { |
| 24 MetricsStateManager::RegisterPrefs(prefs_.registry()); | 25 MetricsStateManager::RegisterPrefs(prefs_.registry()); |
| 25 } | 26 } |
| 26 | 27 |
| 27 scoped_ptr<MetricsStateManager> CreateStateManager() { | 28 scoped_ptr<MetricsStateManager> CreateStateManager() { |
| 28 return MetricsStateManager::Create( | 29 return MetricsStateManager::Create( |
| 29 &prefs_, | 30 &prefs_, |
| 30 base::Bind(&MetricsStateManagerTest::is_metrics_reporting_enabled, | 31 base::Bind(&MetricsStateManagerTest::is_metrics_reporting_enabled, |
| 32 base::Unretained(this)), |
| 33 base::Bind(&MetricsStateManagerTest::MockStoreClientInfoBackup, |
| 34 base::Unretained(this)), |
| 35 base::Bind(&MetricsStateManagerTest::LoadFakeClientInfoBackup, |
| 31 base::Unretained(this))).Pass(); | 36 base::Unretained(this))).Pass(); |
| 32 } | 37 } |
| 33 | 38 |
| 34 // Sets metrics reporting as enabled for testing. | 39 // Sets metrics reporting as enabled for testing. |
| 35 void EnableMetricsReporting() { | 40 void EnableMetricsReporting() { |
| 36 is_metrics_reporting_enabled_ = true; | 41 is_metrics_reporting_enabled_ = true; |
| 37 } | 42 } |
| 38 | 43 |
| 39 protected: | 44 protected: |
| 40 TestingPrefServiceSimple prefs_; | 45 TestingPrefServiceSimple prefs_; |
| 41 | 46 |
| 42 private: | 47 private: |
| 43 bool is_metrics_reporting_enabled() const { | 48 bool is_metrics_reporting_enabled() const { |
| 44 return is_metrics_reporting_enabled_; | 49 return is_metrics_reporting_enabled_; |
| 45 } | 50 } |
| 46 | 51 |
| 52 // Stores the |client_info| in |stored_client_info_backup_| for verification |
| 53 // by the tests later. |
| 54 void MockStoreClientInfoBackup(const ClientInfo& client_info) { |
| 55 stored_client_info_backup_.reset(new ClientInfo); |
| 56 stored_client_info_backup_->client_id = client_info.client_id; |
| 57 stored_client_info_backup_->installation_date = |
| 58 client_info.installation_date; |
| 59 stored_client_info_backup_->reporting_enabled_date = |
| 60 client_info.reporting_enabled_date; |
| 61 } |
| 62 |
| 63 // Hands off |fake_client_info_backup_| if it was set. |
| 64 scoped_ptr<ClientInfo> LoadFakeClientInfoBackup() { |
| 65 return fake_client_info_backup_.Pass(); |
| 66 } |
| 67 |
| 47 bool is_metrics_reporting_enabled_; | 68 bool is_metrics_reporting_enabled_; |
| 48 | 69 |
| 70 // Last ClientInfo store via MockStoreClientInfoBackup by the |
| 71 // MetricsStateManager. |
| 72 scoped_ptr<ClientInfo> stored_client_info_backup_; |
| 73 |
| 74 // If set, will be returned via LoadFakeClientInfoBackup if requested by the |
| 75 // MetricsStateManager. |
| 76 scoped_ptr<ClientInfo> fake_client_info_backup_; |
| 77 |
| 49 DISALLOW_COPY_AND_ASSIGN(MetricsStateManagerTest); | 78 DISALLOW_COPY_AND_ASSIGN(MetricsStateManagerTest); |
| 50 }; | 79 }; |
| 51 | 80 |
| 52 // Ensure the ClientId is formatted as expected. | 81 // Ensure the ClientId is formatted as expected. |
| 53 TEST_F(MetricsStateManagerTest, ClientIdCorrectlyFormatted) { | 82 TEST_F(MetricsStateManagerTest, ClientIdCorrectlyFormatted) { |
| 54 scoped_ptr<MetricsStateManager> state_manager(CreateStateManager()); | 83 scoped_ptr<MetricsStateManager> state_manager(CreateStateManager()); |
| 55 state_manager->ForceClientIdCreation(); | 84 state_manager->ForceClientIdCreation(); |
| 56 | 85 |
| 57 const std::string client_id = state_manager->client_id(); | 86 const std::string client_id = state_manager->client_id(); |
| 58 EXPECT_EQ(36U, client_id.length()); | 87 EXPECT_EQ(36U, client_id.length()); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 | 194 |
| 166 state_manager->GetLowEntropySource(); | 195 state_manager->GetLowEntropySource(); |
| 167 | 196 |
| 168 EXPECT_FALSE(prefs_.GetBoolean(prefs::kMetricsResetIds)); | 197 EXPECT_FALSE(prefs_.GetBoolean(prefs::kMetricsResetIds)); |
| 169 } | 198 } |
| 170 | 199 |
| 171 EXPECT_NE(kInitialClientId, prefs_.GetString(prefs::kMetricsClientID)); | 200 EXPECT_NE(kInitialClientId, prefs_.GetString(prefs::kMetricsClientID)); |
| 172 } | 201 } |
| 173 | 202 |
| 174 } // namespace metrics | 203 } // namespace metrics |
| OLD | NEW |