| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
| 6 #include "base/metrics/histogram.h" | 6 #include "base/metrics/histogram.h" |
| 7 #include "base/metrics/statistics_recorder.h" | 7 #include "base/metrics/statistics_recorder.h" |
| 8 #include "base/prefs/testing_pref_service.h" | 8 #include "base/prefs/testing_pref_service.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/browser/prefs/pref_metrics_service.h" | 10 #include "chrome/browser/prefs/pref_metrics_service.h" |
| 11 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 11 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
| 12 #include "chrome/test/base/testing_browser_process.h" |
| 12 #include "chrome/test/base/testing_pref_service_syncable.h" | 13 #include "chrome/test/base/testing_pref_service_syncable.h" |
| 13 #include "chrome/test/base/testing_profile.h" | 14 #include "chrome/test/base/testing_profile.h" |
| 15 #include "chrome/test/base/testing_profile_manager.h" |
| 14 #include "components/user_prefs/pref_registry_syncable.h" | 16 #include "components/user_prefs/pref_registry_syncable.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
| 16 | 18 |
| 17 namespace { | 19 namespace { |
| 18 | 20 |
| 19 // TestingProfile may register some real preferences; to avoid interference, | 21 // TestingProfile may register some real preferences; to avoid interference, |
| 20 // define fake preferences for testing. | 22 // define fake preferences for testing. |
| 21 const char* kTrackedPrefs[] = { | 23 const char* kTrackedPrefs[] = { |
| 22 "pref_metrics_service_test.pref1", | 24 "pref_metrics_service_test.pref1", |
| 23 "pref_metrics_service_test.pref2", | 25 "pref_metrics_service_test.pref2", |
| (...skipping 10 matching lines...) Expand all Loading... |
| 34 pref2_changed_ = 0; | 36 pref2_changed_ = 0; |
| 35 pref1_cleared_ = 0; | 37 pref1_cleared_ = 0; |
| 36 pref2_cleared_ = 0; | 38 pref2_cleared_ = 0; |
| 37 pref1_initialized_ = 0; | 39 pref1_initialized_ = 0; |
| 38 pref2_initialized_ = 0; | 40 pref2_initialized_ = 0; |
| 39 pref1_unchanged_ = 0; | 41 pref1_unchanged_ = 0; |
| 40 pref2_unchanged_ = 0; | 42 pref2_unchanged_ = 0; |
| 41 | 43 |
| 42 base::StatisticsRecorder::Initialize(); | 44 base::StatisticsRecorder::Initialize(); |
| 43 | 45 |
| 44 prefs_ = profile_.GetTestingPrefService(); | 46 // Reset and set up the profile manager. |
| 47 profile_manager_.reset(new TestingProfileManager( |
| 48 TestingBrowserProcess::GetGlobal())); |
| 49 ASSERT_TRUE(profile_manager_->SetUp()); |
| 50 |
| 51 // Check that PrefMetricsService behaves with a '.' in the profile name. |
| 52 profile_ = profile_manager_->CreateTestingProfile("test@example.com"); |
| 53 |
| 54 prefs_ = profile_->GetTestingPrefService(); |
| 45 | 55 |
| 46 // Register our test-only tracked prefs as string values. | 56 // Register our test-only tracked prefs as string values. |
| 47 for (int i = 0; i < kTrackedPrefCount; ++i) { | 57 for (int i = 0; i < kTrackedPrefCount; ++i) { |
| 48 prefs_->registry()->RegisterStringPref( | 58 prefs_->registry()->RegisterStringPref( |
| 49 kTrackedPrefs[i], | 59 kTrackedPrefs[i], |
| 50 "test_default_value", | 60 "test_default_value", |
| 51 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); | 61 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); |
| 52 } | 62 } |
| 53 | 63 |
| 54 // Initialize pref in local state that holds hashed values. | 64 // Initialize pref in local state that holds hashed values. |
| 55 PrefMetricsService::RegisterPrefs(local_state_.registry()); | 65 PrefMetricsService::RegisterPrefs(local_state_.registry()); |
| 56 | 66 |
| 57 // Update global counts in case another test left stray samples. | 67 // Update global counts in case another test left stray samples. |
| 58 UpdateHistogramSamples(); | 68 UpdateHistogramSamples(); |
| 59 } | 69 } |
| 60 | 70 |
| 61 scoped_ptr<PrefMetricsService> CreatePrefMetricsService() { | 71 scoped_ptr<PrefMetricsService> CreatePrefMetricsService() { |
| 62 return scoped_ptr<PrefMetricsService>( | 72 return scoped_ptr<PrefMetricsService>( |
| 63 new PrefMetricsService(&profile_, | 73 new PrefMetricsService(profile_, |
| 64 &local_state_, | 74 &local_state_, |
| 65 "test_device_id", | 75 "test_device_id", |
| 66 kTrackedPrefs, | 76 kTrackedPrefs, |
| 67 kTrackedPrefCount)); | 77 kTrackedPrefCount)); |
| 68 } | 78 } |
| 69 | 79 |
| 70 std::string GetHashedPrefValue(PrefMetricsService* service, | 80 std::string GetHashedPrefValue(PrefMetricsService* service, |
| 71 const char* path, base::Value* value) { | 81 const char* path, base::Value* value) { |
| 72 return service->GetHashedPrefValue(path, value); | 82 return service->GetHashedPrefValue(path, value); |
| 73 } | 83 } |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 pref2_initialized_total = inited2; | 118 pref2_initialized_total = inited2; |
| 109 | 119 |
| 110 int unchanged1, unchanged2; | 120 int unchanged1, unchanged2; |
| 111 GetSamples("Settings.TrackedPreferenceUnchanged", &unchanged1, &unchanged2); | 121 GetSamples("Settings.TrackedPreferenceUnchanged", &unchanged1, &unchanged2); |
| 112 pref1_unchanged_ = unchanged1 - pref1_unchanged_total; | 122 pref1_unchanged_ = unchanged1 - pref1_unchanged_total; |
| 113 pref2_unchanged_ = unchanged2 - pref2_unchanged_total; | 123 pref2_unchanged_ = unchanged2 - pref2_unchanged_total; |
| 114 pref1_unchanged_total = unchanged1; | 124 pref1_unchanged_total = unchanged1; |
| 115 pref2_unchanged_total = unchanged2; | 125 pref2_unchanged_total = unchanged2; |
| 116 } | 126 } |
| 117 | 127 |
| 118 TestingProfile profile_; | 128 TestingProfile* profile_; |
| 129 scoped_ptr<TestingProfileManager> profile_manager_; |
| 119 TestingPrefServiceSyncable* prefs_; | 130 TestingPrefServiceSyncable* prefs_; |
| 120 TestingPrefServiceSimple local_state_; | 131 TestingPrefServiceSimple local_state_; |
| 121 | 132 |
| 122 // Since histogram samples are recorded by a global StatisticsRecorder, we | 133 // Since histogram samples are recorded by a global StatisticsRecorder, we |
| 123 // need to maintain total counts so we can compute deltas for individual | 134 // need to maintain total counts so we can compute deltas for individual |
| 124 // tests. | 135 // tests. |
| 125 static int pref1_changed_total; | 136 static int pref1_changed_total; |
| 126 static int pref2_changed_total; | 137 static int pref2_changed_total; |
| 127 static int pref1_cleared_total; | 138 static int pref1_cleared_total; |
| 128 static int pref2_cleared_total; | 139 static int pref2_cleared_total; |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 EXPECT_EQ("C503FB7C65EEFD5C07185F616A0AA67923C069909933F362022B1F187E73E9A2", | 276 EXPECT_EQ("C503FB7C65EEFD5C07185F616A0AA67923C069909933F362022B1F187E73E9A2", |
| 266 GetHashedPrefValue(test.get(), "pref.path1", &dict)); | 277 GetHashedPrefValue(test.get(), "pref.path1", &dict)); |
| 267 | 278 |
| 268 ListValue list; | 279 ListValue list; |
| 269 list.Set(0, new base::FundamentalValue(true)); | 280 list.Set(0, new base::FundamentalValue(true)); |
| 270 list.Set(1, new base::FundamentalValue(100)); | 281 list.Set(1, new base::FundamentalValue(100)); |
| 271 list.Set(2, new base::FundamentalValue(1.0)); | 282 list.Set(2, new base::FundamentalValue(1.0)); |
| 272 EXPECT_EQ("3163EC3C96263143AF83EA5C9860DFB960EE2263413C7D7D8A9973FCC00E7692", | 283 EXPECT_EQ("3163EC3C96263143AF83EA5C9860DFB960EE2263413C7D7D8A9973FCC00E7692", |
| 273 GetHashedPrefValue(test.get(), "pref.path2", &list)); | 284 GetHashedPrefValue(test.get(), "pref.path2", &list)); |
| 274 } | 285 } |
| OLD | NEW |