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 |