| 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 "chrome/browser/supervised_user/supervised_user_settings_service.h" | 5 #include "chrome/browser/supervised_user/supervised_user_settings_service.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 const char kAtomicItemName[] = "X-Wombat"; | 57 const char kAtomicItemName[] = "X-Wombat"; |
| 58 const char kSettingsName[] = "TestingSetting"; | 58 const char kSettingsName[] = "TestingSetting"; |
| 59 const char kSettingsValue[] = "SettingsValue"; | 59 const char kSettingsValue[] = "SettingsValue"; |
| 60 const char kSplitItemName[] = "X-SuperMoosePowers"; | 60 const char kSplitItemName[] = "X-SuperMoosePowers"; |
| 61 | 61 |
| 62 class SupervisedUserSettingsServiceTest : public ::testing::Test { | 62 class SupervisedUserSettingsServiceTest : public ::testing::Test { |
| 63 protected: | 63 protected: |
| 64 SupervisedUserSettingsServiceTest() : settings_service_(nullptr) {} | 64 SupervisedUserSettingsServiceTest() : settings_service_(nullptr) {} |
| 65 ~SupervisedUserSettingsServiceTest() override {} | 65 ~SupervisedUserSettingsServiceTest() override {} |
| 66 | 66 |
| 67 scoped_ptr<syncer::SyncChangeProcessor> CreateSyncProcessor() { | 67 std::unique_ptr<syncer::SyncChangeProcessor> CreateSyncProcessor() { |
| 68 sync_processor_.reset(new syncer::FakeSyncChangeProcessor); | 68 sync_processor_.reset(new syncer::FakeSyncChangeProcessor); |
| 69 return scoped_ptr<syncer::SyncChangeProcessor>( | 69 return std::unique_ptr<syncer::SyncChangeProcessor>( |
| 70 new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get())); | 70 new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get())); |
| 71 } | 71 } |
| 72 | 72 |
| 73 syncer::SyncMergeResult StartSyncing( | 73 syncer::SyncMergeResult StartSyncing( |
| 74 const syncer::SyncDataList& initial_sync_data) { | 74 const syncer::SyncDataList& initial_sync_data) { |
| 75 scoped_ptr<syncer::SyncErrorFactory> error_handler( | 75 std::unique_ptr<syncer::SyncErrorFactory> error_handler( |
| 76 new MockSyncErrorFactory(syncer::SUPERVISED_USER_SETTINGS)); | 76 new MockSyncErrorFactory(syncer::SUPERVISED_USER_SETTINGS)); |
| 77 syncer::SyncMergeResult result = settings_service_.MergeDataAndStartSyncing( | 77 syncer::SyncMergeResult result = settings_service_.MergeDataAndStartSyncing( |
| 78 syncer::SUPERVISED_USER_SETTINGS, initial_sync_data, | 78 syncer::SUPERVISED_USER_SETTINGS, initial_sync_data, |
| 79 CreateSyncProcessor(), std::move(error_handler)); | 79 CreateSyncProcessor(), std::move(error_handler)); |
| 80 EXPECT_FALSE(result.error().IsSet()); | 80 EXPECT_FALSE(result.error().IsSet()); |
| 81 return result; | 81 return result; |
| 82 } | 82 } |
| 83 | 83 |
| 84 void UploadSplitItem(const std::string& key, const std::string& value) { | 84 void UploadSplitItem(const std::string& key, const std::string& value) { |
| 85 split_items_.SetStringWithoutPathExpansion(key, value); | 85 split_items_.SetStringWithoutPathExpansion(key, value); |
| 86 settings_service_.UploadItem( | 86 settings_service_.UploadItem( |
| 87 SupervisedUserSettingsService::MakeSplitSettingKey(kSplitItemName, key), | 87 SupervisedUserSettingsService::MakeSplitSettingKey(kSplitItemName, key), |
| 88 scoped_ptr<base::Value>(new base::StringValue(value))); | 88 std::unique_ptr<base::Value>(new base::StringValue(value))); |
| 89 } | 89 } |
| 90 | 90 |
| 91 void UploadAtomicItem(const std::string& value) { | 91 void UploadAtomicItem(const std::string& value) { |
| 92 atomic_setting_value_.reset(new base::StringValue(value)); | 92 atomic_setting_value_.reset(new base::StringValue(value)); |
| 93 settings_service_.UploadItem( | 93 settings_service_.UploadItem( |
| 94 kAtomicItemName, | 94 kAtomicItemName, |
| 95 scoped_ptr<base::Value>(new base::StringValue(value))); | 95 std::unique_ptr<base::Value>(new base::StringValue(value))); |
| 96 } | 96 } |
| 97 | 97 |
| 98 void VerifySyncDataItem(syncer::SyncData sync_data) { | 98 void VerifySyncDataItem(syncer::SyncData sync_data) { |
| 99 const sync_pb::ManagedUserSettingSpecifics& supervised_user_setting = | 99 const sync_pb::ManagedUserSettingSpecifics& supervised_user_setting = |
| 100 sync_data.GetSpecifics().managed_user_setting(); | 100 sync_data.GetSpecifics().managed_user_setting(); |
| 101 base::Value* expected_value = nullptr; | 101 base::Value* expected_value = nullptr; |
| 102 if (supervised_user_setting.name() == kAtomicItemName) { | 102 if (supervised_user_setting.name() == kAtomicItemName) { |
| 103 expected_value = atomic_setting_value_.get(); | 103 expected_value = atomic_setting_value_.get(); |
| 104 } else { | 104 } else { |
| 105 EXPECT_TRUE(base::StartsWith(supervised_user_setting.name(), | 105 EXPECT_TRUE(base::StartsWith(supervised_user_setting.name(), |
| 106 std::string(kSplitItemName) + ':', | 106 std::string(kSplitItemName) + ':', |
| 107 base::CompareCase::SENSITIVE)); | 107 base::CompareCase::SENSITIVE)); |
| 108 std::string key = | 108 std::string key = |
| 109 supervised_user_setting.name().substr(strlen(kSplitItemName) + 1); | 109 supervised_user_setting.name().substr(strlen(kSplitItemName) + 1); |
| 110 EXPECT_TRUE(split_items_.GetWithoutPathExpansion(key, &expected_value)); | 110 EXPECT_TRUE(split_items_.GetWithoutPathExpansion(key, &expected_value)); |
| 111 } | 111 } |
| 112 | 112 |
| 113 scoped_ptr<base::Value> value = | 113 std::unique_ptr<base::Value> value = |
| 114 base::JSONReader::Read(supervised_user_setting.value()); | 114 base::JSONReader::Read(supervised_user_setting.value()); |
| 115 EXPECT_TRUE(expected_value->Equals(value.get())); | 115 EXPECT_TRUE(expected_value->Equals(value.get())); |
| 116 } | 116 } |
| 117 | 117 |
| 118 void OnNewSettingsAvailable(const base::DictionaryValue* settings) { | 118 void OnNewSettingsAvailable(const base::DictionaryValue* settings) { |
| 119 if (!settings) | 119 if (!settings) |
| 120 settings_.reset(); | 120 settings_.reset(); |
| 121 else | 121 else |
| 122 settings_.reset(settings->DeepCopy()); | 122 settings_.reset(settings->DeepCopy()); |
| 123 } | 123 } |
| 124 | 124 |
| 125 // testing::Test overrides: | 125 // testing::Test overrides: |
| 126 void SetUp() override { | 126 void SetUp() override { |
| 127 TestingPrefStore* pref_store = new TestingPrefStore; | 127 TestingPrefStore* pref_store = new TestingPrefStore; |
| 128 settings_service_.Init(pref_store); | 128 settings_service_.Init(pref_store); |
| 129 user_settings_subscription_ = settings_service_.Subscribe( | 129 user_settings_subscription_ = settings_service_.Subscribe( |
| 130 base::Bind(&SupervisedUserSettingsServiceTest::OnNewSettingsAvailable, | 130 base::Bind(&SupervisedUserSettingsServiceTest::OnNewSettingsAvailable, |
| 131 base::Unretained(this))); | 131 base::Unretained(this))); |
| 132 pref_store->SetInitializationCompleted(); | 132 pref_store->SetInitializationCompleted(); |
| 133 ASSERT_FALSE(settings_); | 133 ASSERT_FALSE(settings_); |
| 134 settings_service_.SetActive(true); | 134 settings_service_.SetActive(true); |
| 135 ASSERT_TRUE(settings_); | 135 ASSERT_TRUE(settings_); |
| 136 } | 136 } |
| 137 | 137 |
| 138 void TearDown() override { settings_service_.Shutdown(); } | 138 void TearDown() override { settings_service_.Shutdown(); } |
| 139 | 139 |
| 140 content::TestBrowserThreadBundle thread_bundle_; | 140 content::TestBrowserThreadBundle thread_bundle_; |
| 141 base::DictionaryValue split_items_; | 141 base::DictionaryValue split_items_; |
| 142 scoped_ptr<base::Value> atomic_setting_value_; | 142 std::unique_ptr<base::Value> atomic_setting_value_; |
| 143 SupervisedUserSettingsService settings_service_; | 143 SupervisedUserSettingsService settings_service_; |
| 144 scoped_ptr<base::DictionaryValue> settings_; | 144 std::unique_ptr<base::DictionaryValue> settings_; |
| 145 scoped_ptr<base::CallbackList<void( | 145 std::unique_ptr< |
| 146 const base::DictionaryValue*)>::Subscription> user_settings_subscription_; | 146 base::CallbackList<void(const base::DictionaryValue*)>::Subscription> |
| 147 user_settings_subscription_; |
| 147 | 148 |
| 148 scoped_ptr<syncer::FakeSyncChangeProcessor> sync_processor_; | 149 std::unique_ptr<syncer::FakeSyncChangeProcessor> sync_processor_; |
| 149 }; | 150 }; |
| 150 | 151 |
| 151 TEST_F(SupervisedUserSettingsServiceTest, ProcessAtomicSetting) { | 152 TEST_F(SupervisedUserSettingsServiceTest, ProcessAtomicSetting) { |
| 152 StartSyncing(syncer::SyncDataList()); | 153 StartSyncing(syncer::SyncDataList()); |
| 153 ASSERT_TRUE(settings_); | 154 ASSERT_TRUE(settings_); |
| 154 const base::Value* value = nullptr; | 155 const base::Value* value = nullptr; |
| 155 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); | 156 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
| 156 | 157 |
| 157 settings_.reset(); | 158 settings_.reset(); |
| 158 syncer::SyncData data = | 159 syncer::SyncData data = |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 } | 274 } |
| 274 } | 275 } |
| 275 | 276 |
| 276 TEST_F(SupervisedUserSettingsServiceTest, SetLocalSetting) { | 277 TEST_F(SupervisedUserSettingsServiceTest, SetLocalSetting) { |
| 277 const base::Value* value = nullptr; | 278 const base::Value* value = nullptr; |
| 278 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); | 279 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
| 279 | 280 |
| 280 settings_.reset(); | 281 settings_.reset(); |
| 281 settings_service_.SetLocalSetting( | 282 settings_service_.SetLocalSetting( |
| 282 kSettingsName, | 283 kSettingsName, |
| 283 scoped_ptr<base::Value>(new base::StringValue(kSettingsValue))); | 284 std::unique_ptr<base::Value>(new base::StringValue(kSettingsValue))); |
| 284 ASSERT_TRUE(settings_); | 285 ASSERT_TRUE(settings_); |
| 285 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); | 286 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
| 286 std::string string_value; | 287 std::string string_value; |
| 287 EXPECT_TRUE(value->GetAsString(&string_value)); | 288 EXPECT_TRUE(value->GetAsString(&string_value)); |
| 288 EXPECT_EQ(kSettingsValue, string_value); | 289 EXPECT_EQ(kSettingsValue, string_value); |
| 289 } | 290 } |
| 290 | 291 |
| 291 TEST_F(SupervisedUserSettingsServiceTest, UploadItem) { | 292 TEST_F(SupervisedUserSettingsServiceTest, UploadItem) { |
| 292 UploadSplitItem("foo", "bar"); | 293 UploadSplitItem("foo", "bar"); |
| 293 UploadSplitItem("blurp", "baz"); | 294 UploadSplitItem("blurp", "baz"); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 // The uploaded items should not show up as settings. | 358 // The uploaded items should not show up as settings. |
| 358 const base::Value* value = nullptr; | 359 const base::Value* value = nullptr; |
| 359 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kAtomicItemName, &value)); | 360 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kAtomicItemName, &value)); |
| 360 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSplitItemName, &value)); | 361 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSplitItemName, &value)); |
| 361 | 362 |
| 362 // Restarting sync should not create any new changes. | 363 // Restarting sync should not create any new changes. |
| 363 settings_service_.StopSyncing(syncer::SUPERVISED_USER_SETTINGS); | 364 settings_service_.StopSyncing(syncer::SUPERVISED_USER_SETTINGS); |
| 364 StartSyncing(sync_data); | 365 StartSyncing(sync_data); |
| 365 ASSERT_EQ(0u, sync_processor_->changes().size()); | 366 ASSERT_EQ(0u, sync_processor_->changes().size()); |
| 366 } | 367 } |
| OLD | NEW |